SLAM 算法横向对比与选型指南
1. 对比总览
| 系统 | 传感器 | 方法 | 回环 | 速度 | 精度 | 代码量 | 入门难度 |
|---|---|---|---|---|---|---|---|
| A-LOAM | LiDAR | 特征法+Ceres | 无 | 快(5ms) | ★★★ | ~2000行 | ★☆☆☆☆ |
| LeGO-LOAM | LiDAR | 特征法+地面 | ICP | 快(8ms) | ★★★ | ~3000行 | ★★☆☆☆ |
| Fast-LIO | LiDAR+IMU | IESKF+ikd-Tree | 无 | 极快(3ms) | ★★★★ | ~5000行 | ★★★★☆ |
| Fast-LIO2 | LiDAR+IMU | IESKF简化 | 无 | 极快(2ms) | ★★★★ | ~4500行 | ★★★☆☆ |
| LIO-SAM | LiDAR+IMU+GPS | 因子图+iSAM2 | Scan Context | 中(50ms) | ★★★★★ | ~8000行 | ★★★☆☆ |
| FAST-LIVO2 | LiDAR+Cam+IMU | IESKF统一 | 无 | 快(8ms) | ★★★★★ | ~7000行 | ★★★★★ |
| ORB-SLAM3 | Cam+IMU | 特征法+Atlas | DBoW2 | 中(30ms) | ★★★★★ | ~30000行 | ★★★★☆ |
| VINS-Mono | Cam+IMU | 滑动窗口+Ceres | DBoW2 | 快(15ms) | ★★★★ | ~15000行 | ★★★☆☆ |
| DSO | Cam | 稀疏直接法 | 无 | 中(50ms) | ★★★★ | ~12000行 | ★★★★☆ |
| Cartographer | LiDAR(2D/3D) | Submap+BBS | BBS | 中(20ms) | ★★★★ | ~15000行 | ★★★☆☆ |
| ORB-SLAM2 | Cam(S/RGB-D) | 特征法三线程 | DBoW2 | 快(20ms) | ★★★★ | ~18000行 | ★★★☆☆ |
| SVO | Cam | 半直接法 | 无 | 极快(4ms) | ★★★ | ~8000行 | ★★★☆☆ |
| LSD-SLAM | Cam | 半稠密直接法 | Sim(3) | 慢(200ms) | ★★★ | ~10000行 | ★★★★☆ |
| RTAB-Map | 任意 | BoW内存管理 | BoW | 中(30ms) | ★★★ | ~20000行 | ★★☆☆☆ |
精度评级为相对参考:★★★★★ = 在各自领域的SOTA精度;速度评级为单帧处理时间;入门难度反映理解该系统的数学和代码所需时间。
2. 按应用场景选型
无人机高速自主飞行
推荐:Fast-LIO2 或 FAST-LIVO2
关键需求:延迟 ≤ 5ms(高速飞行中不能丢帧)、对振动鲁棒(IMU 是关键)、短期无累积漂移(飞行通常 < 10 分钟)。Fast-LIO2 的 1-3ms 延迟和 IESKF 的 IMU 前向传播是最佳匹配。如果需要视觉辅助(对纹理退化场景),FAST-LIVO2 是升级版。
不推荐:LIO-SAM(延迟高,回环优化可能卡顿几十毫秒)、ORB-SLAM3(特征法在高速运动中模糊严重)。
自动驾驶建图
推荐:LIO-SAM + GPS因子
关键需求:全局一致性(需要回环消除 >100m 的漂移)、多传感器融合(LiDAR+IMU+GPS+轮式里程计)、大场景(公里级)。LIO-SAM 的因子图框架天然支持多传感器融合——每个传感器是一个因子类型。GPS 因子消除长期漂移,Scan Context 回环修正局部扭曲。
不推荐:Fast-LIO2(无回环,公里级漂移可达几十米)、Cartographer 3D模式(精度不够,分支定界在 3D 中慢)。
室内机器人(扫地机/仓储AGV)
推荐:Cartographer(2D模式)
关键需求:成本低(2D LiDAR ~$100)、可靠性(不能丢地图)、易于部署。Cartographer 的 2D 概率栅格 + BBS 回环是经过大量工业验证的方案,ROS 一键安装。
替代方案:如果预算极低(只有相机,~$10),可选 ORB-SLAM3 RGB-D 模式 + RealSense D435;如果已有 3D LiDAR(如 Mid-70),LIO-SAM 比 Cartographer 精度更高但成本也高。
AR/VR 头显
推荐:VINS-Mono 或 ORB-SLAM3(VI模式)
关键需求:低延迟(头部运动 < 20ms 延迟会致晕)、低成本(相机 + IMU ~$20)、支持快速运动。VINS-Mono 的滑动窗口优化(15ms/帧)和在线外参标定非常适合消费级硬件。ORB-SLAM3 的 Atlas 多地图在长期 AR 体验中更鲁棒(跟踪丢失后可以恢复)。
不推荐:LiDAR SLAM(头显上装 LiDAR 太重、太贵、太耗电)。
手持3D扫描仪
推荐:LIO-SAM 或 ORB-SLAM3 RGB-D
关键需求:高密度点云(供后期处理)、全局一致性(回环修正)、慢速精细操作。LIO-SAM 的 LiDAR 直接产出稠密点云,ORB-SLAM3 RGB-D 配合 RealSense L515 可产出 RGB-D 彩色点云。
微型无人机(<50g 有效载荷)
推荐:SVO 2.0
关键需求:极低计算(MCU 级别)、极低延迟。SVO 的 3-5ms 半直接法和无描述子设计是唯一能在 STM32 级别 MCU 上运行的视觉 SLAM。精度不高但在微型无人机的短距离飞行中可以接受。
3. 按学习目标选型
想理解 LiDAR SLAM 基础 → A-LOAM
- 2000 行代码覆盖了 LiDAR SLAM 全部核心概念
- 读完后,LeGO-LOAM(工程改进)、Fast-LIO(另一种数学框架)、LIO-SAM(完整系统)都能看懂
想理解视觉 SLAM 架构 → ORB-SLAM2
- 三线程架构是标准教材
- 读完后,ORB-SLAM3 的 Atlas 和 VI-SLAM 只是"加模块"
想理解滤波框架 → Fast-LIO
- IESKF 的完整推导是最好的教材
- 读完后,FAST-LIVO2(加视觉观测)、Fast-LIO2(简化版本)一目了然
想理解因子图优化 → LIO-SAM
- GTSAM iSAM2 的实际应用
- 读完后,可以理解任何基于因子图的 SLAM 系统
想理解视觉-惯性紧耦合 → VINS-Mono
- 滑动窗口 + IMU 预积分 + 边缘化的最佳学习材料
- 代码比 ORB-SLAM3 短一半,更容易读
想理解直接法 → DSO
- 从零实现的 Gauss-Newton 优化器是宝藏
- 读完后,"为什么 DSO 比 LSD-SLAM 好"一目了然
4. SLAM 系统的演进脉络
LiDAR SLAM谱系: LOAM (2014, 原创) ├── A-LOAM (2019, Ceres简化版) │ └── LeGO-LOAM (2018, 地面+回环) │ └── LIO-SAM (2020, 因子图+IMU+GPS) │ └── Fast-LIO (2021, IESKF新框架) ├── Fast-LIO2 (2022, 简化运动学) └── FAST-LIVO (2022) → FAST-LIVO2 (2024, +视觉) 视觉SLAM谱系: PTAM (2007, 双线程) └── ORB-SLAM (2015, 三线程) ├── ORB-SLAM2 (2017, 双目/RGB-D) └── ORB-SLAM3 (2020, VI + Atlas) 直接法谱系: DTAM (2011, 稠密直接法/GPGPU) └── LSD-SLAM (2014, 半稠密/CPU实时) └── DSO (2016, 稀疏+光度标定+滑动窗口) ├── LDSO (2018, +DBoW2回环) ├── D3VO (2020, +深度学习) └── DM-VIO (2022, +IMU) 半直接法: SVO (2014) → SVO 2.0 (2017) Google工业派: Cartographer (2016, 2D/3D)5. 常见问题
Q:为什么 Feature-based 和 Direct 方法各有各的好,不能合并吗?
半直接法(SVO、FAST-LIVO2)正在做这件事。但核心矛盾是:特征法假设"描述子匹配是完美的"→ 几何约束强但丢信息(90%的像素没用上);直接法假设"光度恒定"→ 信息利用率高但容易因光照失效。两者在数学假设层面的矛盾需要工程技巧来调和(如 FAST-LIVO2 在 LiDAR 提供深度的基础上,视觉退化为直接法对齐——既不做描述子也不做光度优化,只做梯度方向的对齐)。
Q:什么时候该用滤波(IESKF),什么时候该用优化(因子图)?
经验法则:实时性要求 > 精度要求 → 滤波;全局一致性 > 实时性 → 因子图优化。滤波的 IESKF 在当前帧上做最优估计(快但"近视"),因子图优化在全部历史上做最优估计(慢但"远见")。当里程计本身就足够好(如 Fast-LIO2 在 100m 内漂移 < 0.5m),加回环比加优化更重要——这就是为什么 Fast-LIO2 + 外部回环比单用 LIO-SAM 更受欢迎。
Q:是否有一个 SLAM 系统适合所有场景?
没有。每个 SLAM 系统都是在特定传感器组合、计算预算、场景假设下的最优解。FAST-LIVO2 是当前覆盖面最广的单系统(LiDAR+Cam+IMU,室内外通用),但它的计算量和传感器成本远超单一传感器的 SLAM 系统。选择 SLAM 系统的第一步不是比较算法,而是明确:你有什么传感器?你的计算平台是什么?你的场景是结构化的(室内走廊)还是非结构化的(树林)?这三个问题的答案会自然导向最适合的系统。
6. 推荐学习路径
第1天: A-LOAM → 了解LiDAR SLAM的基本链路 第2天: LeGO-LOAM → 了解"工程化改进"是如何叠加的 第3天: ORB-SLAM2 → 了解视觉SLAM的三线程架构 第4天: Fast-LIO → 了解滤波框架的数学(IESKF) 第5天: LIO-SAM → 了解因子图优化 + 多传感器融合 第6天: VINS-Mono → 了解视觉-惯性紧耦合 第7天: DSO → 了解直接法的全貌每天消化一个系统,一周可以建立完整的 SLAM 知识框架。这个顺序是按照从具体到抽象、从简单到复杂、从 LiDAR 到视觉排列的——每个后续系统都能在之前系统的概念基础上"装上去"。
