Advertisement

【ROS2】导航相关消息

阅读量:

一、地图消息

地图相关的消息主要有两个:

1.nav_msgs/MapMetaData:地图元数据,包括地图的宽度、高度、分辨率等。

2.nav_msgs/OccupancyGrid:地图栅格数据,一般会在rviz中以图形化的方式显示。

调用rosmsg info nav_msgs/MapMetaData显示消息内容如下:

复制代码
 time map_load_time

    
 float32 resolution #地图分辨率
    
 uint32 width #地图宽度
    
 uint32 height #地图高度
    
 geometry_msgs/Pose origin #地图位姿数据
    
   geometry_msgs/Point position
    
     float64 x
    
     float64 y
    
     float64 z
    
   geometry_msgs/Quaternion orientation
    
     float64 x
    
     float64 y
    
     float64 z
    
     float64 w
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/mODiyKt7LEVHbgl5B8a2MuvkGUWn.png)

调用 rosmsg info nav_msgs/OccupancyGrid显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 #--- 地图元数据
    
 nav_msgs/MapMetaData info
    
   time map_load_time
    
   float32 resolution
    
   uint32 width
    
   uint32 height
    
   geometry_msgs/Pose origin
    
     geometry_msgs/Point position
    
       float64 x
    
       float64 y
    
       float64 z
    
     geometry_msgs/Quaternion orientation
    
       float64 x
    
       float64 y
    
       float64 z
    
       float64 w
    
 #--- 地图内容数据,数组长度 = width * height
    
 int8[] data
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/OY5wtguxDHlcoybzhmXJ9QpWS37Z.png)

二、里程计消息

里程计相关消息是:nav_msgs/Odometry,调用rosmsg info nav_msgs/Odometry 显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 string child_frame_id
    
 geometry_msgs/PoseWithCovariance pose
    
   geometry_msgs/Pose pose #里程计位姿
    
     geometry_msgs/Point position
    
       float64 x
    
       float64 y
    
       float64 z
    
     geometry_msgs/Quaternion orientation
    
       float64 x
    
       float64 y
    
       float64 z
    
       float64 w
    
   float64[36] covariance
    
 geometry_msgs/TwistWithCovariance twist
    
   geometry_msgs/Twist twist #速度
    
     geometry_msgs/Vector3 linear
    
       float64 x
    
       float64 y
    
       float64 z
    
     geometry_msgs/Vector3 angular
    
       float64 x
    
       float64 y
    
       float64 z    
    
   # 协方差矩阵
    
   float64[36] covariance
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/LqZ4zxfCpg9KYsdVk7yDO1eiTQ3X.png)

三、坐标变换

坐标变换相关消息是: tf/tfMessage,调用rosmsg info tf/tfMessage 显示消息内容如下:

复制代码
 geometry_msgs/TransformStamped[] transforms #包含了多个坐标系相对关系数据的数组

    
   std_msgs/Header header
    
     uint32 seq
    
     time stamp
    
     string frame_id
    
   string child_frame_id
    
   geometry_msgs/Transform transform
    
     geometry_msgs/Vector3 translation
    
       float64 x
    
       float64 y
    
       float64 z
    
     geometry_msgs/Quaternion rotation
    
       float64 x
    
       float64 y
    
       float64 z
    
       float64 w
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/LrsCGcVUSAOdf9X0kBz638KZhqxM.png)

四、定位

定位相关消息是:geometry_msgs/PoseArray,调用rosmsg info geometry_msgs/PoseArray显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 geometry_msgs/Pose[] poses #预估的点位姿组成的数组
    
   geometry_msgs/Point position
    
     float64 x
    
     float64 y
    
     float64 z
    
   geometry_msgs/Quaternion orientation
    
     float64 x
    
     float64 y
    
     float64 z
    
     float64 w
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/HBs2UOFtLvTXxRnkpyEGrN6189Sc.png)

五、目标点与路径规划

5.1 目标点相关消息

目标点相关消息是:move_base_msgs/MoveBaseActionGoal,调用命名

复制代码
    rosmsg info move_base_msgs/MoveBaseActionGoal
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 actionlib_msgs/GoalID goal_id
    
   time stamp
    
   string id
    
 move_base_msgs/MoveBaseGoal goal
    
   geometry_msgs/PoseStamped target_pose
    
     std_msgs/Header header
    
       uint32 seq
    
       time stamp
    
       string frame_id
    
     geometry_msgs/Pose pose #目标点位姿
    
       geometry_msgs/Point position
    
     float64 x
    
     float64 y
    
     float64 z
    
       geometry_msgs/Quaternion orientation
    
     float64 x
    
     float64 y
    
     float64 z
    
     float64 w
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/G3QiIqef61RtMupjZmHVLTDgvNca.png)

5.2 路径规划相关消息

路径规划相关消息是:nav_msgs/Path,调用

复制代码
    rosmsg info nav_msgs/Path
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 geometry_msgs/PoseStamped[] poses #由一系列点组成的数组
    
   std_msgs/Header header
    
     uint32 seq
    
     time stamp
    
     string frame_id
    
   geometry_msgs/Pose pose
    
     geometry_msgs/Point position
    
       float64 x
    
       float64 y
    
       float64 z
    
     geometry_msgs/Quaternion orientation
    
       float64 x
    
       float64 y
    
       float64 z
    
       float64 w
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/X6xN8dYcBJkl9Kv5CI2FbujiV7Qt.png)

六、激光雷达

激光雷达相关消息是:sensor_msgs/LaserScan,调用

复制代码
    rosmsg info sensor_msgs/LaserScan
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 float32 angle_min #起始扫描角度(rad)
    
 float32 angle_max #终止扫描角度(rad)
    
 float32 angle_increment #测量值之间的角距离(rad)
    
 float32 time_increment #测量间隔时间(s)
    
 float32 scan_time #扫描间隔时间(s)
    
 float32 range_min #最小有效距离值(m)
    
 float32 range_max #最大有效距离值(m)
    
 float32[] ranges #一个周期的扫描数据
    
 float32[] intensities #扫描强度数据,如果设备不支持强度数据,该数组为空
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/ovnXt8PluxIEs4DQw3HU7jLRMc1e.png)

七、相机

深度相机相关消息有:sensor_msgs/Image、sensor_msgs/CompressedImage、sensor_msgs/PointCloud2

sensor_msgs/Image 对应的一般的图像数据,sensor_msgs/CompressedImage 对应压缩后的图像数据,sensor_msgs/PointCloud2 对应的是点云数据(带有深度信息的图像数据)。

7.1 sensor_msgs/Image

调用命令:

复制代码
    rosmsg info sensor_msgs/Image
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 uint32 height #高度
    
 uint32 width  #宽度
    
 string encoding #编码格式:RGB、YUV等
    
 uint8 is_bigendian #图像大小端存储模式
    
 uint32 step #一行图像数据的字节数,作为步进参数
    
 uint8[] data #图像数据,长度等于 step * height
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/8V632YywDkBCfPGodApr5XZLMg9j.png)

7.2 sensor_msgs/CompressedImage

调用命令:

复制代码
    rosmsg info sensor_msgs/CompressedImage
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 string format #压缩编码格式(jpeg、png、bmp)
    
 uint8[] data #压缩后的数据
    
    
    
    

7.3 sensor_msgs/PointCloud2

调用命令:

复制代码
    rosmsg info sensor_msgs/PointCloud2
    

显示消息内容如下:

复制代码
 std_msgs/Header header

    
   uint32 seq
    
   time stamp
    
   string frame_id
    
 uint32 height #高度
    
 uint32 width  #宽度
    
 sensor_msgs/PointField[] fields #每个点的数据类型
    
   uint8 INT8=1
    
   uint8 UINT8=2
    
   uint8 INT16=3
    
   uint8 UINT16=4
    
   uint8 INT32=5
    
   uint8 UINT32=6
    
   uint8 FLOAT32=7
    
   uint8 FLOAT64=8
    
   string name
    
   uint32 offset
    
   uint8 datatype
    
   uint32 count
    
 bool is_bigendian #图像大小端存储模式
    
 uint32 point_step #单点的数据字节步长
    
 uint32 row_step   #一行数据的字节步长
    
 uint8[] data      #存储点云的数组,总长度为 row_step * height
    
 bool is_dense     #是否有无效点
    
    
    
    
    
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-17/XbIclRvsrxwuhmgnMO9SyKGeDCtj.png)

八、深度图像转激光数据

介绍ROS中的一个功能包:depthimage_to_laserscan,该功能包可以将深度图像信息转换成激光雷达信息,应用场景如下:

在诸多SLAM算法中,一般都需要订阅激光雷达数据用于构建地图,因为激光雷达可以感知周围环境的深度信息,而深度相机也具备感知深度信息的功能,且最初激光雷达价格比价比较昂贵,那么在传感器选型上可以选用深度相机代替激光雷达吗?

答案是可以的,不过二者发布的消息类型是完全不同的,如果想要实现传感器的置换,那么就需要将深度相机发布的三维的图形信息转换成二维的激光雷达信息,这一功能就是通过depthimage_to_laserscan来实现的。

PS.后续使用到会更新...

全部评论 (0)

还没有任何评论哟~