fuel无人机自主探索代码解读1——map_ros.cpp【地图ros接口】

一、概述

map_ros.cpp订阅深度图/雷达点云、世界坐标下传感器pose,每0.05s启动esdf地图更新,每0.05s进行全局地图和局部地图可视化。主要功能为:接受传感器数据、调用sdf_map.cpp文件内部膨胀地图及esdf地图更新接口、地图可视化等。涉及传感器时间同步及深度图预处理等。

二、主要函数及作用

1、MapROS::setMap

作用:sdf地图赋值

2、MapROS::init

作用:地图ros接口初始化
1、launch参数的读取
2、map及接口参数的初始化
3、高斯噪声设置
4、ros定时器;pub声明;sub消息近似时间同步设置

3、MapROS::visCallback

作用:可视化定时器0.05s执行一次可视化
1、当前帧点云AABB包围框膨胀后的xy范围,z为探索高度范围,且可视化截断高度内,进行占据珊格位置点云及膨胀后被占据珊格位置点云的ros发布【局部地图】
2、被探索区域的边界框:下边界栅格索引   上边界珊格索引:将可视化截断范围内的占据珊格进行ros发布;统计探索范围内的已知状态珊格体积并存入文件【全局地图】

4、MapROS::updateESDFCallback

作用:定时器0.05s执行一次esdf更新
针对膨胀后的局部点云帧包围框采用欧式距离传输方法进行esdf的计算【最接近障碍物距离,结果存储在distance_buffer_中】
两种情况:无符号esdf:占据或未知为0,空白为正     有符号esdf:障碍物边缘珊格值为0,内部珊格值为负数,空白珊格为正

5、MapROS::depthPoseCallback

时间同步步骤:回调函数会在同步消息到达时被触发,并接收同步后的消息作为参数
作用:深度图-pose做时间同步后的消息回调
1、深度图深度像素滤波处理作为ros点云,继而得到各帧融合后占据珊格map【天花板作为占据】
2、膨胀占据珊格map

6、MapROS::cloudPoseCallback

时间同步步骤:回调函数会在同步消息到达时被触发,并接收同步后的消息作为参数
作用:点云-传感器pose做时间同步后的回调
1、输入激光雷达点云,传感器与点云点之间做ray-cast,得到各帧融合后占据珊格map【天花板作为占据】
2、膨胀占据珊格map

7、MapROS::proessDepthImage

作用:
1、深度图中像素深度值滤波处理【深度有最大最小阈值限制;深度图像素上下左右需要剔除一定带宽;深度图像素进行间隔提取访问】
2、将像素深度值转换到世界坐标系下构成深度点云并进行ros发布

8、MapROS::publishMapAll

作用:
在被探索区域的边界框:下边界栅格索引 上边界珊格索引内
1、将可视化截断范围内的占据珊格进行ros发布
2、统计探索范围内的已知状态珊格体积并存入文件

9、MapROS::publishMapLocal

作用:
当前帧点云AABB包围框膨胀后的xy范围,z为探索高度范围,可视化截断高度内:进行占据珊格位置点云及膨胀后被占据珊格位置点云的ros发布

10、MapROS::publishUnknown

作用:地图范围内的当前帧局部包围框内未知状态珊格点云生成及ros发布【可视化截断范围】

11、MapROS::publishDepth

作用:世界坐标系:深度图滤波后点云ros格式数据发布

12、MapROS::publishUpdateRange

作用:当前帧点云局部包围框的立方体可视化发布

13、MapROS::publishESDF

作用:进行当前帧点云AABB包围框xy各扩展55个珊格,z取给定高度值的珊格esdf点云ros发布【esdf对应于点云强度值】

三、参考资料

1、时间同步1
2、时间同步2
3、时间同步3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值