ROS中的地图map_server

ROS中的地图

map_server包中地图存储在一对文件中,一个YAML文件,一个image文件。YAML文件描述了地图元数据,并命名了图像文件, 图像文件对占用数据进行编码。

1.1 图像文件

图像文件以对应像素的颜色描述环境中每个单元格的占用状态。 在标准配置中,更白的像素是空闲的,被占用的空间具有更黑的像素,中间颜色的像素表示未知。 接受彩色图像,但颜色值会被平均为灰度值。通过SDL_Image读入图像数据,支持的格式会有所不同,具体取决于SDL_Image在特定平台上提供的内容。 一般而言,大多数流行的图像格式得到广泛支持。 一个值得注意的例外是OS X不支持PNG。

1.2 YAML文件

用一个例子解释,map.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]范围内,我们应该如何解释这个值?首先,我们将整数x转换为一个浮点数p,转换公式具体取决于yaml中negate标志的定义。

如果negate为0,则p =(255 - x)/ 255.0。这意味着黑色(0)现在具有最高值(1.0)而白色(255)具有最低值(0.0)。

如果negate为1,则p = x / 255.0。这是图像的非标准解释。

trinary
标准解释是三元解释,即解释所有值,使输出最终成为三个值之一。

如果p> occupied_thresh,则输出值100以指示单元格已被占用。

如果p <free_thresh,则输出值0以指示单元格是空闲的。

否则,输出-1 a.k.a. 255(作为无符号字符),以指示该单元格未知。

scale
这将调整上述解释,以允许更多的输出值。

如前所述,如果p> occupied_thresh,则输出值100,如果p <free_thresh,则输出值0。

否则,输出99 *(p - free_thresh)/(occupied_thresh - free_thresh)

这将允许您输出范围为[0,100]的完整渐变值。要输出-1,只需使用png的alpha通道,其中任何透明度都将被解释为未知。

raw
此模式将为每个像素输出x,因此输出值为[0,255]。

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值