1. 课程导入

在移动机器人、自动驾驶与三维重建系统中,SLAM(Simultaneous Localization and Mapping,同步定位与建图)解决的是“我在哪里”和“周围是什么样”这两个相互耦合的问题。整个SLAM系统通常被划分为前端与后端:前端负责从传感器原始数据中估计相邻时刻的运动,后端负责全局优化与一致性维护。本课程聚焦前端,也就是里程计估计与扫描匹配这一最贴近传感器、最影响实时性的环节。

如果把SLAM比作人的行走过程,前端就像内耳前庭与视觉共同提供的“步态感”,它必须快速、连续地给出位姿增量;后端则像大脑对长期记忆的校正。前端一旦漂移过大或匹配失败,后端再强也难以挽回。因此,理解前端的输入输出、核心算法与工程约束,是进入SLAM领域的第一道门槛。

一、学习目标:从“会看”到“会算”

本课程的学习目标分为四个层次,逐层递进:

  • 概念层:理解里程计、扫描匹配、位姿变换、帧间约束、累积漂移等基本术语,能区分前端与后端的职责边界。
  • 方法层:掌握ICP、NDT、相关性匹配、特征匹配等主流扫描匹配算法的原理与适用条件。
  • 工程层:能够阅读并修改典型前端代码,配置关键参数,处理点云降采样、运动畸变、外参标定等实际问题。
  • 评估层:会用轨迹误差、匹配残差、实时性指标判断前端质量,并能定位常见失败模式。

核心判断:前端不是“越准越好”,而是在精度、鲁棒性与实时性之间取得平衡。一个能在10ms内给出可用位姿的粗糙匹配,往往比100ms才收敛的精确匹配更有工程价值。

二、核心概念:位姿、点云与匹配

前端里程计的本质,是估计相邻两帧之间的刚体变换。设第k帧机器人位姿为 T_k,第k+1帧为 T_{k+1},则里程计输出的是相对变换 T_{k+1,k}。这个变换通常由旋转矩阵 R 与平移向量 t 组成,在二维场景中可简化为 (x, y, θ) 三个自由度。

扫描匹配则是求解这个变换的手段:给定两帧点云或扫描数据,寻找使它们重合度最高的位姿。匹配质量通常用残差函数衡量,例如ICP使用点到点或点到面距离,NDT使用概率密度得分。匹配的初值、点云密度、环境几何结构都会显著影响结果。

// 典型前端里程计输出结构(伪代码)
struct OdometryResult {
  double timestamp;
  Eigen::Matrix4d T_curr_prev;  // 当前帧相对上一帧的变换
  double fitness_score;          // 匹配残差或得分
  bool converged;                // 是否收敛
  int iterations;                // 迭代次数
};

三、整体框架:前端在SLAM中的位置

下图展示了SLAM前端里程计与扫描匹配的整体数据流与模块关系。传感器数据首先经过预处理,进入扫描匹配模块估计帧间位姿,再通过局部地图维护与关键帧选择,将约束传递给后端优化。图中同时标出了前端内部的主要环节与它们之间的信号流向。

SLAM前端里程计与扫描匹配整体框架 传感器输入 激光雷达 / 深度相机 / IMU 数据预处理 降采样 / 去畸变 / 滤波 扫描匹配 ICP / NDT / 相关性匹配 帧间位姿估计 T(k+1,k) 局部地图维护 关键帧 / 子图 / 体素地图 关键帧选择 距离 / 角度 / 信息量 后端优化 位姿图 / 因子图 优化结果反馈:校正局部地图与位姿 前端核心职责: 1. 快速估计相邻帧相对位姿,保证实时性; 2. 提供可靠的帧间约束,抑制累积漂移; 3. 维护局部地图,为匹配提供参考; 4. 输出关键帧与约束,衔接后端优化。

四、课程路线图:30章如何展开

本课程共30章,按照“基础概念—核心算法—工程实践—评估与进阶”的主线组织。下表给出了各阶段的主要章节与学习重点,帮助你在学习过程中建立全局视角。

阶段 章节范围 学习重点 产出能力
基础概念 第1–6章 SLAM框架、坐标系、位姿表示、点云基础、传感器模型 能说清前端输入输出与坐标变换
核心算法 第7–16章 ICP、NDT、相关性匹配、特征匹配、图优化基础 能推导并实现基本扫描匹配
工程实践 第17–24章 点云预处理、运动畸变补偿、外参标定、实时性优化 能调试真实数据集上的前端
评估与进阶 第25–30章 轨迹评估、失败检测、多传感器融合、学习型前端 能评估并改进前端系统

五、典型场景与常见误区

以一个室内移动机器人为例:机器人搭载二维激光雷达,在走廊中匀速前进。前端需要将每帧扫描与上一帧或局部地图匹配,输出 (Δx, Δy, Δθ)。如果走廊两侧墙面平行且缺乏纵向特征,扫描匹配在前进方向上的约束会变弱,导致“沿走廊方向漂移”。这是前端最典型的退化场景之一。

常见误区一:认为匹配残差小就一定位姿准。在几何退化环境中,残差可能很小但位姿在某个方向上完全不可观。

常见误区二:忽略运动畸变。激光雷达旋转一周期间机器人已发生运动,若不补偿,匹配会引入系统性误差。

常见误区三:把前端当后端用。前端只做局部估计,不应承担全局一致性维护,否则实时性会崩溃。

学习建议:每学完一个匹配算法,都在同一段数据上跑一遍,对比轨迹与耗时。前端能力的提升,来自“算法理解 + 参数手感 + 失败复盘”的循环,而不是单纯记忆公式。