专栏系列:SLAM从零到精通 |难度:初级 |预计阅读:30分钟
前置知识:无
📝 摘要
本文提供一份完整的SLAM学习路线图,覆盖数学基础、工具库栈、多线程编程、2D激光SLAM、3D激光SLAM及视觉SLAM等全部方向。从零基础到能独立实现完整SLAM系统,包含三条差异化学习轨道、每周微观计划模板、项目里程碑和面试自测题库,帮助读者高效规划SLAM学习路径。
📖 目录
- 一、内容全景
- 二、技能依赖关系
- 三、分阶段学习路线(标准路径:12周)
- 四、三条学习轨道
- 五、周学习计划模板
- 六、项目里程碑路线
- 七、各阶段核心问题自查
- 八、推荐学习节奏
- 九、补充学习资源
- 十、学习记录模板
- 附录:快速索引
一、内容全景
SLAM学习体系可以分为四大板块:数学理论、工程工具、多线程编程三大基础能力,以及在此之上的三大SLAM方向(2D激光、3D激光、视觉),共计20个核心学习模块。
┌──────────────────────────────────────────────────────────────────────────┐ │ SLAM 学习全景图 │ ├──────────────────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ │ │ 数学基础 │ │ 工具库栈 │ │ 多线程 │ │ │ │ │ │ │ │ │ │ │ │ 概率论+贝叶斯 │ │ 28个SLAM核心库 │ │ C++11-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、深度学习库 | 全栈开发工具链 |
| 多线程 | C++11/14/17线程基础、互斥锁与RAII、条件变量、原子操作与无锁编程、ROS1多线程(Spinner/CallbackQueue)、ROS2多线程(Executor/CallbackGroup)、SLAM三线程架构实战、常见陷阱与最佳实践 | 工程化SLAM必备 |
| 2D激光SLAM | 四层架构:M1-激光扫描模型与占据栅格地图、M2-ICP/PL-ICP扫描匹配、M3-位姿图与回环检测、M4-Cartographer完整系统(Submap+BranchAndBound)、M5-多传感器融合(EKF/因子图) | 入门SLAM首选方向 |
| 3D激光SLAM | 四层架构:M1-3D点云处理与曲率特征提取、M2-SE(3)里程计与LOAM前端、M3-IMU预积分与因子图/iSAM2后端、M4-LIO完整系统(IESKF+ikd-Tree/FAST-LIO2) | 自动驾驶主流方向 |
| 视觉SLAM | 四层架构:M1-相机模型/ORB特征/对极几何、M2-特征跟踪/三角化/PnP/关键帧、M3-Schur消元BA/滑动窗口/鲁棒核、M4-ORB-SLAM3三线程/Atlas多地图/DBoW2回环 | 机器人/AR核心方向 |
二、技能依赖关系
[Python + NumPy/Matplotlib] │ [C++ 基础 (C++11/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 → M5:M5需要M4的Submap概念
- 3D系列需要深入理解李群李代数(SO3/SE3)和因子图(iSAM2)理论
- 视觉系列需要深入理解Schur消元和雅可比推导方法
- 工具库知识可在任何阶段按需查阅
- 多线程知识可在任何阶段按需查阅
三、分阶段学习路线(标准路径:12周)
Phase 0 — 前置准备(1-2周)
目标:确保编程和数学基础过关
| 天数 | 学习内容 | 实践任务 | 验收标准 |
|---|---|---|---|
| Day 1-3 | Python + NumPy/Matplotlib 复习 | 手写矩阵乘法、SVD求解、高斯分布采样画图 | 能独立写500行Python |
| Day 4-6 | C++11/14/17 基础 | 手写RAII类、模板函数、智能指针用法 | 能解释move语义 |
| Day 7-8 | 线性代数重温 | 手写高斯消元、QR分解、SVD理解 | 能推导最小二乘正规方程 |
| Day 9-10 | 概率论重温 | 手写贝叶斯更新、卡尔曼滤波一维推导 | 能写出高斯乘积公式 |
| Day 11-12 | CMake + Linux基础 | 用CMake编译一个调用Eigen的项目 | 能写CMakeLists.txt |
| Day 13-14 | SLAM全局概览 | 画出三大SLAM方向的Layer架构图 | 能说清每层职责 |
退出检查:
- 能不查资料写出 高斯消元 代码
- 能解释 协方差矩阵 的几何含义
- 能用CMake编译链接Eigen3
Phase 1 — 数学基础(2-3周)
目标:建立SLAM数学理论底座,能看懂论文公式
| 天数 | 学习内容 | 所属专题 | 实践任务 |
|---|---|---|---|
| Day 1-3 | 概率论+贝叶斯滤波基础 | 状态估计理论 | 手写EKF一维状态估计代码 |
| Day 4-7 | 李群李代数(SO3/SE3的exp/log映射) | 三维几何基础 | 手写se3的hat/vee/exp/log |
| Day 8-11 | 非线性优化(GN/LM/Dogleg) | 优化理论 | 手写GN求解曲线拟合 |
| Day 12-14 | Schur消元+稀疏代数 | 大规模优化加速 | 手写简易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 + 稀疏Cholesky)
Phase 2 — 工具库与多线程(2周)
目标:掌握SLAM开发工具链,理解C++多线程模型
| 天数 | 学习内容 | 所属专题 | 实践任务 |
|---|---|---|---|
| Day 1-2 | Eigen3 + Sophus | 数学与几何库 | 用Eigen计算SVD,Sophus做SE3插值 |
| Day 3-4 | Ceres + g2o + GTSAM | 优化后端库 | 用三个库分别求解曲线拟合 |
| Day 5-6 | PCL + OpenCV | 点云与视觉库 | PCL滤波+ICP,OpenCV提取ORB |
| Day 7-8 | ROS1/2 + 其他工具库(evo/Pangolin/nanoflann等) | 框架与工具 | 写ROS2 Node收发点云/图像 |
| Day 9-10 | C++11-14 线程基础(std::thread/mutex) | C++多线程 | 实现线程安全的环形缓冲区 |
| Day 11-12 | 条件变量+原子操作(CAS/无锁) | 线程通信 | 实现生产者-消费者队列 |
| Day 13-14 | ROS1/ROS2多线程(Spinner/Executor/CallbackGroup) | ROS多线程 | 实现SLAM三线程框架 |
里程碑2:编译运行一个ROS2节点,包含:Sensor线程(发布模拟数据)+ Tracking线程(打印pose)+ 线程安全队列
Phase 3 — 2D激光SLAM(2周)
目标:完成第一个完整SLAM方向,理解SLAM全流程
| 天数 | 学习内容 | 所属专题 | 实践任务 |
|---|---|---|---|
| Day 1 | 阅读2D SLAM架构设计 | 全局视角 | 画出2D SLAM数据流图 |
| Day 2-3 | 激光扫描模型与占据栅格地图 | M1-传感器模型 | 运行代码,改参数观察地图变化 |
| Day 4-5 | ICP/PL-ICP扫描匹配 | M2-扫描匹配 | 对比ICP/PL-ICP精度差异 |
| Day 6-8 | 位姿图优化与回环检测 | M3-后端优化 | 添加假回环,观察图优化效果 |
| Day 9-11 | Cartographer系统架构 | M4-完整系统 | 理解Submap+BranchAndBound流程 |
| Day 12-14 | 多传感器融合(EKF/因子图) | M5-数据融合 | 对比纯激光/EKF/因子图三条轨迹 |
里程碑3:能从零写出2D-SLAM四步走:地图构建 -> 扫描匹配 -> 位姿图优化 -> Submap管理
Phase 4 — 3D激光SLAM(2-3周)
目标:掌握3D LiDAR SLAM,理解IMU紧耦合
| 天数 | 学习内容 | 所属专题 | 实践任务 |
|---|---|---|---|
| Day 1 | 阅读3D SLAM架构设计 | 全局视角 | 画出3D SLAM数据流图 |
| Day 2-4 | 3D点云处理与曲率特征提取 | M1-点云特征 | 可视化edge/planar点分布 |
| Day 5-8 | SE(3)激光里程计(LOAM前端) | M2-激光里程计 | 手写SE3 exp/log,理解点到线/面残差 |
| Day 9-12 | IMU预积分与因子图后端 | M3-因子图后端 | 理解IMU预积分推导,跑通因子图优化 |
| Day 13-17 | LIO完整系统(IESKF+ikd-Tree) | M4-LIO系统 | 理解IESKF迭代更新 vs EKF差异 |
里程碑4:能推导LOAM的点到线/点到面残差雅可比,理解IMU预积分和IESKF的区别
Phase 5 — 视觉SLAM(2-3周)
目标:掌握视觉SLAM,理解BA和ORB-SLAM3
| 天数 | 学习内容 | 所属专题 | 实践任务 |
|---|---|---|---|
| Day 1 | 阅读视觉SLAM架构设计 | 全局视角 | 画出视觉SLAM三线程图 |
| Day 2-4 | 相机模型/ORB特征/对极几何 | M1-相机特征 | 去畸变+提取ORB+暴力匹配 |
| Day 5-8 | 特征跟踪/三角化/PnP/关键帧 | M2-视觉里程计 | 对极几何->三角化->PnP全流程 |
| Day 9-12 | Schur消元BA/滑动窗口/鲁棒核函数 | M3-BA后端 | 理解Schur消元加速BA的原理 |
| Day 13-17 | ORB-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. 用ROS2+C++复现一个小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-M1+M2 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 LiDAR:Phase 0(跳过C++) -> Phase 1(前4天) -> Phase 3 (1-1.5周)
只做3D LiDAR:Phase 1(李群+优化+因子图重点) -> Phase 2(ROS+Ceres) -> Phase 4 (2周)
只做视觉SLAM:Phase 1(概率+优化+BA重点) -> Phase 2(OpenCV+g2o) -> Phase 5 (2-3周)
只补数学:Phase 1 全部 2-3周,每个推导都手写一遍
只补工程:Phase 2 + 多线程编程全文 (1-2周)
五、周学习计划模板
以**标准轨道 Phase 3(2D激光SLAM)**为例,展示一周的微观计划:
┌─────────────────────────────────────────────────────────────────┐ │ Week N 学习计划模板 │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 本周目标: 掌握2D激光传感器模型与扫描匹配 │ │ │ │ ┌──────────┬──────────────────────────────────────────────┐ │ │ │ 周一 │ 上午: 阅读2D SLAM架构设计 │ │ │ │ (3h) │ 下午: 学习激光扫描模型理论 │ │ │ │ │ 晚上: 运行代码 → 观察占据栅格地图 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周二 │ 上午: 深入理解 Bresenham 光线投射算法 │ │ │ │ (3h) │ 下午: 手写 log-odds 更新,对比代码实现 │ │ │ │ │ 晚上: 修改参数,观察地图变化 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周三 │ 上午: 学习 ICP 原理 │ │ │ │ (3h) │ 下午: 推导点到线距离 + SVD求解R │ │ │ │ │ 晚上: 运行代码,可视化匹配结果 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周四 │ 上午: 学习 PL-ICP 原理,对比ICP │ │ │ │ (3h) │ 下午: 理解相关匹配法 + 多分辨率策略 │ │ │ │ │ 晚上: 写一篇笔记总结三种匹配方法 │ │ │ ├──────────┼──────────────────────────────────────────────┤ │ │ │ 周五 │ 上午: M1+M2 代码联动:模拟连续帧匹配 │ │ │ │ (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_guard?
Phase 3 2D激光SLAM
- 占据栅格地图为什么用log-odds而不用概率?
- PL-ICP比ICP快在哪?精度为什么更高?
- 位姿图中回环边的信息矩阵怎么设置?
- Cartographer的Branch-and-Bound回环检测如何做到又快又准?
- EKF融合和因子图融合的优缺点对比?
Phase 4 3D激光SLAM
- LOAM中如何区分edge点和planar点?(曲率阈值的设置依据)
- 点到线距离的雅可比为什么是1x6?
- IMU预积分为什么要在manifold上做?
- IESKF的迭代更新和EKF的根本区别?
- ikd-Tree相比标准KD-Tree的改进在哪里?
Phase 5 视觉SLAM
- 本质矩阵E为什么秩为2?自由度是多少?
- 三角化的深度不确定性怎么评估?
- BA中H矩阵的箭头形稀疏结构是怎么来的?
- ORB-SLAM3为什么用三个线程?各自处理什么?
- DBoW2的词汇树如何实现快速回环检测?
八、推荐学习节奏
| 背景 | 建议轨道 | 预估总时长 | 每天投入 |
|---|---|---|---|
| 本科生入门 | 轨道A -> 轨道B | 4-5个月 | 2-3h/天 |
| 硕士/博士新生 | 轨道B | 3-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 GitHub
- VINS-Mono/Fusion:经典的VIO系统 GitHub
- Cartographer:Google的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激光SLAM | Phase 3:传感器模型->扫描匹配->位姿图->Cartographer系统->多传感器融合 |
| 学3D激光SLAM | Phase 4:点云特征->激光里程计->因子图后端->LIO完整系统 |
| 学视觉SLAM | Phase 5:相机模型->视觉里程计->BA后端->ORB-SLAM3系统 |
| 准备面试 | Phase 6 完成后 -> “七、各阶段核心问题自查” |
| 做SLAM项目 | 选择轨道A -> M1-M6里程碑逐步推进 |
| 只想看代码 | 参考"九、补充学习资源"中的开源项目 |
最后建议:SLAM是一个工程性极强的领域,理论推导 + 代码实现 + 实际跑数据缺一不可。本系列文章的设计哲学是"每个公式都能在代码里找到对应实现",建议在学习时保持"一边读公式推导,一边对着代码看变量"的习惯。
祝学习顺利!
📊 本文总结
- 核心要点1:SLAM学习分为四大板块:数学理论(概率/李群/优化)、工程工具(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++多线程完全教程
- 下一篇:敬请期待
- 📖 返回系列目录