使用卡尔曼滤波器估计位置

问题描述

我尝试使用卡尔曼滤波器来估计位置。系统中的输入是速度,这也是我测量的。速度是不稳定的,系统运动就像一个余弦一般。所以方程是: xnew = Ax + Bu + w,其中:

x= [x y]'
A = [1 0; 0 1]
B= [dt 0; 0 dt]
u=[ux uy]
w noise

正如我提到的,我测量的是速度。我的问题是矩阵 C 在方程中的样子:

y=Cx + v

我是否应该在估计状态(矩阵 A)中包含速度?或者我应该改变方程式以包括加速度吗?我无法测量加速度。

解决方法

一种方法是将速度作为输入删除并将它们置于您的状态。这样,您的状态既是位置又是速度,您的过滤器将车辆的实测速度和您的位置的嘈杂估计用作观察结果。

有了这个系统,你的问题就变成了:

x = [x_e y_e vx_e vy_e]'
A = [1 0 dt 0; 0 1 0 dt; 0 0 1 0; 0 0 0 1]
w noise

x_e、y_e、vx_e 和 vy_e 是状态的估计值

B 被删除,因为 u 是 0。然后你有

y = Cx + v
with C = [1 0 0 0 ; 0 1 0 0 ; 0 0 1 0 ; 0 0 0 1]

使用 y = [x + dt*vx ; y + dt*vy ; vx ; vy] 和 x、y、vx 和 vy 是速度的测量值,x 和 y 是根据测量速度计算出的位置。

它与您在维基百科上找到的here示例非常相似