SLAM学习路线图

发布时间:2026/5/25 15:43:01

SLAM学习路线图 专栏系列SLAM从零到精通 |难度初级 |预计阅读30分钟前置知识无 摘要本文提供一份完整的SLAM学习路线图覆盖数学基础、工具库栈、多线程编程、2D激光SLAM、3D激光SLAM及视觉SLAM等全部方向。从零基础到能独立实现完整SLAM系统包含三条差异化学习轨道、每周微观计划模板、项目里程碑和面试自测题库帮助读者高效规划SLAM学习路径。 目录一、内容全景二、技能依赖关系三、分阶段学习路线标准路径12周四、三条学习轨道五、周学习计划模板六、项目里程碑路线七、各阶段核心问题自查八、推荐学习节奏九、补充学习资源十、学习记录模板附录快速索引一、内容全景SLAM学习体系可以分为四大板块数学理论、工程工具、多线程编程三大基础能力以及在此之上的三大SLAM方向2D激光、3D激光、视觉共计20个核心学习模块。┌──────────────────────────────────────────────────────────────────────────┐ │ SLAM 学习全景图 │ ├──────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 数学基础 │ │ 工具库栈 │ │ 多线程 │ │ │ │ │ │ │ │ │ │ │ │ 概率论贝叶斯 │ │ 28个SLAM核心库 │ │ C11-17线程 │ │ │ │ 李群李代数 │ │ Eigen/PCL/ │ │ 互斥锁/条件变量 │ │ │ │ 非线性优化 │ │ OpenCV/g2o/ │ │ 原子操作 │ │ │ │ Schur消元/BA │ │ Ceres/GTSAM │ │ ROS1/2多线程 │ │ │ │ 因子图/iSAM2 │ │ 完整安装API │ │ SLAM三线程架构 │ │ │ └────────┬────────┘ └────────┬────────┘ └────────┬────────┘ │ │ │ │ │ │ │ └─────────────────────┼─────────────────────┘ │ │ │ │ │ ┌────────────────────────┼────────────────────────┐ │ │ │ │ │ │ │ ┌─────▼──────┐ ┌─────▼──────┐ ┌─────▼──────┐ │ │ │ 2D激光SLAM │ │ 3D激光SLAM │ │ 视觉SLAM │ │ │ │ │ │ │ │ │ │ │ │ M1 传感器 │ │ M1 点云特征│ │ M1 相机模型 │ │ │ │ M2 扫描匹配│ │ M2 激光里程│ │ M2 视觉里程│ │ │ │ M3 位姿图 │ │ M3 因子图 │ │ M3 BA后端 │ │ │ │ M4 完整系统│ │ M4 LIO系统 │ │ M4 ORB-SLAM3│ │ │ │ M5 数据融合│ │ │ │ │ │ │ └────────────┘ └────────────┘ └─────────────┘ │ │ │ │ 总计: 20个核心学习模块 │ │ 每个模块 理论完整代码测试可视化 │ └──────────────────────────────────────────────────────────────────────────┘学习模块全景分类学习内容定位总览SLAM整体架构与模块索引理解全局视图数学基础概率论/贝叶斯滤波、李群李代数(SO3/SE3)、非线性优化(GN/LM/Dogleg)、稀疏代数/Schur消元、雅可比推导、滤波vs优化对比、因子图理论、微分几何基础、公式速查表、常见错误排查所有SLAM方向的理论底座工具库栈28个SLAM核心库Eigen3/PCL/OpenCV/g2o/Ceres/GTSAM/Sophus/DBoW3/Pangolin以及ROS/ROS2、SuiteSparse、Boost、glog/gflags、Open3D、nanoflann、Manif、TEASER、evo、Kalibr、OctoMap、MRPT、AprilTag、PlotJuggler、Rerun、Foxglove、深度学习库全栈开发工具链多线程C11/14/17线程基础、互斥锁与RAII、条件变量、原子操作与无锁编程、ROS1多线程(Spinner/CallbackQueue)、ROS2多线程(Executor/CallbackGroup)、SLAM三线程架构实战、常见陷阱与最佳实践工程化SLAM必备2D激光SLAM四层架构M1-激光扫描模型与占据栅格地图、M2-ICP/PL-ICP扫描匹配、M3-位姿图与回环检测、M4-Cartographer完整系统(SubmapBranchAndBound)、M5-多传感器融合(EKF/因子图)入门SLAM首选方向3D激光SLAM四层架构M1-3D点云处理与曲率特征提取、M2-SE(3)里程计与LOAM前端、M3-IMU预积分与因子图/iSAM2后端、M4-LIO完整系统(IESKFikd-Tree/FAST-LIO2)自动驾驶主流方向视觉SLAM四层架构M1-相机模型/ORB特征/对极几何、M2-特征跟踪/三角化/PnP/关键帧、M3-Schur消元BA/滑动窗口/鲁棒核、M4-ORB-SLAM3三线程/Atlas多地图/DBoW2回环机器人/AR核心方向二、技能依赖关系[Python NumPy/Matplotlib] │ [C 基础 (C11/14/17)] │ ┌───────────────┼───────────────┐ │ │ │ [线性代数] [概率论] [CMake/Linux] │ │ │ └───────────────┼───────────────┘ │ ┌───────────────┼───────────────┐ │ │ │ 数学理论基础 工具库栈 多线程编程 (概率/李群/ (28个核心库) (C/ROS1/ROS2) 优化/因子图) │ │ │ │ │ └───────────────┼───────────────┘ │ ┌──────────────────────────┼──────────────────────────┐ │ │ │ ┌────▼─────┐ ┌─────▼──────┐ ┌──────▼──────┐ │2D激光SLAM │ │3D激光SLAM │ │ 视觉SLAM │ │(5模块) │ │(4模块) │ │ (4模块) │ │ │ │ │ │ │ │M1→M2→M3 │ │M1→M2→M3→M4 │ │M1→M2→M3→M4 │ │ ↓ │ │ │ │ │ │ M4 │ │ │ │ │ │ ↓ │ │ │ │ │ │ M5 │ │ │ │ │ └───────────┘ └─────────────┘ └──────────────┘模块间依赖详细2D-M1 传感器模型 ──→ 2D-M2 扫描匹配 ──→ 2D-M3 位姿图 ──→ 2D-M4 完整系统 │ ▼ 2D-M5 数据融合 3D-M1 点云特征 ──→ 3D-M2 激光里程计 ──→ 3D-M3 因子图 ──→ 3D-M4 LIO系统 V-M1 相机特征 ──→ V-M2 视觉里程计 ──→ V-M3 BA后端 ──→ V-M4 ORB-SLAM3关键依赖说明每个系列的M1 → M2 → M3 → M4必须顺序学习2D系列M4 → M5M5需要M4的Submap概念3D系列需要深入理解李群李代数(SO3/SE3)和因子图(iSAM2)理论视觉系列需要深入理解Schur消元和雅可比推导方法工具库知识可在任何阶段按需查阅多线程知识可在任何阶段按需查阅三、分阶段学习路线标准路径12周Phase 0 — 前置准备1-2周目标确保编程和数学基础过关天数学习内容实践任务验收标准Day 1-3Python NumPy/Matplotlib 复习手写矩阵乘法、SVD求解、高斯分布采样画图能独立写500行PythonDay 4-6C11/14/17 基础手写RAII类、模板函数、智能指针用法能解释move语义Day 7-8线性代数重温手写高斯消元、QR分解、SVD理解能推导最小二乘正规方程Day 9-10概率论重温手写贝叶斯更新、卡尔曼滤波一维推导能写出高斯乘积公式Day 11-12CMake Linux基础用CMake编译一个调用Eigen的项目能写CMakeLists.txtDay 13-14SLAM全局概览画出三大SLAM方向的Layer架构图能说清每层职责退出检查能不查资料写出 高斯消元 代码能解释 协方差矩阵 的几何含义能用CMake编译链接Eigen3Phase 1 — 数学基础2-3周目标建立SLAM数学理论底座能看懂论文公式天数学习内容所属专题实践任务Day 1-3概率论贝叶斯滤波基础状态估计理论手写EKF一维状态估计代码Day 4-7李群李代数(SO3/SE3的exp/log映射)三维几何基础手写se3的hat/vee/exp/logDay 8-11非线性优化(GN/LM/Dogleg)优化理论手写GN求解曲线拟合Day 12-14Schur消元稀疏代数大规模优化加速手写简易Schur消元求解器Day 15-16雅可比推导(解析/自动/数值)残差线性化推导BA重投影误差雅可比Day 17-18滤波器vs优化方法对比方法选型画出EKF/BA/ISAM2架构对比表Day 19-20因子图理论(iSAM2/Bayes Tree)增量优化手写简单因子图LM优化Day 21微分几何基础公式速查理论巩固整理个人公式小抄里程碑1用Python完整实现一个3自由度2D位姿图优化GN 稀疏CholeskyPhase 2 — 工具库与多线程2周目标掌握SLAM开发工具链理解C多线程模型天数学习内容所属专题实践任务Day 1-2Eigen3 Sophus数学与几何库用Eigen计算SVDSophus做SE3插值Day 3-4Ceres g2o GTSAM优化后端库用三个库分别求解曲线拟合Day 5-6PCL OpenCV点云与视觉库PCL滤波ICPOpenCV提取ORBDay 7-8ROS1/2 其他工具库(evo/Pangolin/nanoflann等)框架与工具写ROS2 Node收发点云/图像Day 9-10C11-14 线程基础(std::thread/mutex)C多线程实现线程安全的环形缓冲区Day 11-12条件变量原子操作(CAS/无锁)线程通信实现生产者-消费者队列Day 13-14ROS1/ROS2多线程(Spinner/Executor/CallbackGroup)ROS多线程实现SLAM三线程框架里程碑2编译运行一个ROS2节点包含Sensor线程发布模拟数据 Tracking线程打印pose 线程安全队列Phase 3 — 2D激光SLAM2周目标完成第一个完整SLAM方向理解SLAM全流程天数学习内容所属专题实践任务Day 1阅读2D SLAM架构设计全局视角画出2D SLAM数据流图Day 2-3激光扫描模型与占据栅格地图M1-传感器模型运行代码改参数观察地图变化Day 4-5ICP/PL-ICP扫描匹配M2-扫描匹配对比ICP/PL-ICP精度差异Day 6-8位姿图优化与回环检测M3-后端优化添加假回环观察图优化效果Day 9-11Cartographer系统架构M4-完整系统理解SubmapBranchAndBound流程Day 12-14多传感器融合(EKF/因子图)M5-数据融合对比纯激光/EKF/因子图三条轨迹里程碑3能从零写出2D-SLAM四步走地图构建 - 扫描匹配 - 位姿图优化 - Submap管理Phase 4 — 3D激光SLAM2-3周目标掌握3D LiDAR SLAM理解IMU紧耦合天数学习内容所属专题实践任务Day 1阅读3D SLAM架构设计全局视角画出3D SLAM数据流图Day 2-43D点云处理与曲率特征提取M1-点云特征可视化edge/planar点分布Day 5-8SE(3)激光里程计(LOAM前端)M2-激光里程计手写SE3 exp/log理解点到线/面残差Day 9-12IMU预积分与因子图后端M3-因子图后端理解IMU预积分推导跑通因子图优化Day 13-17LIO完整系统(IESKFikd-Tree)M4-LIO系统理解IESKF迭代更新 vs EKF差异里程碑4能推导LOAM的点到线/点到面残差雅可比理解IMU预积分和IESKF的区别Phase 5 — 视觉SLAM2-3周目标掌握视觉SLAM理解BA和ORB-SLAM3天数学习内容所属专题实践任务Day 1阅读视觉SLAM架构设计全局视角画出视觉SLAM三线程图Day 2-4相机模型/ORB特征/对极几何M1-相机特征去畸变提取ORB暴力匹配Day 5-8特征跟踪/三角化/PnP/关键帧M2-视觉里程计对极几何-三角化-PnP全流程Day 9-12Schur消元BA/滑动窗口/鲁棒核函数M3-BA后端理解Schur消元加速BA的原理Day 13-17ORB-SLAM3完整系统M4-完整系统DBoW2词袋模型Atlas多地图里程碑5能解释 ORB-SLAM3 的初始化-跟踪-局部建图-回环修正全流程Phase 6 — 综合与项目实践2-4周目标将所学知识整合为实际项目能力周次实践内容目标Week 1在真实数据集上运行所有模块KITTI/TUM/EuRoC理解真实数据与仿真的差距Week 2使用evo评估轨迹精度(ATE/RPE)学会量化评估SLAM性能Week 3-4自选一个方向深入1. 用ROS2C复现一个小SLAM系统2. 阅读开源代码(FAST-LIO2/ORB-SLAM3源码)3. 实现一个改进算法产出可展示的项目里程碑6有一个能跑在真实数据集上、输出ATE/RPE指标的SLAM项目四、三条学习轨道并非所有人都需要走完标准12周路径。根据你的背景和目标选择一条轨道轨道A快速入门4-6周适合有ROS经验但缺SLAM理论急着上手Week 1: Phase 1(跳读) → 只学 李群李代数(SO3/SE3) 非线性优化(GN/LM) Week 2: Phase 3(重点) → 2D-M1~M4 Week 3: Phase 4(重点) → 3D-M1M2 Week 4-5: 在ROS2上跑通一个开源SLAM包(slam_toolbox/FAST-LIO2) Week 6: 补充学习工具库(遇到什么学什么)跳过因子图理论部分、视觉SLAM全部、多线程深入章节轨道B科班路线12-16周适合在读研究生/准备SLAM面试追求系统性按 Phase 0-1-2-3-4-5-6顺序执行每个Phase不跳过。额外要求数学基础部分的每章都动手推导每个模块的实践都跑通并理解在 Phase 6 读 FAST-LIO2 或 ORB-SLAM3 源码至少 3000 行轨道C专项突破按需选择适合已有SLAM基础补某方向短板只做2D LiDARPhase 0(跳过C) - Phase 1(前4天) - Phase 3 (1-1.5周)只做3D LiDARPhase 1(李群优化因子图重点) - Phase 2(ROSCeres) - Phase 4 (2周)只做视觉SLAMPhase 1(概率优化BA重点) - Phase 2(OpenCVg2o) - Phase 5 (2-3周)只补数学Phase 1 全部 2-3周每个推导都手写一遍只补工程Phase 2 多线程编程全文 (1-2周)五、周学习计划模板以**标准轨道 Phase 32D激光SLAM**为例展示一周的微观计划┌─────────────────────────────────────────────────────────────────┐ │ Week N 学习计划模板 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 本周目标: 掌握2D激光传感器模型与扫描匹配 │ │ │ │ ┌──────────┬──────────────────────────────────────────────┐ │ │ │ 周一 │ 上午: 阅读2D SLAM架构设计 │ │ │ │ (3h) │ 下午: 学习激光扫描模型理论 │ │ │ │ │ 晚上: 运行代码 → 观察占据栅格地图 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周二 │ 上午: 深入理解 Bresenham 光线投射算法 │ │ │ │ (3h) │ 下午: 手写 log-odds 更新对比代码实现 │ │ │ │ │ 晚上: 修改参数观察地图变化 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周三 │ 上午: 学习 ICP 原理 │ │ │ │ (3h) │ 下午: 推导点到线距离 SVD求解R │ │ │ │ │ 晚上: 运行代码可视化匹配结果 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周四 │ 上午: 学习 PL-ICP 原理对比ICP │ │ │ │ (3h) │ 下午: 理解相关匹配法 多分辨率策略 │ │ │ │ │ 晚上: 写一篇笔记总结三种匹配方法 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周五 │ 上午: M1M2 代码联动模拟连续帧匹配 │ │ │ │ (3h) │ 下午: 修改代码添加高斯噪声测试鲁棒性 │ │ │ │ │ 晚上: 复盘本周整理疑问 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周末 │ 休息/查漏补缺 │ │ │ │ (2h可选) │ 读相关论文: Real-Time Correlative Scan │ │ │ │ │ Matching (Olson, 2009) │ │ │ └──────────┴──────────────────────────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘六、项目里程碑路线从学习到能面试/工作建议按以下里程碑推进M0: 能写出基础数学推导 │ (高斯消元、GN优化、SO3/SE3 exp/log) │ M1: 能跑通第一个2D SLAM pipeline │ (模拟激光数据 → 占据栅格地图 → ICP匹配 → 轨迹输出) │ M2: 能跑通3D LiDAR里程计 │ (KITTI点云 → 特征提取 → 点到线/面优化 → 位姿输出) │ M3: 能跑通视觉里程计 │ (TUM图像 → ORB特征 → 对极几何 → 三角化 → 局部地图) │ M4: 理解后端优化 │ (位姿图/因子图/BA → 自己写一个优化后端) │ M5: 能读开源代码 │ (FAST-LIO2/ORB-SLAM3/VINS-Mono 源码阅读 3000行) │ M6: 能在真实数据集上运行 │ (KITTI/TUM/EuRoC 跑通用evo评估 ATE 0.1m) │ M7: 能复现/改进算法 │ (复现一篇论文的算法或对现有系统做改进) │ M8: 面试/工作级别 │ (能回答: EKF与BA的区别IMU预积分推导Schur消元原理 │ 边缘化是怎么做的回环检测如何验证)七、各阶段核心问题自查完成每个Phase后用以下问题自测Phase 1 数学基础SO(3)为什么是3维的SE(3)为什么是6维的高斯牛顿法和LM法的区别什么时候用哪个Schur消元为什么能加速BA左扰动和右扰动求雅可比有什么区别因子图的Bayes Tree是如何增量更新的Phase 2 工具库Eigen::Map是什么什么时候用Ceres的AutoDiff和AnalyticDiff各自优缺点GTSAM的iSAM2和固定滞后平滑的区别ROS2的CallbackGroup MutuallyExclusive vs Reentrant 怎么选什么时候用std::unique_lock而不是std::lock_guardPhase 3 2D激光SLAM占据栅格地图为什么用log-odds而不用概率PL-ICP比ICP快在哪精度为什么更高位姿图中回环边的信息矩阵怎么设置Cartographer的Branch-and-Bound回环检测如何做到又快又准EKF融合和因子图融合的优缺点对比Phase 4 3D激光SLAMLOAM中如何区分edge点和planar点曲率阈值的设置依据点到线距离的雅可比为什么是1x6IMU预积分为什么要在manifold上做IESKF的迭代更新和EKF的根本区别ikd-Tree相比标准KD-Tree的改进在哪里Phase 5 视觉SLAM本质矩阵E为什么秩为2自由度是多少三角化的深度不确定性怎么评估BA中H矩阵的箭头形稀疏结构是怎么来的ORB-SLAM3为什么用三个线程各自处理什么DBoW2的词汇树如何实现快速回环检测八、推荐学习节奏背景建议轨道预估总时长每天投入本科生入门轨道A - 轨道B4-5个月2-3h/天硕士/博士新生轨道B3-4个月3-4h/天在职转行轨道A 轨道C(按需)2-4个月2-3h/天周末加倍已有2年SLAM经验轨道C按需通常1-2个月按需SLAM面试冲刺Phase 1(重点) Phase 5(重点) M8自测2-3周4-6h/天九、补充学习资源学完上述内容后进一步深入时可参考编程实践复现 FAST-LIO2使用 ikd-Tree 的 LIO 系统 GitHub复现 ORB-SLAM3最完整的视觉SLAM GitHubVINS-Mono/Fusion经典的VIO系统 GitHubCartographerGoogle的2D/3D SLAM GitHub推荐书籍《视觉SLAM十四讲》高翔 — SLAM入门首选中文教材《State Estimation for Robotics》Tim Barfoot — 状态估计圣经《Probabilistic Robotics》Thrun/Burgard/Fox — SLAM理论源头《因子图在SLAM中的应用》Dellaert/Kaess — iSAM系列论文合辑关键论文按学习顺序ICP: Besl McKay (1992) — “A Method for Registration of 3-D Shapes”LOAM: Zhang Singh (2014) — “LOAM: Lidar Odometry and Mapping in Real-time”ORB-SLAM: Mur-Artal et al. (2015) — “ORB-SLAM: A Versatile and Accurate Monocular SLAM System”iSAM2: Kaess et al. (2012) — “iSAM2: Incremental Smoothing and Mapping Using the Bayes Tree”FAST-LIO2: Xu et al. (2022) — “FAST-LIO2: Fast Direct LiDAR-Inertial Odometry”VINS-Mono: Qin et al. (2018) — “VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator”十、学习记录模板建议在学每个模块时填写## 模块学习记录 - **模块**: [例如 3D-M3 因子图后端] - **日期**: 2026.05.22 - 2026.05.28 - **理论理解**: (4/5) - **代码运行**: 全部测试通过 - **关键收获**: 1. 理解了IMU预积分在manifold上的推导 2. 掌握了数值雅可比 vs 解析雅可比的差异 - **遗留问题**: 1. iSAM2的Bayes Tree增量更新还需要加深 2. 固定滞后平滑的窗口大小如何选择 - **下一步**: 学习 3D-M4 LIO系统附录快速索引我想…直接学快速了解整体架构阅读本文一、内容全景和二、技能依赖关系补数学基础Phase 1概率论/李群李代数/非线性优化/Schur消元/因子图查某个库怎么用Phase 2 工具库部分Eigen3/PCL/OpenCV/g2o/Ceres/GTSAM等28个库理解ROS多线程Phase 2 多线程部分C线程/锁/条件变量/ROS1 Spinner/ROS2 Executor学2D激光SLAMPhase 3传感器模型-扫描匹配-位姿图-Cartographer系统-多传感器融合学3D激光SLAMPhase 4点云特征-激光里程计-因子图后端-LIO完整系统学视觉SLAMPhase 5相机模型-视觉里程计-BA后端-ORB-SLAM3系统准备面试Phase 6 完成后 - “七、各阶段核心问题自查”做SLAM项目选择轨道A - M1-M6里程碑逐步推进只想看代码参考九、补充学习资源中的开源项目最后建议SLAM是一个工程性极强的领域理论推导 代码实现 实际跑数据缺一不可。本系列文章的设计哲学是每个公式都能在代码里找到对应实现建议在学习时保持一边读公式推导一边对着代码看变量的习惯。祝学习顺利 本文总结核心要点1SLAM学习分为四大板块数学理论概率/李群/优化、工程工具28个核心库、多线程编程C/ROS1/ROS2、三大应用方向2D激光/3D激光/视觉核心要点2标准12周路径为 Phase 0(前置) - Phase 1(数学) - Phase 2(工具多线程) - Phase 3(2D激光) - Phase 4(3D激光) - Phase 5(视觉) - Phase 6(项目实践)核心要点3根据背景可选择三条轨道快速入门(4-6周/轨道A)、科班路线(12-16周/轨道B)、专项突破(按需/轨道C)核心要点4每个SLAM方向遵循M1-M2-M3-M4的递进结构必须顺序学习工具库和多线程可在任何阶段按需查阅核心要点5从学习到面试的8个里程碑由浅入深最终目标是能读懂开源代码、在真实数据集上运行、能回答SLAM核心面试题️ 标签SLAM学习路线职业规划面试准备 系列导航上一篇ROS C多线程完全教程下一篇敬请期待 返回系列目录

相关新闻