协方差外插方程

我想读者应该已经熟悉了协方差外插(预测)。我们在一维卡尔曼滤波中已经讲过协方差外插方程(或协方差预测器方程)。本节中,我们将推导卡尔曼滤波的协方差外插方程的矩阵形式。

协方差外插方程的一般形式如下给出:

Pn+1,n=FPn,nFT+Q
其中:
Pn,n 是当前状态估计的不确定性的平方(协方差矩阵)
Pn+1,n 是下一个状态预测的不确定性的平方(协方差矩阵)
F 是在“线性动态系统建模”一节推导的状态转移矩阵
Q 是过程噪声矩阵

无过程噪声的估计协方差

假设过程噪声是0 (Q=0),那么:

Pn+1,n=FPn,nFT

上述推导是十分直观的。我已经在"必要的背景知识 II"中讲过:

COV(x)=E((xμx)(xμx)T)

向量 x 是系统状态向量。

因此:

Pn,n=E((x^n,nμxn,n)(x^n,nμxn,n)T)

根据 状态外插方程

x^n+1,n=Fx^n,n+Gu^n,n

因此:

Pn+1,n=E((x^n+1,nμxn+1,n)(x^n+1,nμxn+1,n)T)=

=E((Fx^n,n+Gu^n,nFμxn,nGu^n,n)(Fx^n,n+Gu^n,nFμxn,nGu^n,n)T)=

=E(F(x^n,nμxn,n)(F(x^n,nμxn,n))T)=

应用矩阵转置的性质:(AB)T=BTAT

=E(F(x^n,nμxn,n)(x^n,nμxn,n)TFT)=

=FE((x^n,nμxn,n)(x^n,nμxn,n)T)FT=

=FPn,nFT

构建过程噪声矩阵 Q

你已经知道系统动态模型是这样描述的:

x^n+1,n=Fx^n,n+Gu^n,n+wn

式中 wnn 时刻的过程噪声。

我们已经在“一维卡尔曼滤波”一节中讨论了过程噪声和它对卡尔曼滤波性能的影响。在一维卡尔曼滤波中,过程噪声方差记为 q.

在多维情况下,过程噪声是一个协方差矩阵,记为 Q.

我们已经见到过程噪声方差对卡尔曼滤波性能有非常大的影响。过小的 q 会造成滞后误差(见示例 7)。而如果 q 的值过高,卡尔曼滤波会完全相信测量值(见示例 8),造成估计值噪声过大。

不同状态变量对应的过程噪声可以是独立的。这种情况下,过程噪声协方差矩阵 Q 是对角阵:

Q=[q11000q22000qkk]

过程噪声也可以是相关的。比如匀速运动模型假设零加速度(a=0),但实际加速度的随机噪声 σa2 会造成速度和位置产生对应的扰动。这种情况下,过程噪声在状态变量间就是存在互相关的。

环境过程噪声有两种模型:

  • 离散噪声模型
  • 连续噪声模型

离散噪声模型

离散噪声模型假设噪声在每个采样点是不同的,但是在采样点之间是相同的(零阶保持)。

Discrete Noise

对匀速运动模型,过程噪声协方差具有下述形式:

Q=[V(x)COV(x,v)COV(v,x)V(v)]

我们以模型的随机加速度方差 σa2 来表示位置和速度的协方差。

我们用“必要的背景知识 II”一节里的期望的代数运算法则推导出每个矩阵元素的值:

V(v)=σv2=E(v2)μv2=E((aΔt)2)(μaΔt)2=Δt2(E(a2)μa2)=Δt2σa2

V(x)=σx2=E(x2)μx2=E((12aΔt2)2)(12μaΔt2)2=Δt44(E(a2)μa2)=Δt44σa2

COV(x,v)=COV(v,x)=E(xv)μxμv=E(12aΔt2aΔt)(12μaΔt2μaΔt)=Δt32(E(a2)μa2)=Δt32σa2

现在我们可以把结果填入 Q 矩阵:

Q=σa2[Δt44Δt32Δt32Δt2]

还有两种方式能快速构建 Q 矩阵。

状态转移矩阵投影法

如果动态模型不包含输入,我们可以用状态转移矩阵把加速度的方差 σa2 投影到我们的动态模型中。

我们先定义一个矩阵 Qa

Qa=[000000001]σa2

过程噪声矩阵为:

Q=FQaFT

对上述运动模型,F 矩阵为:

F=[1ΔtΔt2201Δt001]

Q=FQaFT=

=[1ΔtΔt2201Δt001][000000001][100Δt10Δt22Δt1]σa2=

=[00Δt2200Δt001][100Δt10Δt22Δt1]σa2=

=[Δt44Δt32Δt22Δt32Δt2ΔtΔt22Δt1]σa2

输入转移矩阵投影法

如果动态模型包含输入,我们可以更快捷地算出 Q 矩阵。我们可以用输入转移矩阵把加速度方差 σa2 投影到我们的动态模型里。

Q=Gσa2GT

式中 G 是控制矩阵(或输入转移矩阵)。

对上述运动模型,G 矩阵为:

G=[Δt22Δt]

Q=Gσa2GT=σa2GGT=σa2[Δt22Δt][Δt22Δt]=σa2[Δt44Δt32Δt32Δt2]

你可以用上述方法构建离散 Q 矩阵。

连续噪声模型

连续噪声模型假设噪声随时间连续改变。

Continuous Noise

为了推导连续噪声模型的过程噪声协方差矩阵 Qc,我们需要把离散过程噪声的协方差矩阵 Q 对时间进行积分。

Qc=0ΔtQdt=0Δtσa2[t44t32t32t2]dt=σa2[Δt520Δt48Δt48Δt33]

选择哪种噪声模型?

回答这个问题之前,你需要选择合适的过程噪声方差。你可以用统计和随机领域的公式去计算,或者根据经验手动选择一个合适的值(这种比较推荐)。

在雷达领域,σa2 依赖目标的特性和模型完整性。对可以机动的目标,比如飞机,σa2 应该相对高;对不能机动的目标,比如火箭,可以用较小的 σa2. 模型完整性也是选择过程噪声方差的因素之一。如果你的模型包含了环境扰动,例如空气阻力,那么过程噪声的比例会比不包含要小。(译注:目标特性和模型完整性是一回事,一句话说就是过程噪声就是模型不准确性,模型近似程度越高就越不准确,噪声方差就要选得越大,大到一定程度KF就只相信测量值了,就起不到滤波效果了。)

一旦选定了过程噪声方差的值,接下来就要选择噪声模型了。应该选离散的还是连续的?

这个问题没有明确的答案。我推荐两种模型都尝试一下,实测看看哪种模型在你的滤波器中效果最好。当 Δt 非常小时,可以选取离散噪声模型,反之则最好选用连续噪声模型。

上一章 下一章