3维SLAM入门 LIO-SAM的安装与运行 ubuntu18.04+ros melodic

3维SLAM入门 LIO-SAM的安装与运行 ubuntu18.04+ros melodic

    • 1 背景介绍
      • 1.1 Cartographer
      • 1.2 LOAM
      • 1.3 LeGO-LOAM
      • 1.3 LIO-SAM
      • 1.4 LVI-SAM
    • 2 安装LIO-SAM
      • 2.1 安装依赖
      • 2.2 安装LIO-SAM
      • 2.3 下载给定数据集
    • 3 运行LIO-SLAM
      • 3.1 运行LIO-SAM:
      • 3.2 播放数据包
      • 3.3 保存pcd建图结果

参考文章:1、 SLAM学习笔记(十九)开源3D激光SLAM总结大全——Cartographer3D,LOAM,Lego-LOAM,LIO-SAM,LVI-SAM,Livox-LOAM的原理解析及区别

1 背景介绍

在自动驾驶的感知方案中,激光雷达是一个公认的精度高、探测距离远的传感器,适用于对周围环境的精确感知。激光雷达在工作时,采用激光扫描周围环境,返回点云数据。得到了周围环境的点云数据之后,需要对它进行处理。那么激光SLAM便是进行这个操作。激光SLAM是根据点云匹配来进行定位和建图。

现阶段,比较有名的三维激光SLAM算法有LOAM系和谷歌的cartographer。LOAM系包含了LOAM、LeGO-LOAM、LIO-SAM等一系列算法。先简要的介绍一下各个算法(主要是参考文章1)。

1.1 Cartographer

Cartographer是由谷歌于2016年开源的一个支持ROS的室内SLAM库,并在截至目前为止,仍然处于不断的更新维护之中。

特点:代码极为工程,多态、继承、层层封装的十分完善。提供了方便的接口,便于接入IMU、(单/多线)雷达、里程计、甚至为二维码辅助等视觉识别方式也预留了接口(Landmark)。

1.2 LOAM

LOAM为清华自动化本科毕业的Zhang Ji博士在CMU读博期间,于2014年在RSS期刊发表的关于三维激光传感器的SLAM算法。

特点:Cartographer主要解决室内问题,LOAM室内外都可以,但是没有回环检测,在具有旋转场景会有建图不准确的情况。LOAM的代码量相比Cartographer要小很多,文件结构相对简单。

1.3 LeGO-LOAM

LeGO-LOAM是TiXiao Shan发表在IROS2018的文章,文章叫:可变地形下的轻量级和地面优化的雷达里程计与建图。其是以LOAM为框架衍生出的新算法,主要在于两点提升:轻量级 和 地面优化

特点:LeGO-LOAM具有回环检测能力,缺点是依赖地面。

1.3 LIO-SAM

LIO-SAM是TixiaoShan在2020年IROS发表的Lego-LOAM续作。 它是Lego-LOAM的扩展版本,添加了IMU预积分因子和GPS因子。LOAM和LeGO-LOAM是纯依靠激光雷达点云SLAM,而LIO-SAM结合了Lidar、IMU和GPS。

1.4 LVI-SAM

LVI-SAM为Lego-LOAM和LIO-SAM作者Tixiao Shan的最新工作,发表在ICRA 2021上。其提出了一个基于图优化的多传感器融合框架,具有多个子系统: 视觉惯性子系统(VIS) 和 雷达惯性子系统 (LIS); 单目+雷达+imu融合

具有鲁棒性:任一子系统失效,不会导致整个系统挂掉。

LVI所采用的回环检测,与大多数视觉SLAM所采取的回环检测方法相同,为词袋模型。与LeGO-LOAM,LIO-LOAM等工作相比,这种方式可以在地图数据库中找到回环,而无需知道当前运动的历史轨迹。

2 安装LIO-SAM

我的环境如下:
ubuntu18.04
ros-melodic

前往TixiaoShan的github主页找到LIO-SAM项目,项目的readme.md文件已经介绍了如何安装和运行,此处我对该过程翻译一下,并加上自己碰上的坑。

2.1 安装依赖

ROS相关的依赖有三个:

sudo apt-get install -y ros-melodic-navigation
sudo apt-get install -y ros-melodic-robot-localization
sudo apt-get install -y ros-melodic-robot-state-publisher

因为LIO-SAM里面需要用到因子图优化,其采用的是因子图优化库gtsam。此处安装gtsam:

wget -O ~/Downloads/gtsam.zip https://ghproxy.com/https://github.com/borglab/gtsam/archive/4.0.2.zip
cd ~/Downloads/ && unzip gtsam.zip -d ~/Downloads/
cd ~/Downloads/gtsam-4.0.2/
mkdir build && cd build
cmake -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF ..
sudo make install -j8

作者给出的代码中,直接wget github地址来下载gtsam会很慢,这里我在gtsam的github地址前面加了代理网址https://ghproxy.com/,能够显著加速下载。

gtsam的版本为4.0.2,安装其他版本可能会导致LIO_SAM运行报错。

2.2 安装LIO-SAM

cd ~/catkin_ws/src
git clone https://ghproxy.com/https://github.com/TixiaoShan/LIO-SAM.git
cd ..
catkin_make

这里的catkin_ws是你已经创建好的工作空间。同上,为了加速下载,这里的git clone我也加了国内代理网址https://ghproxy.com/。如果编译失败,很有可能是因为gtsam没有按照上述要求安装。

此外,创建一个新的工作空间catkin_ws的步骤为:

makdir -p ~/catkin_ws/src
cd ~/catkin_ws
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

2.3 下载给定数据集

LIO-SAM的作者提供了几个数据集进行测试,这里下载其中的walk数据集。作者提供地址是google云端硬盘,其下载速度感人,我这里只有十几kb/s,而这个数据集有3.7G。可以到我这里分享的百度网盘链接下载:https://pan.baidu.com/s/1cMc0EXhbiY2HWqkKlspzDg
提取码:gz7i
百度网盘的下载速度同样感人。

下载好数据集后,保存到自己指定的地址。这里,我保存到~/catkin_ws/src/data。

3 运行LIO-SLAM

3.1 运行LIO-SAM:

roslaunch lio-sam run.launch

输入上述命令,LIO-SAM开始运行,rviz界面跳出。

这里我碰到一个问题,输入上述命令后出现报错。错误显示找不到文件libmetis.so。网上搜索后大致了解到,这个libmetis.so应该是LIO-SAM需要动态链接的一个文件。在ubuntu系统文件夹下搜索到libmetis.so存放在usr/local/lib文件夹下。猜想可能系统默认的动态链接地址为usr/lib文件夹,导致运行LIO-SAM时在usr/lib文件夹中找不到libmetis.so。

解决方法:采用如下命令将libmetis.so复制到usr/lib文件夹中:

sudo cp usr/local/lib/libmetis.so usr/lib/libmetis.so

再次启动run.launch,程序不再报错。

3.2 播放数据包

输入下面命令即可播放存放在~/catkin_ws/src/data/,名称为casual_walk.bag数据包:

rosbag play ~/catkin_ws/src/data/casual_walk.bag

开始播放数据包后,rviz即可自动显示当前动态建图画面。
3维SLAM入门 LIO-SAM的安装与运行 ubuntu18.04+ros melodic_第1张图片

3.3 保存pcd建图结果

首先,需要修改params.yaml中的参数。params.yaml在~/catkin_ws/src/LIO-SAM/config文件夹下。修改该文件中SavePCD:true 和保存地址。

然后,为了避免保存还没完成,ros就已经关闭了节点,需要设置_TIMEOUT_SIGINT的值。按如下命令打开文件:

sudo gedit /opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/nodeprocess.py

在文件中找到_TIMEOUT_SIGINT,并设置为100秒。

这样,在命令窗口中按下Ctrl+C来结束run.launch的运行时,便会自动将pcd文件保存到指定地址。

你可能感兴趣的:(ubuntu,slam,自动驾驶,传感器)