这是将速度估算引入流程的有效方法吗?
如果您适当选择状态,则速度估算是“免费”的。请参见下面的信号模型推导(对于我们一直在研究的简单一维情况)。
信号模型,取2
因此,我们确实需要在信号模型上达成共识,然后才能继续前进。从您的编辑看来,位置模型看起来是:Xķ
Xķ + 1X˙ķ + 1==Xķ+ x˙ķΔ Ť + 12一个(Δ 吨)2X˙ķ+ 一个Δ 吨
如果我们的状态与以前一样:
则状态更新方程仅仅是:
Xķ+1=( 1个Δ 吨0 1)Xķ+((Δ 吨)2
Xķ= (xķX˙ķ)
其中现在我们的
一个ķ是正态分布加速度。
Xk + 1= (1 Δ 吨 0 1 )xķ+ ⎛⎝(Δ 吨)22Δ Ť⎞⎠一种ķ
一种ķ
这给出了与先前版本不同的矩阵,但是F和H矩阵应该相同。GFH
如果我实现了这一点scilab
(对不起,无法访问matlab),它看起来像:
// Signal Model
DeltaT = 0.1;
F = [1 DeltaT; 0 1];
G = [DeltaT^2/2; DeltaT];
H = [1 0];
x0 = [0;0];
sigma_a = 0.1;
Q = sigma_a^2;
R = 0.1;
N = 1000;
a = rand(1,N,"normal")*sigma_a;
x_truth(:,1) = x0;
for t=1:N,
x_truth(:,t+1) = F*x_truth(:,t) + G*a(t);
y(t) = H*x_truth(:,t) + rand(1,1,"normal")*sqrt(R);
end
然后,我可以将Kalman滤波器方程式应用于此(噪声测量)。ÿ
// Kalman Filter
p0 = 100*eye(2,2);
xx(:,1) = x0;
pp = p0;
pp_norm(1) = norm(pp);
for t=1:N,
[x1,p1,x,p] = kalm(y(t),xx(:,t),pp,F,G,H,Q,R);
xx(:,t+1) = x1;
pp = p1;
pp_norm(t+1) = norm(pp);
end
因此,我们得到了噪声测量,并对其应用了卡尔曼滤波器,并使用与应用卡尔曼滤波器相同的信号模型来生成y(有时是一个很大的假设!)。ÿÿ
然后,下面的图显示结果。
ÿXķ
图2:前几个样本的放大视图:
情节3:您在现实生活中从未获得过的东西,是真实的职位与职位的状态估计。
情节4:您在现实生活中也从未获得过的东西,即真实速度与速度的状态估计值。
图5:状态协方差矩阵的范数(在现实生活中您应该始终监视的东西!)。请注意,它很快从最初的很大的值变成很小的值,所以我只显示了前几个示例。
图6:真实位置和速度及其估计值之间的误差图。
žk + 1= xk + 1Pķ= 0P-k + 1= Qķk + 1
ķk + 1= (12 /天Ť)
这意味着卡尔曼更新过程会产生
X^k + 1= Fk + 1Xķ+ Kk + 1(zk + 1- 高k + 1Fk + 1Xķ)= (xķ+ x˙ķdŤX˙ķ) +(12 /天Ť)(xk + 1− (xķ+ x˙ķdt ))= (xk + 12 (xk + 1− xķ)/天t − x˙ķ)
(xķ− xk − 1)/天Ť