运行环境
- Linux:Ubuntu18.04
- ros:Melodic
- Ceres Solver 2.0.0(Ubuntu18.04安装Ceres)
- PCL 1.8.1(Ubuntu系统的PCL、Eigen卸载和安装)
- gtsam-4.0.0-alpha2 或者 4.0.2
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。