4. SLAM数学基础

激光SLAM的工程调试,表面上看是在调参、看轨迹、查点云,但真正决定系统是否稳定的,是背后的数学骨架。坐标系变换决定了点云如何“对齐”,旋转表示决定了姿态更新是否会出现奇异,李群李代数决定了优化时能不能正确求导,概率图模型决定了后端如何建模约束,而最小二乘则是所有这些约束最终被求解的统一出口。理解这五者之间的关系,才能在调试时判断问题出在“模型建错了”还是“求解器没收敛”。

一、坐标系变换:从雷达系到世界系

激光SLAM中至少涉及四类坐标系:雷达坐标系(Lidar)、机体/基座坐标系(Base)、里程计坐标系(Odom)和世界/地图坐标系(Map)。一次扫描点 p_L 要进入地图,需要经过外参、位姿和全局修正的链式变换:

p_M = T_MO · T_OB · T_BL · p_L
其中 T_BL 为雷达外参,T_OB 为里程计位姿,T_MO 为地图修正

工程上最常见的错误是外参方向搞反。例如把 T_BL 当成 T_LB 使用,点云会整体反向旋转,表现为“建图时墙面重影、回环后地图撕裂”。调试时应先固定一个已知标定物,单独验证外参链,再接入里程计。

二、旋转表示:四元数、旋转矩阵与欧拉角

旋转有三种常用表示:旋转矩阵 R∈SO(3) 无奇异但冗余且需正交约束;欧拉角直观但存在万向锁;四元数紧凑且插值平滑,是SLAM中最常用的姿态存储形式。它们之间的转换关系如下表:

表示维度优点缺点典型用途
旋转矩阵 R9(约束6)无奇异、可直接乘冗余、需正交化点云变换、优化内部
欧拉角3直观易读万向锁、多解人机界面、参数配置
四元数 q4(约束1)紧凑、插值平滑符号二义、需归一化位姿存储、IMU融合
旋转向量3无冗余、适合求导大角度需注意模长李代数、误差状态
调试建议:日志中打印姿态时优先输出四元数,避免欧拉角在 ±90° 附近跳变导致误判;比较两帧姿态差异时用旋转向量或角度差,而不是直接减欧拉角。

三、李群李代数:为什么优化要绕这一圈

位姿属于李群 SE(3),它不能像普通向量一样直接做加法。若直接对旋转矩阵加一个微小量,结果会脱离 SO(3) 流形,正交性被破坏。李代数的价值在于:把流形上的更新映射到切空间 se(3) 中,用普通向量 ξ 表示增量,再通过指数映射 Exp(ξ) 回到群上:

T_new = Exp(δξ) · T_old
J = ∂(Exp(ξ)·p) / ∂ξ   // 扰动模型下的雅可比

在激光SLAM中,点面残差对位姿的雅可比通常采用“左扰动”模型,这样雅可比形式统一、便于链式求导。若调试时发现优化“越迭代越差”,常见原因是雅可比符号或扰动方向写反,导致梯度上升而非下降。

激光SLAM数学链路:从点云到最小二乘求解 坐标系变换 p_M = T_MO·T_OB·T_BL·p_L 外参 / 里程计 / 地图修正 易错:外参方向反 旋转表示 R / q / 欧拉角 / 旋转向量 四元数存储,矩阵运算 易错:万向锁、未归一化 李群李代数 T ∈ SE(3),ξ ∈ se(3) T_new = Exp(δξ)·T_old 易错:扰动方向反 概率图模型 位姿节点 + 观测边 因子图 / 贝叶斯网络 易错:约束权重失衡 最小二乘统一求解 min Σ ‖ r_i(T) ‖²_Σi = min Σ ‖ z_i − h_i(T) ‖²_Σi 高斯牛顿 / LM:H Δξ = −b,T ← Exp(Δξ)·T 调试关注:残差下降、H 条件数、迭代步长 调试检查顺序 1. 外参方向验证 2. 四元数归一化 3. 雅可比符号 4. 残差与H条件数

四、概率图模型:把SLAM写成因子图

SLAM的后端本质上是一个最大后验估计问题。设位姿序列为 X,观测为 Z,则:

X* = argmax P(X|Z) ∝ argmax P(Z|X)·P(X)
   = argmin Σ ‖ r_odom ‖² + Σ ‖ r_lidar ‖² + Σ ‖ r_loop ‖²

在因子图中,位姿是变量节点,里程计、激光匹配、回环、GPS、IMU预积分都是因子。每个因子对应一个残差项和一份信息矩阵。调试时如果发现“回环后轨迹被拉飞”,往往是回环因子的信息矩阵过大,压过了里程计和激光匹配的约束。此时应检查各因子的协方差配置,而不是盲目调迭代次数。

常见误区:把概率图模型当成“画着玩的示意图”。实际上因子图的结构直接决定H矩阵的稀疏性和求解效率。漏加一个回环因子,可能让整个地图在长走廊中漂移数米;多加一个错误回环,则可能把正确轨迹拉弯。

五、案例:一次“点云重影”的排查

某履带机器人在室内建图时,墙面出现约5cm重影,回环后地图局部撕裂。排查过程如下:

  1. 单独播放雷达数据,关闭里程计,确认点云本身无重影,排除雷达硬件问题。
  2. 检查外参文件,发现 extrinsic_rot 的符号与标定报告相反,修正后重影减小但未消失。
  3. 打印四元数模长,发现部分帧模长偏离1达0.02,归一化后姿态跳变消失。
  4. 检查后端信息矩阵,回环权重被设为里程计的100倍,调整为10倍后地图撕裂消失。

这个案例说明:坐标系变换、旋转表示、概率图模型和最小二乘并不是四个独立知识点,而是一条从数据到求解的完整链路。任何一环出错,最终都会表现为“地图不对”,但根因可能完全不同。

六、复盘清单:调试时按顺序问自己

  • 外参矩阵的方向和单位是否正确?旋转部分是否正交?
  • 四元数是否归一化?欧拉角是否在奇异区附近被使用?
  • 李代数扰动是左乘还是右乘?雅可比是否与残差定义一致?
  • 因子图是否漏加约束?各因子的信息矩阵量级是否合理?
  • 最小二乘迭代中残差是否单调下降?H矩阵条件数是否过大?
把这条链路画在纸上,每次调试时按“坐标系→旋转→李代数→因子图→最小二乘”的顺序排查,比随机改参数高效得多。数学基础不是背诵公式,而是给调试提供一张可定位故障的地图。