卡尔曼滤波器:我需要实时计算P吗?似乎它的进化只取决于它的初始状态



当我查看标准方程时,例如http://en.wikipedia.org/wiki/Kalman_filter#Details

似乎"预测(先验(估计协方差"P_(k|k-1(以及"更新(后验(估计协方差"P_(k|k(仅取决于常量参数(F,H,Q,R(和P_(k-1|k-1(的初始值。似乎不受观测/测量和估计的系统状态或它们之间的误差(x,y,e等(的影响。

问题:

1(这是否意味着一旦选择了初始值,就可以提前计算P的未来值,从而减少实时应用程序的计算负载?

2(P不应该告诉当前观察或估计中的当前信念/信任吗?如果不依赖它们,这怎么可能?

是一个很好的观察结果。 给定约束(F、H、Q 和 R 常数(,则可以独立于数据计算 P 的演变。 要回答您的具体问题:

1(是的,你可以。 但是,如果你要这样做,你应该预先计算一系列K_n,因为你不需要P。 有时,一直只使用稳态 K 是合适的(需要注意的是,启动可能需要特殊情况(。 每当你制作一个简单的移动平均滤波器时,你基本上是在制作一个固定增益的KF,你只是没有使用KF的机制选择K。

2(这是钦哲基金会的一个关键点。 钦哲基金会设计中最重要的部分是噪声建模。 您通过设置噪声项来告诉滤波器系统的性能。 人们经常谈论"调整"KF,但协方差项具有特定的含义(甚至单位(,并直接导致滤波器的性能,如您所描述的。 您可以通过测量创新序列z_n(y_n - H*x_n(的协方差来检查您是否做得很好,以查看您的S项(HPH' + R(是否正确描述了它。

为了挑战你关于 F、H、Q 和 R 是常数的假设,让我指出它们可能不是的一些原因(作者可能会谨慎地将它们写成 F_n、H_n 等来表明这一点(:

  • F 和 Q 几乎总是具有随时间缩放的项。 如果您的时间步长不是恒定的,或者您可以跳过某个步骤,则需要每次更新 F 和 Q。
  • 在 EKF 中,F 不是线性的,当您计算 f(( 的雅可比量时,F 将在每个时间步长上发生变化。 对于 H 也是如此,如果 h(( 不是线性的。
  • 您的同变 Q 项可能取决于州。 例如,如果状态包括角速度和表示为四元数的方向,则角速度中的噪声影响四元数的方式取决于四元数的当前值。
  • 您的 R 项可能会受到状态或测量值的影响。 例如.part测量可能会旋转,需要您旋转噪声。 或者噪音可能取决于温度。
  • 您可以在每次更新时输入不同的测量值(或测量值的子集(,并根据需要在 H 和 R 中添加和删除。
  • 您可能对过程有外部知识,可以改变对Q的估计(例如,您知道您的机器人已经进入沙地,因此更容易滑倒(。

所以,我在这里描述的情况似乎是时间不变的情况,所以 F、H、Q、R 是常数,因此卡尔曼增益也是常数,可以直接使用里卡蒂方程计算。

因此:1( 是2(它没有(?

PS:在 Matlab 中,这可以通过"卡尔曼"函数来完成 http://ch.mathworks.com/help/control/ref/kalman.html

最新更新