1. 地图格式
1.1 图像格式
该图像描述了相应像素的颜色中的世界的每个单元的占用状态。标准配置中,白色像素是自由的,黑色像素被占据,两者之间的像素是未知的。接受彩色图像,但颜色值平均为灰度值。
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:地图中左下像素的2-D姿态为(x,y,yaw),偏航为逆时针旋转(yaw = 0表示无旋转)。系统的许多部分目前忽略偏航。
-
occupancy_thresh:占据概率大于该阈值的像素被认为完全占用。
-
free_thresh:占有概率小于该阈值的像素被认为是完全自由的。
-
negate:白/黑自由/占用语义是否应该被反转(阈值的解释不受影响)
1.3 像素值解释
给定一个COLOR值x在[0,256]范围内的像素,我们应该如何在放入ROS消息时解释这个值?首先,我们将整数x转换为浮点数p,具体取决于yaml中negate标志的解释。
如果negate为false,则p =(255 - x)/ 255.0。这意味着黑色(0)现在具有最高值(1.0)而白色(255)具有最低值(0.0)。
如果negate为true,则p = x / 255.0。这是图像的非标准解释,这就是为什么它被称为否定,即使在数学层面上讲x不是否定的。
1.3.1 三元解释
标准解释是三元解释,即解释所有值,使输出最终成为三个值之一。
如果 p > occupied_thresh,输出值100表示单元格已被占用。
如果 p < occupied_thresh,输出值0表示单元格是空闲的。
否则,输出-1。
1.3.2 范围
这调整了上述解释,以允许比三元组更多的输出值。
如前所述,如果p> occupied_thresh,则输出值100.如果p <free_thresh,则输出值0。
否则,输出99 *(p - free_thresh)/(occupied_thresh - free_thresh)
这将允许您输出范围为[0,100]的完整渐变值。要输出-1,只需使用png的alpha通道,其中任何透明度都将被解释为未知。
1.3.3 原始值
此模式将为每个像素输出x,因此输出值为[0,255]。
2. 命令行工具
2.1 map_server
map_server是一个ROS节点,它从磁盘读取地图并通过ROS服务提供地图。map_server的当前实现将地图图像数据中的颜色值转换为三元占用值:free (0), occupied (100), and unknown (-1)。此工具的未来版本可以使用0到100之间的值来传达更精细的占用等级。
2.1.1 用法
map_server <map.yaml>
2.1.2 例子
rosrun map_server map_server mymap.yaml
注意,可以通过锁定主题(意味着它被发送一次给每个新订户)或通过服务来检索地图数据。该服务最终可能会被淘汰。
2.1.3 发布话题
map_metadata (nav_msgs/MapMetaData)
-
Receive the map metadata via this latched topic.
map (nav_msgs/OccupancyGrid)
-
Receive the map via this latched topic.
2.1.4 服务
static_map (nav_msgs/GetMap)
-
Retrieve the map via this service.
2.1.5 参数
~frame_id (string, default: "map")
要在已发布地图的标题中设置的坐标。
2.2 map_saver
map_saver将地图保存到磁盘,例如,来自SLAM地图服务。
2.2.1 用法
rosrun map_server map_saver [--occ <threshold_occupied>] [--free <threshold_free>] [-f <mapname>]
map_saver检索地图数据并将其写入map.pgm和map.yaml。使用-f选项为输出文件提供不同的基本名称。 --occ和--free选项的值介于0到100之间。
rosrun map_server map_saver --occ 40 --free 20 -f map
2.2.2 例子
rosrun map_server map_saver -f mymap
2.2.3 订阅话题
map (nav_msgs/OccupancyGrid)
-
Map will be retrieved via this latched topic.