map_server

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.

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值