使用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、路径规划及导航

没有了,不做了。

  • 5
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值