欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用16线激光雷达进行3DSLAM并获得八叉树地图(octomap)

程序员文章站 2022-07-14 21:29:48
...

实验室为自动驾驶买了个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播放结束,则不会发布点云地图,这在后面会用到。

我生成的点云地图如下:
使用16线激光雷达进行3DSLAM并获得八叉树地图(octomap)
图中,紫色的曲线是雷达运动的轨迹,点云地图实际上就是多帧点云拼接而成,类似地图软件将多张图片拼接成全景地图。

4、使用octomap_server获得八叉树地图(octomap)

参考:

https://blog.csdn.net/sru_alo/article/details/85083030

注意:

这一步必须和第三步同时运行,否则无法订阅点云地图。

我生成的octomap如下图:
使用16线激光雷达进行3DSLAM并获得八叉树地图(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]

如下图:
使用16线激光雷达进行3DSLAM并获得八叉树地图(octomap)
外面离散的点是由于玻璃透光导致的。

5、路径规划及导航

正在做。。。

相关标签: SLAM 激光雷达

上一篇: 2020-12-08

下一篇: 聊一聊 JSONP