Robotics 为什么要在ekf slam中计算雅可比矩阵

Robotics 为什么要在ekf slam中计算雅可比矩阵,robotics,kalman-filter,slam,Robotics,Kalman Filter,Slam,我知道这是一个非常基本的问题,但我想知道为什么我们要在EKF-SLAM中计算雅可比矩阵,我已经尽力去理解它,虽然不会那么难,但我想知道它。我想知道是否有人能在这方面帮助我。卡尔曼滤波器适用于线性系统。这些步骤同时更新两部分:状态x,以及误差协方差P。在线性系统中,我们通过Fx预测下一个x。事实证明,您可以计算出Fx的确切协方差为FPF^T。在非线性系统中,我们可以将x更新为f(x),但如何更新P?有两种流行的方法: 在EKF中,我们在x处选择f()的线性近似值,然后使用通常的方法FPF^T 在U

我知道这是一个非常基本的问题,但我想知道为什么我们要在EKF-SLAM中计算雅可比矩阵,我已经尽力去理解它,虽然不会那么难,但我想知道它。我想知道是否有人能在这方面帮助我。

卡尔曼滤波器适用于线性系统。这些步骤同时更新两部分:状态
x
,以及误差协方差
P
。在线性系统中,我们通过
Fx
预测下一个
x
。事实证明,您可以计算出
Fx
的确切协方差为
FPF^T
。在非线性系统中,我们可以将
x
更新为
f(x)
,但如何更新
P
?有两种流行的方法:

  • 在EKF中,我们在
    x
    处选择
    f()
    的线性近似值,然后使用通常的方法
    FPF^T
  • 在UKF中,我们用协方差
    P
    建立了
    x
    分布的近似值。近似值是一组称为sigma点的点。然后我们通过实
    f(sigma_点)
    传播这些状态,并测量结果分布的方差
  • 您关注EKF(案例1)。什么是函数的良好线性近似?如果你放大曲线,它开始看起来像一条直线,斜率是函数在该点的导数。如果这听起来很奇怪,看看。多变量等价物称为雅可比矩阵。因此,我们计算
    f()
    x
    处的雅可比矩阵,得到
    f
    。现在
    Fx!=f(x)
    ,但只要我们对
    x
    所做的更改很小(足够小,我们的近似
    f
    从之前到之后不会有太大变化),就可以了

    EKF近似的主要问题是,当我们在测量步骤后使用近似来更新分布时,它往往会使得到的协方差
    p
    太低。它的行为就像修正“工作”在一个线性的方式。实际的更新将稍微偏离线性近似值,并不是很好。这些少量的过度自信随着KF的迭代而累积,必须通过向
    Q
    添加一些虚构的过程噪声来抵消