为什么要计算ekf-slam中的jacobians

时间:2016-11-14 08:01:06

标签: robotics kalman-filter slam

我知道这是一个非常基本的问题,但我想知道为什么我们在EKF-SLAM中计算雅可比矩阵,我已经非常努力地理解这一点,好吧它不会那么难但我想知道它。我想知道是否有人可以帮助我。

1 个答案:

答案 0 :(得分:1)

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

  1. 在EKF中,我们在f()处选择x的线性近似值,然后使用常用方法FPF^T
  2. 在UKF中,我们使用协方差x建立P分布的近似值。近似值是一组称为 sigma points 的点。然后我们通过真实的f(sigma_point)传播这些状态,并测量得到的分布的方差。
  3. 您关心的是EKF(案例1)。什么是函数的良好线性逼近?如果你在曲线上放大,它开始看起来像一条直线,斜率是该点处函数的导数。如果这听起来很奇怪,请查看Taylor series。多变量等价物称为雅可比行列式。因此,我们在f()评估x的雅可比行列式,为我们提供F。现在Fx != f(x),但只要我们对x所做的更改很小(小到足以使我们的近似F不会发生变化,那就没关系了从前到后都很多。)

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