考虑在状态空间描述的线性系统:
{yk+1=Akyk+Bkuk+Γkξkwk=Ckyk+Dkuk+ηk(1)
式中 Ak,Bk,Γk,Ck,Dk 分别是 n×n,n×m,n×p,q×n,q×m 阶常值矩阵(已知),且有 1⩽m,p,q⩽n,{uk} 是 m 维向量序列(称为确定性输入序列)(已知),{ξk} 和 {ηk} 分别是已知均值、方差和协方差等统计信息的系统和观测噪声序列(未知)。因为同时有确定性输入 {uk} 和噪声序列 {ξk} 及 {ηk},该系统被称为线性确定性/随机系统。该系统能够分解成一个线性确定性系统:
{zk+1=Akzk+Bkuksk=Ckzk+Dkuk(2)
与一个线性(完全)随机系统的和。
{xk+1=Akxk+Γkξkvk=Ckxk+ηk(3)
式中 wk=sk+vk,yk=zk+xk。这样分解的好处是线性确定性系统的解 zk 能够由转换方程给出:
zk=(Ak−1⋯A0)z0+i=1∑k(Ak−1⋯Ai−1)Bi−1ui−1(4)
而通过求解式 (3) 描述的随机状态空间的 xk 的最优估计 x^k,从而
y^k=zk+x^k(5)
为原始线性系统的状态向量 yk 的最优估计。当然,估计必须依赖于噪声序列的统计信息。在本章中,只考虑零均值高斯白噪声过程。
假设:令 {ξk} 和 {ηk} 是零均值高斯白噪声序列。那么对于所有 k 和 l,Var(ξk)=Qk 和 Var(ηk)=Rk 是正定矩阵,且 E(ξkηlT)=0。另假设初始状态 x0 与 ξk,ηk 独立,即对于所有的 k,有 E(x0ξkT)=0 和 E(x0ηkT)=0 成立。 ■
在确定 xk 的最优估计 x^k 时,最优性是通过选择最优权值矩阵给出的最小二乘意义下的最小方差估计取得的。但是需要联合所有数据 vj (j=0,1,⋯,k) 的信息来确定 xk 的估计 x^k。为了实现该思路,引入向量:
vˉj=v0⋮vj,j=0,1,⋯(6)
并从数据向量 vˉk 中求得 x^k。为了完成该过程,假设到当前时刻的所有系统矩阵 Aj 非奇异。那么状态空间描述的线性随机系统可以写为:
vˉj=Hk,jxk+ϵˉk,j(7)
式中:
Hk,j=C0Φ0k⋮CjΦjk和ϵˉk,j=ϵk,0⋮ϵk,j(8)
转移矩阵 Φlk 定义为:
Φlk={Al−1⋯Ak,I,l>kl=k(9)
当 l<k 时,Φlk=Φkl−1,且
ϵk,l=ηl−Cli=l+1∑kΦliΓi−1ξi−1(10)
应用前面介绍的 Φlk 的逆变换特性,转移方程为:
xk=Φklxl+i=l+1∑kΦkiΓi−1ξi−1(11)
该式可以轻易地从式 (3) 介绍的系统方程得到,有:
xl=Φlkxk−i=l+1∑kΦliΓi−1ξi−1(12)
可得:
Hk,jxk+ϵˉk,j=C0Φ0k⋮CjΦjkxk+η0−C0i=1∑kΦ0iΓi−1ξi−1⋮ηj−Cji=j+1∑kΦjiΓi−1ξi−1=C0x0+η0⋮Cjxj+ηj=v0⋮vj=vˉj(13)
即式 (7)。
使用最小二乘估计,权值为 Wk,j=(Var(ϵˉk,j))−1,这样通过使用数据 v0,⋯,vj,就可以得到 xk 的线性、无偏、最小方差最小二乘估计 x^k∣j。
定义: (1) 对于 j=k,定义 x^k=x^k∣k,并称该估计过程为数字滤波过程;(2) 对于 j<k,定义 x^k∣j 为 xk 的最优预测,并称该过程为数字预测过程;(3) 对于 j>k,定义 x^k∣j 为 xk 的平滑估计,并且称该过程为数字平滑过程。 ■
卡尔曼滤波属于数字滤波。由于 x^k=x^k∣k 是根据所有数据 v0,⋯,vj 确定的,因为数据存储量和计算量随着时间增加,该方法不适用于 k 值很大的实时问题。因此我们打算推导从“预测” x^k∣k−1 得到 x^k=x^k∣k,及从估计 x^k−1=x^k−1∣k−1 得到 x^k∣k−1 的递推公式。在其中的每一步,由于只使用最新的数据信息,故只需用很小的数据存储量。这就是通常提到的卡尔曼滤波算法。
预测-校正公式
为了实时计算 x^k,本节将推导递推公式:
{x^k∣k=x^k∣k−1+Gk(vk−Ckx^k∣k−1)x^k∣k−1=Ak−1x^k−1∣k−1(14)
式中 Gk 为卡尔曼增益矩阵。
开始点是初始估计 x^0=x^0∣0,因为 x^0 是初始状态 x0 的无偏估计,可以使用常值向量 x^0=E(x0)。而在实际的卡尔曼滤波中,Gk 也必须递推计算。这两个递推过程合起来称为卡尔曼滤波过程。
选择权值矩阵:
Wk,j=(Var(ϵˉk,j))−1(15)
使用式 (7) 的 vˉj,使得 x^k∣j 是 xk 的具有最小方差的(最优)最小二乘估计。易证:
Wk,k−1−1=R00⋱0Rk−1+VarC0i=1∑kΦ0iΓi−1ξi−1⋮Ck−1Φk−1,kΓk−1ξk−1(16)
Wk,k−1=[Wk,k−1−100Rk](17)
。所以,Wk,k−1 和 Wk,k 是正定的。
在这里,假设矩阵 (Hk,jTWk,jHk,j), j=k−1,k,非奇异。
由以上可知:
x^k∣j=(Hk,jTWk,jHk,j)−1Hk,jTWk,jvˉj(18)
我们第一个目标是建立 x^k∣k−1 与 x^k∣k 的联系。为了实现该目标,注意到:
Hk,kTWk,kHk,k=[Hk,k−1TCkT][Wk,k−100Rk−1][Hk,k−1Ck]=Hk,k−1TWk,k−1Hk,k−1+CkTRk−1Ck(19)
及
Hk,kTWk,kvˉk=Hk,k−1TWk,k−1vˉk−1+CkTRk−1vk(20)
应用式 (18) 和前面的两个方程,得:
{(Hk,k−1TWk,k−1Hk,k−1+CkTRk−1Ck)x^k∣k−1=Hk,k−1TWk,k−1vˉk−1+CkTRk−1Ckx^k∣k−1(Hk,k−1TWk,k−1Hk,k−1+CkTRk−1Ck)x^k∣k=(Hk,kTWk,kHk,k)x^k∣k=Hk,k−1TWk,k−1vˉk−1+CkTRk−1vk(21)
通过简单的减法可得:
(Hk,k−1TWk,k−1Hk,k−1+CkTRk−1Ck)(x^k∣k−x^k∣k−1)=CkTRk−1(vk−Ckx^k∣k−1)(22)
定义:
Gk=(Hk,k−1TWk,k−1Hk,k−1+CkTRk−1Ck)−1CkTRk−1=(Hk,kTWk,kHk,k)−1CkTRk−1(23)
这样就得到:
x^k∣k=x^k∣k−1+Gk(vk−Ckx^k∣k−1)(24)
因为 x^k∣k−1 是一步预测,(vk−Ckx^k∣k−1) 是实际数据和预测之间的误差,式 (24) 实际上是以卡尔曼滤波增益 Gk 作为权值矩阵的“预测-校正”公式。为了完成递推过程,还需要一个从 x^k−1∣k−1 到 x^k∣k−1 的公式:
x^k∣k−1=Ak−1x^k−1∣k−1(25)
为了证明该式,首先注意到:
ϵˉk,k−1=ϵˉk−1,k−1−Hk,k−1Γk−1ξk−1(26)
使得:
Wk,k−1−1=Wk−1,k−1−1+Hk−1,k−1Φk−1,kΓk−1Qk−1Γk−1TΦk−1,kTHk−1,k−1T(27)
根据以上有:
Wk,k−1= Wk−1,k−1−Wk−1,k−1Hk−1,k−1Φk−1,kΓk−1(Qk−1−1+Γk−1TΦk−1,kTHk−1,k−1TWk−1,k−1Hk−1,k−1Φk−1,kΓk−1)−1⋅Γk−1TΦk−1,kTHk−1,k−1TWk−1,k−1(28)
然后根据转换关系:
Hk,k−1=Hk−1,k−1Φk−1,k(29)
有:
Hk,k−1TWk,k−1= Φk−1,kT{I−Hk−1,k−1TWk−1,k−1Hk−1,k−1Φk−1,kΓk−1(Qk−1−1+Γk−1TΦk−1,kTHk−1,k−1TWk−1,k−1Hk−1,k−1Φk−1,kΓk−1)−1⋅Γk−1TΦk−1,kT}Hk−1,k−1TWk−1,k−1(30)
则:
(Hk,k−1TWk,k−1Hk,k−1)Φk,k−1(Hk−1,k−1TWk−1,k−1Hk−1,k−1)−1⋅Hk−1,k−1TWk−1,k−1=Hk,k−1TWk,k−1(31)
结合式 (18),当 j=k−1 和 k 时得到式 (25)。
下一个目标是得到卡尔曼增益矩阵 Gk 的递推公式。首先有:
Gk=Pk,kCkTRk−1(32)
式中:
Pk,k=(Hk,kTWk,kHk,k)−1(33)
且令:
Pk,k−1=(Hk,k−1TWk,k−1Hk,k−1)−1(34)
又因:
Pk,k−1=Pk,k−1−1+CkTRk−1Ck(35)
可得:
Pk,k=Pk,k−1−Pk,k−1CkT(CkPk,k−1CkT+Rk)−1CkPk,k−1(36)
可以证明:
Gk=Pk,k−1CkT(CkPk,k−1CkT+Rk)−1(37)
因此:
Pk,k=(I−GkCk)Pk,k−1(38)
此外,还有:
Pk,k−1=Ak−1Pk−1,k−1Ak−1T+Γk−1Qk−1Γk−1T(39)
应用式 (38) 和式 (39) 及初始矩阵 P0,0,可得 Pk−1,k−1,Pk,k−1,Gk 和 Pk,k (k=1,2,⋯) 的递推计算方法。首先有:
Pk,k−1=E(xk−x^k∣k−1)(xk−x^k∣k−1)T=Var(xk−x^k∣k−1)(40)
还有:
Pk,k=E(xk−x^k∣k)(xk−x^k∣k)T=Var(xk−x^k∣k)(41)
特别地,当 k=0 时,有:
P0,0=E(x0−Ex0)(x0−Ex0)T=Var(x0)(42)
最后,联合上面得到的所有结果,得到式 (3) 所示的状态空间描述的线性随机系统的卡尔曼滤波过程:
⎩⎨⎧P0,0=Var(x0)Pk,k−1=Ak−1Pk−1,k−1Ak−1T+Γk−1Qk−1Γk−1TGk=Pk,k−1CkT(CkPk,k−1CkT+Rk)−1Pk,k=(I−GkCk)Pk,k−1x^0∣0=E(x0)x^k∣k−1=Ak−1x^k−1∣k−1x^k∣k=x^k∣k−1+Gk(vk−Ckx^k∣k−1)k=1,2,⋯(43)
总结
现在考虑具有确定性控制输入 {uk} 的常规线性确定性/随机系统。考虑状态空间模型:
{xk+1=Akxk+Bkuk+Γkξkvk=Ckxk+Dkuk+ηk(44)
式中 {uk} 是 m 维向量序列 (1⩽m⩽n)。
将确定性解叠加到式 (43) 上,则可得到该系统的卡尔曼滤波过程:
⎩⎨⎧P0,0=Var(x0)Pk,k−1=Ak−1Pk−1,k−1Ak−1T+Γk−1Qk−1Γk−1TGk=Pk,k−1CkT(CkPk,k−1CkT+Rk)−1Pk,k=(I−GkCk)Pk,k−1x^0∣0=E(x0)x^k∣k−1=Ak−1x^k−1∣k−1+Bk−1uk−1x^k∣k=x^k∣k−1+Gk(vk−Dkuk−Ckx^k∣k−1)k=1,2,⋯(45)