系统概述
LOAM可谓是入门slam必“食用”的算法,其整体思想就是将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图。
有关与代码部分的分析,可以参考这篇博客。复现算法前我们首先要足够了解算法里面的代码,切勿操之过急,上来就直接冲复现,毕竟我们的目的不是简单的复现一个地图就完事,还是得学习其中的思想。
环境:
ubuntu18.04、ros-melodic、pcl1.8
一、loam_velodyne安装
$ mkdir -p loam_ws/src
$ cd ~/loam_ws/src
$ git clone https://github.com/laboshinl/loam_velodyne.git
$ cd ..
$ catkin_make
$ source ~/loam_ws/devel/setup.bash
二、跑数据集
1、启动roscore
$ roscore
2、新开一个Terminal启动loam_velodyne.launch
$ source ~/loam_ws/devel/setup.bash
$ roslaunch loam_velodyne loam_velodyne.launch
3、测试数据集nsh_indoor_outdoor.bag
3.1、拿到一个数据集首先是要分析数据集的信息,刚入门容易犯的一个错就是上来就直接用网上下载数据集跑算法,结果啥也跑不出来,所谓知己知彼,方能百战百胜!
##查看该数据集的信息,方便修改launch文件
rosbag info nsh_indoor_outdoor.bag
可以看到该包的size、messages、types、topics(重点关注,要确保launch文件里的topics和这里是一样的),该数据集采用的是16线雷达,lidar value后面要改为VLP-16。
打开loam_velodyne.launch文件,查看红线部分是否和数据集一致。
3.2、如果一致就可以跑包啦。
rosbag play nsh_indoor_outdoor.bag
##或者调整一下播放速度,如果电脑性能不好,可以降低播放速度,否则建出来的图会有问题
rosbag play -r 0.5 nsh_indoor_outdoor.bag
效果如下:
4、保存最后的点云地图
##在建图后半段时间启动录制节点
rosbag record -o nsh_.bag<输出的bag文件名,自己设置> /laser_cloud_surround
##将上述bag文件转化为pcd文件
rosrun pcl_ros bag_to_pcd nsh_2021-11-22-18-13-54.bag<输出的bag文件名> /laser_cloud_surround pcd_nsh<保存pcd文件的一级文件名>
##查看最后一个pcd文件,找到最后一个文件名
pcl_viewer last_pcd.pcd
效果如下:
5.测试数据集test.bag
5.1、同上步骤,首先分析该包。
##查看该数据集的信息,方便修改launch文件
rosbag info test.bag
该数据的topics和上一个数据集一致就不需要修改了,但该数据集采用的是32线雷达,需要改一下雷达参数。
5.2、跑包步骤同上,让我们来看一下效果如何:
效果还算不错,需要数据集的可以评论私信我。
6.测试数据集kitti.bag
同上,查看数据集信息~
可以看到 kitti数据集的topics比起前两个数据集就丰富的多,但我们只需要关注pointcloud即可,将launch文件中对于地方改为/kitti/velo/pointcloud,由于kitti数据集采用的是64线雷达,所以launch文件中对应也要改为HDL-64E。
由于建图后忘了截图了,这里就不附图了~~
如果你也在启动loam_velodyne.launch后播放数据集时遇到了如下报错[multiScanRegistration-1] process has died [pid 10718, exit code -11, cmd /home/santu/rslidar_ws/devel/lib/loam_velodyne
恭喜你有救了!!
笔者在此处被坑太久了,在网上搜索了各种方法,换旧版本的pcl、ceres库等等办法,均未果。最后,还是在GitHub上一条不起眼的评论里发现了解决办法!!!
只需要找到路径src/loam_velodyne下的CMakeLists.txt,将里面第35行注释掉即可!!
注释掉后,回到目录loam_ws下打开终端重新catkin_make一下即可!现在重新启动launch以及放包就可以一路畅通了!!