目录

1.只有线性最小二乘才是直接解Hx=b

2.核心演变原因:SLAM 中所有优化问题都是非线性的

3.迭代求解的核心思想:局部线性化 + 增量更新

4.SLAM场景下的应用

5.总结


         对于观测方程:

z=g\left ( x \right )+n

        其中,z为传感器的实际观测值;g\left ( x \right )为观测模型,描述状态量x到观测值的映射;n为观测噪音,满足零均值高斯分布n\sim N\left ( 0,\Sigma \right )

        优化问题目标函数为:

        其中,f\left ( x \right )为残差函数,定义为f\left ( x \right )=z-g\left ( x \right ),表示观测值与模型预测值的偏差。

1.只有线性最小二乘才是直接解Hx=b

        当优化问题是线性的时候,我们确实可以一步到位解出全局最优解,形式就是Hx=b。当观测模型g\left ( x \right )线性函数时,可表示为g\left ( x \right )=Ax,此时:

  • 残差函数:f\left ( x \right )=z-Ax
  • 目标函数:F\left ( x \right )=\frac{1}{2}\left \| Ax-z \right \|_{2}^{2}
  • 对 x 求导并令导数为 0:

        整理后得到线性方程组:

        其中,为Hessian矩阵,线性场景下是常数矩阵(与 x 完全无关);为信息向量,由观测值 z 直接计算得到;x为待求解的状态量(如位姿、速度、零偏)。

        此时 H 是固定矩阵,我们可以通过 QR 分解、SVD 等方法一步求解全局最优的x。

2.核心演变原因:SLAM 中所有优化问题都是非线性

        SLAM 里没有纯线性的观测模型:

  • 激光点云配准:点到线 / 面残差是位姿的非线性函数;
  • IMU 预积分:残差是旋转、速度、零偏的高度非线性函数;
  • 回环约束:相对位姿变换也是非线性的。

(1)非线性场景下的目标函数

        对于非线性观测模型g\left ( x \right ),目标函数是:f\left ( x \right )=z-g\left ( x \right )是非线性函数,目标函数为:

        其中,f_{i}\left ( x \right )=z_{i}-g_{i}\left ( x \right )为第 i 个观测的残差,g_{i}\left ( x \right )为第 i 个观测对应的非线性观测模型的估计值。

(2)为什么不能直接构造 Hx=b?

        对非线性目标函数求导,得到的梯度为:

        其中,:第 i 个观测的雅可比矩阵,是关于 x 的函数(x 变化,也会变化)。

        上式整体是一个关于 x 的非线性方程组,无法将x单独移到一边写成x=...的形式,所以没有解析解,无法像线性场景一样一步求出 x,只能用迭代数值方法求解。

3.迭代求解的核心思想:局部线性化 + 增量更新

        我们无法一步找到全局最优的 x,但可以在当前状态估计值x_{k}附近,把非线性函数做一阶泰勒展开,近似为线性函数,然后求解一个关于增量\Delta x的线性最小二乘问题,这就是H\cdot \Delta x=b的来源。

        (这也就要求我们需要提供一个较好的线性化展开点x_{k}防止优化问题陷入局部最优解

(1)一阶泰勒展开(局部线性化)

        在当前状态x_{k}处,对非线性观测模型g\left ( x \right )做一阶泰勒近似:

        其中,x_{k}为第 k 次迭代的当前状态估计值,\Delta x为待求解的状态增量,表示对当前状态的修正量。为观测模型在x_{k}处的雅可比矩阵,此时是常数矩阵(x_{k}已知)。

(2)代入目标函数,构造关于\Delta x的线性最小二乘

        残差函数在x_{k}+\Delta x处的近似为:

        其中,为当前状态的残差向量

        将其代入目标函数,得到关于\Delta x的近似线性最小二乘问题:

        对\Delta x求导并令导数为 0,可得:

        整理后得到线性方程组:

        其中,由当前状态的雅可比计算得到,是常数矩阵,由当前状态的雅可比和残差计算得到。

(3)迭代更新与收敛

        求解得到\Delta x后,更新状态:

        重复上述「线性化→求解\Delta x→更新状态」的步骤,直到\left \| \Delta x \right \|小于设定阈值,说明状态收敛,迭代结束。

4.SLAM场景下的应用

        旋转通常使用旋转矩阵R或四元数q来表示,其属于李群SO\left ( 3 \right ),不满足加法封闭性。若两个旋转矩阵相加,得到的不再是合法的旋转矩阵(破坏正交性约束)。因此必须采用李代数增量扰动的方式:

        其中,R_{k}为当前的旋转矩阵,\phi为李代数(旋转向量)增量,对应\Delta x中的旋转部分,exp\left ( \cdot \right )代表李代数指数映射,将李代数增量转换为合法的旋转矩阵。

5.总结

        首先,只有线性最小二乘才能直接解 Hx=b,因为线性模型的海森矩阵是常数矩阵,能一步求全局最优。但 SLAM 里的观测模型都是非线性的,比如激光配准、IMU 预积分的残差都是位姿的非线性函数,没法直接构造 Hx=b。我们只能在当前状态估计值附近做一阶泰勒展开,把非线性问题转化为关于增量\Delta x的线性最小二乘问题,也就是H\Delta x=b,然后迭代更新状态直到收敛。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐