在驱动机器人动起来后,可以开始考虑让机器人在实际环境中自主导航了。自主导航需要SLAM技术,本文主要利用机器人的传感器数据构建高质量的地图,主要包含以下内容:
1、ROS中的地图
2、创建地图
3、利用rosbag记录数据
4、启动地图服务器以及查看地图
1、ROS中的地图
参考链接:http://wiki.ros.org/map_server#Map_format
map_server包中地图存储在一对文件中,一个YAML文件,一个image文件。YAML文件描述了地图元数据,并命名了图像文件, 图像文件对占用数据进行编码。
1.1 图像文件
图像文件以对应像素的颜色描述环境中每个单元格的占用状态。 在标准配置中,更白的像素是空闲的,被占用的空间具有更黑的像素,中间颜色的像素表示未知。 接受彩色图像,但颜色值会被平均为灰度值。通过SDL_Image读入图像数据,支持的格式会有所不同,具体取决于SDL_Image在特定平台上提供的内容。 一般而言,大多数流行的图像格式得到广泛支持。 一个值得注意的例外是OS X不支持PNG。
1.2 YAML文件
YAML格式用一个简单,完整的例子来解释:
image: testmap.png
resolution: 0.1
origin: [0.0, 0.0, 0.0]
occupied_thresh: 0.65
free_thresh: 0.196
negate: 0
必填字段:
image:包含占用数据的图像文件的路径; 可以是绝对的,也可以是相对于YAML文件的位置
resolution:地图的分辨率,米/像素
origin:地图中左下角像素的二维姿态,为(x,y,yaw),偏航为逆时针旋转(偏航= 0表示无旋转)。 系统的许多部分目前忽略了偏航。
occupied_thresh:大于此阈值的像素被视为完全占用。
free_thresh:小于此阈值的像素被认为是完全空闲的。
negate:是否应该反转 白/黑 空闲/占用(阈值的解释不受影响)
可选参数:
mode:可以有三个值之一:trinary,scale或raw。 Trinary是默认值。
参数解释:
如果像素的COLOR值x在[0,255]