数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]

系统概述

LOAM可谓是入门slam必“食用”的算法,其整体思想就是将复杂的SLAM问题分为:1. 高频的运动估计; 2. 低频的环境建图。

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第1张图片

 有关与代码部分的分析,可以参考这篇博客。复现算法前我们首先要足够了解算法里面的代码,切勿操之过急,上来就直接冲复现,毕竟我们的目的不是简单的复现一个地图就完事,还是得学习其中的思想。


环境:

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

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第2张图片

可以看到该包的size、messages、types、topics(重点关注,要确保launch文件里的topics和这里是一样的),该数据集采用的是16线雷达,lidar value后面要改为VLP-16。

打开loam_velodyne.launch文件,查看红线部分是否和数据集一致。

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第3张图片

 3.2、如果一致就可以跑包啦。

rosbag play nsh_indoor_outdoor.bag
##或者调整一下播放速度,如果电脑性能不好,可以降低播放速度,否则建出来的图会有问题
rosbag play -r 0.5 nsh_indoor_outdoor.bag

 效果如下:

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第4张图片

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

 效果如下:

 数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第5张图片

5.测试数据集test.bag

5.1、同上步骤,首先分析该包。

##查看该数据集的信息,方便修改launch文件
rosbag info test.bag

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第6张图片

 该数据的topics和上一个数据集一致就不需要修改了,但该数据集采用的是32线雷达,需要改一下雷达参数。

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第7张图片

 5.2、跑包步骤同上,让我们来看一下效果如何:

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第8张图片

 数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第9张图片

 效果还算不错,需要数据集的可以评论私信我。

6.测试数据集kitti.bag

同上,查看数据集信息~

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第10张图片

可以看到 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

恭喜你有救了!!

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第11张图片

笔者在此处被坑太久了,在网上搜索了各种方法,换旧版本的pcl、ceres库等等办法,均未果。最后,还是在GitHub上一条不起眼的评论里发现了解决办法!!!

只需要找到路径src/loam_velodyne下的CMakeLists.txt,将里面第35行注释掉即可!!

数据集完整复现loam_velodyne,解决报错[multiScanRegistration-1]_第12张图片

 注释掉后,回到目录loam_ws下打开终端重新catkin_make一下即可!现在重新启动launch以及放包就可以一路畅通了!!

你可能感兴趣的