使用16线激光雷达进行3DSLAM并获得八叉树地图(octomap)
实验室为自动驾驶买了个80线的雷达,附赠了个16线的雷达,老师让把16线的雷达用在机器人上,激光雷达在室内能用于目标检测和SLAM,测试发现,目标检测效果烂的一批,所以找了找3DSLAM的方法,并做下记录。
本文包括以下几部分:
1、硬件、软件介绍
2、启动激光雷达并获得点云
3、使用BLAM获得点云地图
4、使用octomap_server获得八叉树地图(octomap)
5、路径规划及导航
1、硬件、软件介绍
速腾聚创rslidar16线雷达、ubuntu16.04、ros-kinetic
2、启动激光雷达并获得点云
购买激光雷达时会附赠使用说明,修改配置文件并使用如下命令启动激光雷达:
roslaunch rslidar_sdk start.launch
3、使用BLAM获得点云地图
参考:
https://www.ncnynl.com/archives/201806/2471.html
https://blog.csdn.net/xmy306538517/article/details/81122663
我先在实验室录制了/rslidar_points的bag,离线创建了点云地图/blam/blam_slam/octree_map。
只有在/rslidar_points发布消息时,BLAM才会不断发布创建的点云地图,等到录制的bag播放结束,则不会发布点云地图,这在后面会用到。
我生成的点云地图如下:
图中,紫色的曲线是雷达运动的轨迹,点云地图实际上就是多帧点云拼接而成,类似地图软件将多张图片拼接成全景地图。
4、使用octomap_server获得八叉树地图(octomap)
参考:
https://blog.csdn.net/sru_alo/article/details/85083030
注意:
这一步必须和第三步同时运行,否则无法订阅点云地图。
我生成的octomap如下图:
图中中间绿色的部分是由于,录制雷达点云时,有两个人一直跟着机器人,导致地图里多了人的轨迹,所以实际用的时候,需要遥控机器人建图,防止运动的人也被建到图里。
使用如下命令保存压缩的二进制存储格式octomap地图:
rosrun octomap_server octomap_saver name.bt
保存一个完整的概率八叉树地图:
rosrun octomap_server octomap_saver -f name.ot
保存一个二维栅格地图:
rosrun map_server map_saver map:=/projected_map -f mapname
安装八叉树可视化程序 octovis 来查看地图:
sudo apt-get install octovis
安装后重启终端,使用以下命令显示一个八叉树地图:
octovis name.ot[bt]
如下图:
外面离散的点是由于玻璃透光导致的。
5、路径规划及导航
正在做。。。
上一篇: 2020-12-08
下一篇: 聊一聊 JSONP