1. 从map开始说起
该文件目录的样式:
nav_msgs文件目录
文件夹中涉及到三类消息传递的形式:分别是action, msg和srv服务
1. action文件
# Get the map as a nav_msgs/OccupancyGrid
---
nav_msgs/OccupancyGrid map
---
# no feedback
地图在ROS中是Topic形式维护,名为/map,消息类型为nav_msgs/OccupancyGrid
这个msg文件定义了/map话题的数据结构,包含了三个主要的部分:header, info和data。header是消息的报头,保存了序号、时间戳、frame等通用信息,info是地图的配置信息,它反映了地图的属性,data是真正存储这张地图数据的部分,它是一个可变长数组,int8后面加了[],你可以理解为一个类似于vector的容器,它存储的内容有width*height个int8型的数据,也就是这张地图上每个像素。
具体内容如下:
// 标准msg的Header类型:序列 时间戳 frame_id
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
int8[] data
其中涉及到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
gmapping关键节点图
输入: /scan + /odom(same with /tf: /base和/odom之间) + /scan和/odom相对/base_frame的/tf
输出主要两部分:
- /map
- /tf : (/map 与 /odom之间的) 这样的话整个tf树就连接起来
总结: gmapping主要目的是输出地图,以及准确的机器人相对地图的位置!!!
gmapping
网友评论