激光SLAM(simultaneous localization and mapping)是同时定位与地图构建技术的简称,它利用激光雷达准确测量障碍点的角度与距离,实现无须预先布置场景的定位与建图。激光SLAM开源算法有多种,每种算法都有其独特的优缺点。以下是一些常见的激光SLAM开源算法及其优缺点概述:
一、基于滤波器的激光SLAM算法
-
EKF-SLAM(扩展卡尔曼滤波SLAM)
- 优点:使用最大似然算法进行数据关联。
- 缺点:计算量复杂,鲁棒性较差,构建的地图是特征地图而非栅格地图,无法应用于导航避障。
-
FastSLAM
- 优点:将SLAM问题分解成机器人定位问题和基于已知机器人位姿的构图问题,是最早能够实时输出栅格地图的激光SLAM方案。
- 缺点:
- 对于大尺度环境,若里程计误差较大,需要较多粒子来表示机器人位姿的后验概率分布,严重消耗内存。
- 由于重采样的随机性,随着重采样次数增多,粒子多样性散失,粒子耗散问题会严重影响地图的构建。
-
Gmapping
- 优点:以FastSLAM方案为基本原理,在较小的环境中能实现较好的建图效果,是目前使用最为广泛的2D激光SLAM方案。
- 缺点:
- 在里程计模型传播时,对所有的粒子同等对待,优的粒子在传播时可能变成差的粒子,粒子退化问题严重。
- 非常依赖于里程计信息,构建的地图也取决于里程计的精度。
-
Optimal RBPF
- 优点:在里程计模型传播时,一个粒子每次传播会得到N个粒子,在N个粒子里面选择最优粒子作为此次的真实传播,大大减少最优粒子退化为噪声很大的粒子情况。
- 缺点:信息未详细列出。
二、基于图优化的激光SLAM算法
-
Karto SLAM
- 优点:认识到了系统稀疏性,在一定程度上替代了基于滤波器的激光SLAM方案。
- 缺点:
- 采用局部子图匹配之前都要构建子图,耗费时间较长。
- 若采用全局匹配方法,则在搜索范围大的时候速度会变慢。
-
Cartographer
- 优点:
- 是谷歌开源的一个支持ROS的室内SLAM库,持续更新维护。
- 代码工程化,多态、继承、封装完善,提供了方便的接口,便于接入多种传感器。
- 支持2D和3D激光雷达的输入,实现机器人定位,并构建栅格地图。
- 缺点:
- 没有对闭环检测结果进行验证,在几何对称的环境中容易引起错误的闭环。
- 3D部分更像是2D的扩展,即用2D的思路去做3D的事情。
- 优点:
-
Hector-SLAM
- 优点:
- 利用高斯牛顿方法解决前端扫描匹配问题。
- 不需要里程计数据,里程计信息通过激光雷达数据估算出来。
- 缺点:
- 对初值敏感,难以处理闭环问题。
- 在ROS仿真环境中,若机器人速度过快尤其是在强旋转时,会发生漂移现象。
- 对传感器的测量频率要求较高。
- 优点:
三、其他激光SLAM算法
-
LOAM
- 优点:
- 张吉等人在RSS期刊上发表的关于三维激光传感器的SLAM算法。
- 提出了新颖的特征提取方式,即角点和面点。
- 融合了scan to scan(里程计部分)和map to map(建图部分)的思想。
- 缺点:
- 没有回环检测模块。
- 不能处理大规模的旋转变换。
- 计算时间复杂度较高,基于三维空间中的位姿进行优化。
- 优点:
-
Lego-LOAM
- 优点:
- 以LOAM为框架衍生出的新算法,主要在于轻量级和地面优化。
- 对LOAM进行改进,使其能在TX2上实时运行。
- 缺点:
- 依赖地面,对于无人机等难以确定地面的场景不适用。
- 优点:
-
LIO-SAM
- 优点:
- Lego-LOAM的扩展版本,添加了IMU预积分因子和GPS因子。
- 使用了关键帧进行匹配,提高了计算效率。
- 缺点:信息未给出。
- 优点:
-
hdl_graph_slam
- 优点:
- 能同时融合GPS、IMU和Lidar三种传感器。
- 代码架构简单,适合对整个SLAM架构的学习。
- 平面检测和平面约束是其特色。
- 缺点:
- 不适合有坡道的场景建图。
- 优点:
-
S-LOAM
- 优点:
- 旨在解决森林环境中的SLAM问题,提出了一种基于位姿优化的语义特征。
-
除了之前提到的Cartographer、hdl_graph_slam、LOAM、Lego-LOAM、LIO-SAM、S-LOAM等开源激光SLAM算法外,确实还存在其他多种开源的激光SLAM算法。以下是一些额外的开源激光SLAM算法及其简要介绍 :
- FAST-LIO2
- 特点:这是一种快速且紧耦合的稀疏直接激光雷达惯性里程计,它结合了激光雷达(Lidar)和惯性测量单元(IMU)的数据,实现了高精度的定位和建图。
- 优点:计算效率高,能够在资源受限的平台上实时运行。
- LVI-SAM
- 特点:LVI-SAM是一种紧耦合的激光雷达-视觉-惯性系统,它融合了激光雷达、相机和惯性测量单元的数据,提供了鲁棒且准确的定位和建图能力。
- 优点:能够在复杂环境中稳定运行,适用于多种传感器配置。
-
这些开源的激光SLAM算法各有特色,适用于不同的应用场景和需求。在选择算法时,需要根据具体的应用场景、传感器配置和计算资源等因素进行综合考虑。同时,也需要注意算法的更新和维护情况,以确保其稳定性和可靠性。
- FAST-Livo
- 特点:这是另一种结合了激光雷达、IMU和相机的紧耦合里程计,它采用了稀疏直接法来处理图像和激光雷达数据。
- 优点:能够在低计算成本下实现高精度的定位和建图。
- R3LIVE
- 特点:R3LIVE是一种鲁棒的实时激光雷达惯性视觉里程计,它结合了激光雷达、惯性测量单元和可选的视觉信息,提供了强大的定位和建图能力。
- 优点:对光照变化、动态物体和复杂场景具有鲁棒性。
- ImMesh
- 特点:ImMesh是一种基于隐式移动最小二乘(Implicit Moving Least Squares)的激光SLAM算法,它专注于构建高质量的网格地图。
- 优点:能够生成平滑且准确的网格地图,适用于需要高精度地图表示的应用场景。
- livox-loam 和 Livox-Mapping
- 特点:这两种算法都是针对Livox激光雷达设计的,提供了针对该类型激光雷达的优化定位和建图能力。
- 优点:能够充分利用Livox激光雷达的特性,实现高精度的定位和建图。
- LIO-Livox
- 特点:这是另一种针对Livox激光雷达设计的紧耦合激光雷达惯性里程计。
- 优点:结合了激光雷达和惯性测量单元的数据,提供了高精度的定位和建图能力。
- Point-LIO
- 特点:Point-LIO是一种基于点云的激光雷达惯性里程计,它利用点云数据来实现定位和建图。
- 优点:能够处理大规模的点云数据,适用于需要高精度地图的应用场景。
- PV-LIO&VoxelMap
- 特点:PV-LIO结合了体素地图和激光雷达惯性里程计,提供了高精度的定位和建图能力。
- 优点:能够构建高质量的体素地图,适用于需要精确地图表示的应用场景。
- 优点: