ROS(二)map与costmap的topic数据格式定义

map与costmap都是以nav_msgs::OccupancyGrid类型发布其topic。

nav_msgs::OccupancyGrid类型分析看帖子:http://t.zoukankan.com/flyinggod-p-13463249.html

其中整张地图的障碍物信息存放在data数据成员中,data是一个int8类型的vector向量,即一维数组。假设一张pgm的map地图,宽:width(单位像素),高:height(单位像素),分辨率为resolution(单位 meter/pixel)。

左下角像素点在世界坐标系下的位置为:(ox,oy)单位米,那么世界坐标系下一点(x,y)单位米,假设其在地图中,那么该点对应的data中的索引index为:
index = (x-ox)/resolution+(y-oy)/resolution*width
(注:index为int8类型,所以要将结果进行下类型转换),

那么该点在地图中的信息即为data[index]
即:data是按照那张地图图片的自底向上,自左至右逐个像素点存储的(行逆序、列顺序


map中data存储的格式如下:
0:空白区域
100:障碍物
-1:未知
1-99:根据像素的灰度值转换后的值,代表有障碍物的概率(不确定,猜测是这个含义,实际用的时候把这个值都当作无障碍物)

打印nav_msgs::OccupancyGrid发现,map的data中只存有0,100,-1,三种信息,没有1-99

引申:通过像素点值来判断 占用/自由

0为黑(占用),255为白(自由)

像素点占用概率 p= (255 - color_avg) / 255.0

  • 如果p > occupied_thresh(0.65),输出值为100,表示被占用

  • 如果p < free_thresh(0.196),则输出值为0,表示空闲

  • 否则,输出值为 -1,表示单元格未知


costmap中data存储格式如下:
0:空白区域
100:障碍物层
99:膨胀层
1-98:距离障碍物层的远近获得的代价值
-1:未知区域

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ROS(Robot Operating System)是一个用于机器人软件开发的框架,它提供了一种在不同模块间进行通信和数据交换的机制。ROS中的topic是一种用于消息传递的机制,可以实现节点间的发布与订阅。 三维点云数据是一种在三维空间中表示物体形状和表面特征的数据形式。在ROS中,三维点云数据可以通过PointCloud2类型的消息进行传输和存储。PointCloud2消息结构包括点云数据的类型和大小信息,以及每个点的坐标和属性信息。 PointCloud2消息中的点云数据以二进制形式存储,并使用一维数组表示。数组中的每个元素表示一个点的属性信息,例如坐标、颜色、法线等。通过定义点云的字段(Field)来描述每个元素的含义和数据类型。常用的字段类型包括FLOAT32、FLOAT64、UINT8等。 在PointCloud2消息中,点云数据的存储顺序可以是按照行优先(row-major)或列优先(column-major)方式。通过设置header中的“is_bigendian”字段可以指定数据的字节序,以确保在不同平台上的兼容性。 除了PointCloud2消息,ROS中还提供了一些用于处理三维点云数据的相关工具和库,如PCL(Point Cloud Library),它提供了一系列用于点云数据处理的算法和工具函数,可以方便地进行点云数据的滤波、配准、分割等操作。 通过使用ROStopic机制和PointCloud2消息,我们可以方便地在不同模块间传输和处理三维点云数据,实现机器人的感知和环境建模等应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值