SLAM 算法横向对比与选型指南
1. 对比总览系统传感器方法回环速度精度代码量入门难度A-LOAMLiDAR特征法Ceres无快(5ms)★★★~2000行★☆☆☆☆LeGO-LOAMLiDAR特征法地面ICP快(8ms)★★★~3000行★★☆☆☆Fast-LIOLiDARIMUIESKFikd-Tree无极快(3ms)★★★★~5000行★★★★☆Fast-LIO2LiDARIMUIESKF简化无极快(2ms)★★★★~4500行★★★☆☆LIO-SAMLiDARIMUGPS因子图iSAM2Scan Context中(50ms)★★★★★~8000行★★★☆☆FAST-LIVO2LiDARCamIMUIESKF统一无快(8ms)★★★★★~7000行★★★★★ORB-SLAM3CamIMU特征法AtlasDBoW2中(30ms)★★★★★~30000行★★★★☆VINS-MonoCamIMU滑动窗口CeresDBoW2快(15ms)★★★★~15000行★★★☆☆DSOCam稀疏直接法无中(50ms)★★★★~12000行★★★★☆CartographerLiDAR(2D/3D)SubmapBBSBBS中(20ms)★★★★~15000行★★★☆☆ORB-SLAM2Cam(S/RGB-D)特征法三线程DBoW2快(20ms)★★★★~18000行★★★☆☆SVOCam半直接法无极快(4ms)★★★~8000行★★★☆☆LSD-SLAMCam半稠密直接法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 的漂移、多传感器融合LiDARIMUGPS轮式里程计、大场景公里级。LIO-SAM 的因子图框架天然支持多传感器融合——每个传感器是一个因子类型。GPS 因子消除长期漂移Scan Context 回环修正局部扭曲。不推荐Fast-LIO2无回环公里级漂移可达几十米、Cartographer 3D模式精度不够分支定界在 3D 中慢。室内机器人扫地机/仓储AGV推荐Cartographer2D模式关键需求成本低2D LiDAR ~$100、可靠性不能丢地图、易于部署。Cartographer 的 2D 概率栅格 BBS 回环是经过大量工业验证的方案ROS 一键安装。替代方案如果预算极低只有相机~$10可选 ORB-SLAM3 RGB-D 模式 RealSense D435如果已有 3D LiDAR如 Mid-70LIO-SAM 比 Cartographer 精度更高但成本也高。AR/VR 头显推荐VINS-Mono 或 ORB-SLAM3VI模式关键需求低延迟头部运动 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-LOAM2000 行代码覆盖了 LiDAR SLAM 全部核心概念读完后LeGO-LOAM工程改进、Fast-LIO另一种数学框架、LIO-SAM完整系统都能看懂想理解视觉 SLAM 架构 → ORB-SLAM2三线程架构是标准教材读完后ORB-SLAM3 的 Atlas 和 VI-SLAM 只是加模块想理解滤波框架 → Fast-LIOIESKF 的完整推导是最好的教材读完后FAST-LIVO2加视觉观测、Fast-LIO2简化版本一目了然想理解因子图优化 → LIO-SAMGTSAM 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, 因子图IMUGPS) │ └── 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 是当前覆盖面最广的单系统LiDARCamIMU室内外通用但它的计算量和传感器成本远超单一传感器的 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 到视觉排列的——每个后续系统都能在之前系统的概念基础上装上去。