SLAM优化问题


前言

一、状态估计问题

  • 位姿表示: 把位姿 x x x 看作是服从某种概率分布的随机变量。
  • 运动方程: 受噪声影响,误差逐渐累积。
  • 观测数据: 通过观测数据减小不确定性。
  • 状态估计方式:
    • 批量式(非线性优化)
    • 增量式(滤波)

运动方程与观测方程,公式表示为:

x k = f ( x k − 1 , u k , w k ) x_k = f(x_{k-1}, u_k, w_k) xk=f(xk1,uk,wk)
z k = h ( y k , x k , v k ) z_k = h(y_k, x_k, v_k) zk=h(yk,xk,vk)
解释:

  • x k x_k xk: 当前时刻的位姿。
  • f f f: 运动方程,表示如何从前一状态 x k − 1 x_{k-1} xk1 和控制输入 u k u_k uk 及过程噪声 w k w_k wk 计算当前状态。
  • z k z_k zk: 当前观测值。
  • y k y_k yk: 路标y。
  • h h h: 观测方程,表示如何从当前状态 x k x_k xk 和观测噪声 v k v_k vk 计算观测值。

二、最大后验估计

问题描述:直接求后验概率分布是困难的,转而求一个状态最优估计,使得该状态下后验概率最大化。

公式表示为:

x ∗ = arg ⁡ max ⁡ x , y P ( x , y ∣ z , u ) x^* = \arg\max_{x,y} P(x,y | z,u) x=argx,ymaxP(x,yz,u)

该公式表示在给定观测数据 z z z 和控制输入 u u u 的情况下,求解最可能的状态 x x x 和标志 y y y
似然与先验公式表示为:

P ( z ∣ u , x , y ) ∝ P ( x , y ) P ( z ∣ u , x , y ) P(z | u, x, y) \propto P(x,y) P(z | u, x, y) P(zu,x,y)P(x,y)P(zu,x,y)
观测的似然性 P ( z ∣ u , x , y ) P(z | u, x, y) P(zu,x,y) 与状态的先验分布 P ( x , y ) P(x,y) P(x,y) 的乘积成比例。

三、最小二乘问题

  • 假设高斯分布,某一次观测:

    • 对联合分布进行因式分解:

    P ( z ∣ u , x , y ) = P ( u ) ⋅ P ( x ∣ x k − 1 ) ⋅ P ( z ∣ x , y ) P(z | u, x, y) = P(u) \cdot P(x | x_{k-1}) \cdot P(z | x, y) P(zu,x,y)=P(u)P(xxk1)P(zx,y)

解释: 这里的公式表示在某次观测中,观测值 z z z 的概率分布可以通过输入 u u u、状态 x x x 和标志 y y y 的联合分布进行分解。观测模型,公式表示为:

P ( z ∣ x , y ) = N ( h ( y , x ) , Q ) P(z | x, y) = N(h(y, x), Q) P(zx,y)=N(h(y,x),Q)

  • P ( z ∣ x , y ) P(z | x, y) P(zx,y) 表示在给定状态 x x x 和标志 y y y 的情况下,观测 z z z 的概率分布是高斯分布,其中均值是 h ( y , x ) h(y, x) h(y,x),协方差矩阵是 Q Q Q。高斯分布,任意高斯分布可以表示为:
    x ∼ N ( μ , Σ ) x \sim N(\mu, \Sigma) xN(μ,Σ)
    这里 x x x 是一个高斯分布的随机变量,其均值为 μ \mu μ,协方差矩阵为 Σ \Sigma Σ。 目标函数,定义输入、观测数据与模型之间的误差:

e k = x k − f ( x k − 1 , u k ) e_k = x_k - f(x_{k-1}, u_k) ek=xkf(xk1,uk)
e z = z k − h ( y k , x k ) e_z = z_k - h(y_k, x_k) ez=zkh(yk,xk)
目标函数表示为:

J = ∑ i e k T R − 1 e k + ∑ j e j T Q − 1 e j J = \sum_i e_k^T R^{-1} e_k + \sum_j e_j^T Q^{-1} e_j J=iekTR1ek+jejTQ1ej

  • e k e_k ek 表示当前状态的误差, e z e_z ez 表示观测的误差。目标函数 J J J 是加权误差的和,旨在最小化这些误差。

四、卡尔曼滤波(KF)

  • 假设系统为线性高斯系统

  • 令:

    x k = A k x k − 1 + B k u k + w k x_k = A_k x_{k-1} + B_k u_k + w_k xk=Akxk1+Bkuk+wk
    z k = C k x k + v k z_k = C_k x_k + v_k zk=Ckxk+vk

  • A k A_k Ak, B k B_k Bk, C k C_k Ck 分别是状态转移矩阵、控制输入矩阵和观测矩阵。

  • w k w_k wk v k v_k vk 分别是过程噪声和观测噪声,通常假设它们是高斯分布。
    预测(先验概率分布),公式表示为:
    x ^ k = A k x ^ k − 1 + B k u k \hat{x}_k = A_k \hat{x}_{k-1} + B_k u_k x^k=Akx^k1+Bkuk
    P k = A k P k − 1 A k T + R P_k = A_k P_{k-1} A_k^T + R Pk=AkPk1AkT+R

  • x ^ k \hat{x}_k x^k 是对当前状态的预测, P k P_k Pk 是预测的协方差矩阵。

更新(后验概率分布),公式表示为:

K k = P k C k T ( C k P k C k T + Q ) − 1 K_k = P_k C_k^T (C_k P_k C_k^T + Q)^{-1} Kk=PkCkT(CkPkCkT+Q)1
x ^ k = x ^ k + K k ( z k − C k x ^ k ) \hat{x}_k = \hat{x}_k + K_k(z_k - C_k \hat{x}_k) x^k=x^k+Kk(zkCkx^k)
K k K_k Kk 是卡尔曼增益,用于计算更新后的状态估计。

五、扩展卡尔曼滤波 (EKF)

  • :

    • 对于非线性系统,通过一阶泰勒展开:

    x k = f ( x k − 1 , u k , w k ) z k = h ( y k , x k , v k ) x_k = f(x_{k-1}, u_k, w_k) \\ z_k = h(y_k, x_k, v_k) xk=f(xk1,uk,wk)zk=h(yk,xk,vk)

  • x k x_k xk 表示当前时刻的状态, u k u_k uk 是控制输入, w k w_k wk 是过程噪声。 z k z_k zk 是观测值, v k v_k vk 是观测噪声。

  • 更新(后验概率分布):

    x ^ k ≈ x ^ k − 1 + ∂ f ∂ x ∣ x ^ k − 1 ( x k − 1 − x ^ k − 1 ) + w k \hat{x}_k \approx \hat{x}_{k-1} + \frac{\partial f}{\partial x} \bigg|_{\hat{x}_{k-1}} (x_{k-1} - \hat{x}_{k-1}) + w_k x^kx^k1+xf x^k1(xk1x^k1)+wk

    z k ≈ h ( x ^ k ) + v k z_k \approx h(\hat{x}_k) + v_k zkh(x^k)+vk

  • EKF 通过对非线性系统进行线性化处理,使得在离工作点较远时,可能导致线性化程度不够的问题。

六、迭代扩展卡尔曼滤波 (EKF)

  • k k k 时刻推导到 k + 1 k+1 k+1 的过程中进行多次迭代,减小非线性的影响(误差)。公式表示为:

x k = f ( x k − 1 , u k , w k ) z k = h ( y k , x k , v k ) x_k = f(x_{k-1}, u_k, w_k) \\ z_k = h(y_k, x_k, v_k) xk=f(xk1,uk,wk)zk=h(yk,xk,vk)

  • iEKF 通过多次迭代更新来减小非线性带来的误差。

  • 与 EKF 相同的线性化:

    • 步骤 1: 进行初步估计。
    • 步骤 2: 计算处的雅可比矩阵和增益矩阵,重复至满足收敛条件。
    • 步骤 3: 更新状态 x x x 和协方差 P P P

更新公式表示为:

x ^ k ∣ 1 = x ^ k + K ( z k − h ( x ^ k ) ) \hat{x}_{k|1} = \hat{x}_{k} + K (z_k - h(\hat{x}_{k})) x^k∣1=x^k+K(zkh(x^k))

P k ∣ 1 = ( I − K H ) P k P_{k|1} = (I - K H) P_k Pk∣1=(IKH)Pk

  • K K K 是卡尔曼增益, H H H 是雅可比矩阵, I I I 是单位矩阵。

  • 减小非线性影响:

    • 与高斯-牛顿法等价,通过迭代优化来提高估计精度。

总结

扩展卡尔曼滤波 (EKF) 和迭代扩展卡尔曼滤波 (iEKF) 是处理非线性系统的重要工具。EKF 通过一阶泰勒展开线性化系统,而 iEKF 通过多次迭代来进一步减小非线性影响。这些方法在许多应用中,如SLAM(同步定位与地图构建)和机器人导航等领域,具有重要的理论和实践价值。

七、简明ESKF推导

此处参考链接:知乎
更新中…

猜你喜欢

转载自blog.csdn.net/weixin_41331879/article/details/143190762