【卡尔曼滤波器】_DR_CAN合集
学习笔记
对于一个经过离散化的包含过程噪声和测量噪声的状态空间方程:
{xkzk=Axk−1+Buk−1+wk−1=Hxk+vk
其中过程噪声w符合正态分布:
wμQ∼N(μ,Q)=E(w)=0=Var(w)=E(w2)−E2(w)=E(w2)−0=E(wwT)
其中测量噪声v符合正态分布:
vμR∼N(μ,R)=E(v)=0=Var(v)=E(v2)−E2(v)=E(v2)−0=E(vvT)
举例:
wVar(w)=[w1w2]=E(wwT)=E([w1w2][w1w2])=E([w1w1w2w1w1w2w2w2])=[E(w1w1)E(w2w1)E(w1w2)E(w2w2)]=[E(w12)E(w2w1)E(w1w2)E(w22)]=[Var(w1)+E2(w1)Cov(w2,w1)+E(w2)E(w1)Cov(w1,w2)+E(w1)E(w2)Var(w2)+E2(w2)]=[Var(w1)+0Cov(w2,w1)+0Cov(w1,w2)+0Var(w2)+0]=[Var(w1)Cov(w2,w1)Cov(w1,w2)Var(w2)]=[σw12σw2σw1σw1σw2σw22](协方差矩阵)
忽略模型的过程噪声,根据上一时刻状态(后验估计),计算下一时刻状态,定义为先验估计:
x^k−=Ax^k−1+Buk−1
忽略传感器的测量噪声,根据传感器测量得到的状态Z,反推状态X,定义为测量估计:
x^kMES=H−zk
上述两个状态,
- 前者为忽略过程噪声利用模型对X的
预测
, - 后者为忽略测量噪声利用传感器对X的
测量
,
利用卡尔曼滤波器对两者进行数据融合(Data Fusion),得到后验估计:
x^k=x^k−+G(H−zk−x^k−)
其中G∈[0,1]
- 当 G→0 时,x^k→x^k− 即: 估计值 -> 预测值
- 当 G→1 时,x^k→x^kMES 即: 估计值 -> 测量值
如若定义G=KkH,则可消除广义逆矩阵N−:
x^k=x^k−+Kk(zk−Hx^k−)
其中Kk∈[0,H−]
- 当 Kk→0 时,x^k→x^k− 即: 估计值 -> 预测值
- 当 Kk→H− 时,x^k→x^kMES 即: 估计值 -> 测量值
要找到一个Kk使得估计值尽可能接近实际值,即:
x^k→xk
即要使得估计误差最小:
ek=xk−x^kek→0
既要使得估计误差的方差最小、协方差矩阵最小、协方差矩阵的迹最小:
ekμPktr(Pk)∼N(μ,P)=E(ek)=0=Var(ek)=E(ekekT)=E([e1e2][e1e2])=[σe12σe2σe1σe1σe2σe22]=tr([σe12σe2σe1σe1σe2σe22])=tr([σe1200σe22])=σe12+σe22
ekPk=Var(ek)tr(Pk)=tr(Var(ek))→0;→0;→0;
总之,就是要找到一个Kk,使其估计误差ek最小,只需使估计误差的方差的迹tr(Var(ek))最小,即:
ddKktr(Var(ek))=0
其中
ek=xk−x^k=xk−[x^k−+Kk(zk−Hx^k−)]=xk−[x^k−+Kk([Hxk+vk]−Hx^k−)]=xk−x^k−−Kk([Hxk+vk]−Hx^k−)=xk−x^k−−Kk[Hxk+vk]+KkHx^k−=xk−x^k−−KkHxk−Kkvk+KkHx^k−=(xk−x^k−)+(−KkHxk+KkHx^k−)−Kkvk=(xk−x^k−)−KkH(xk−x^k−)−Kkvk=[(xk−x^k−)−KkH(xk−x^k−)]−Kkvk=(I−KkH)(xk−x^k−)−Kkvk=(I−KkH)ek−−Kkvk(代入x^k)(代入zk)(去除括号)(去除括号)(去除括号)(添加括号)(提取KkH)(添加括号)(提取xk−x^k−)(代入ek−)定义:先验估计误差ek−=xk−x^k−
转置性质
- (AB)T=BTAT
- (A+B)T=AT+BT
其中
Pk=Var(ek)=E[ekekT]=E[[(I−KkH)ek−−Kkvk][(I−KkH)ek−−Kkvk]T]=E[[(I−KkH)ek−−Kkvk][ek−T(I−KkH)T−vkTKkT]]=E[[(I−KkH)ek−][ek−T(I−KkH)T]−[(I−KkH)ek−][vkTKkT]−[Kkvk][ek−T(I−KkH)T]+[Kkvk][vkTKkT]]=E[[(I−KkH)ek−][ek−T(I−KkH)T]]−E[[(I−KkH)ek−][vkTKkT]]−E[[Kkvk][ek−T(I−KkH)T]]+E[[Kkvk][vkTKkT]]=第1项−第2项−第3项+第4项(转置性质)(展开)(展开)(展开)
其中:
第1项第2项第3项第4项=E[[(I−KkH)ek−][ek−T(I−KkH)T]]=(I−KkH)E[ek−ek−T](I−KkH)T=(I−KkH)E[ek−ek−T](I−KkH)T=(I−KkH)Pk−(I−KkH)T=(Pk−−KkHPk−)(IT−HTKkT)=(Pk−−KkHPk−)(I−HTKkT)=Pk−I−Pk−HTKkT−KkHPk−I+KkHPk−HTKkT=Pk−−Pk−HTKkT−KkHPk−+KkHPk−HTKkT=E[[(I−KkH)ek−][vkTKkT]]=(I−KkH)E[ek−vkT]KkT=(I−KkH)E[ek−]E[vkT]KkT=(I−KkH)×0×0×KkT=0=E[[Kkvk][ek−T(I−KkH)T]]=KkE[vkek−T](I−KkH)T=KkE[vk]E[ek−T](I−KkH)T=Kk×0×0×(I−KkH)T=0=E[[Kkvk][vkTKkT]]=KkE[vkvkT]KkT=KkRKkT(提取常数项)(代入:Pk=E(ekekT))(提取常数项)(估计误差和测量误差相互独立)两误差期望为0(提取常数项)(估计误差和测量误差相互独立)(两误差期望为0)(提取常数项)(代入:R=E(vkvkT))
所以
Pk=Var(ek)=第1项−第2项−第3项+第4项=(Pk−−Pk−HTKkT−KkHPk−+KkHPk−HTKkT)−0−0+(KkRKkT)=Pk−−Pk−HTKkT−KkHPk−+KkHPk−HTKkT+KkRKkT=第A项−第B项−第C项+第D项+第E项
其中
(第B项)T=(Pk−HTKkT)T=((Pk−HT)KkT)T=Kk(Pk−HT)T=KkHPk−=第C项
说明两矩阵对角线元素相同,所以
tr(第B项)=tr(第C项)
所以
tr(Pk)=tr(Var(ek))=tr(第A项−第B项−第C项+第D项+第E项)=tr(第A项)−tr(第B项)−tr(第C项)+tr(第D项)+tr(第E项)=tr(第A项)−2tr(第C项)+tr(第D项)+tr(第E项)
由于
ddAtr(AB)=BT
举例
A=[a1,1a2,1a1,2a2,2]B=[b1,1b2,1b1,2b2,2]tr(AB)ddAtr(AB)=tr([a1,1a2,1a1,2a2,2][b1,1b2,1b1,2b2,2])=tr([a1,1b1,1+a1,2b2,1a2,1b1,2+a2,2b2,2])=(a1,1b1,1+a1,2b2,1)+(a2,1b1,2+a2,2b2,2)=a1,1b1,1+a1,2b2,1+a2,1b1,2+a2,2b2,2=dd[a1,1a2,1a1,2a2,2]tr(AB)=[∂∂a1,1tr(AB)∂∂a2,1tr(AB)∂∂a1,2tr(AB)∂∂a2,2tr(AB)]=[b1,1b1,2b2,1b2,2]=BT
由于
ddAtr(ABAT)=A(B+BT)
举例
A=[a1,1a2,1a1,2a2,2]B=[b1,1b2,1b1,2b2,2]tr(ABAT)ddAtr(ABAT)=tr([a1,1a2,1a1,2a2,2][b1,1b2,1b1,2b2,2][a1,1a2,1a1,2a2,2]T)=tr([a1,1a2,1a1,2a2,2][b1,1b2,1b1,2b2,2][a1,1a1,2a2,1a2,2])=tr([a1,1b1,1+a1,2b2,1a2,1b1,1+a2,2b2,1a1,1b1,2+a1,2b2,2a2,1b1,2+a2,2b2,2][a1,1a1,2a2,1a2,2])=tr([(a1,1b1,1+a1,2b2,1)a1,1+(a1,1b1,2+a1,2b2,2)a1,2(a2,1b1,1+a2,2b2,1)a2,1+(a2,1b1,2+a2,2b2,2)a2,2])=(a1,1b1,1+a1,2b2,1)a1,1+(a1,1b1,2+a1,2b2,2)a1,2+(a2,1b1,1+a2,2b2,1)a2,1+(a2,1b1,2+a2,2b2,2)a2,2=dd[a1,1a2,1a1,2a2,2]tr(ABAT)=∂∂a1,1tr(ABAT)∂∂a2,1tr(ABAT)∂∂a1,2tr(ABAT)∂∂a2,2tr(ABAT)=[2a1,1b1,1+a1,2b2,1+b1,2a1,22a2,1b1,1+a2,2b2,1+b1,2a2,2b2,1a1,1+a1,1b1,2+2a1,2b2,2b2,1a2,1+a2,1b1,2+2a2,2b2,2]=[a1,1b1,1+(a1,1b1,1+a1,2b2,1)+b1,2a1,2a2,1b1,1+(a2,1b1,1+a2,2b2,1)+b1,2a2,2b2,1a1,1+(a1,1b1,2+a1,2b2,2)+a1,2b2,2b2,1a2,1+(a2,1b1,2+a2,2b2,2)+a2,2b2,2]=[a1,1b1,1+a1,2b2,1a2,1b1,1+a2,2b2,1a1,1b1,2+a1,2b2,2a2,1b1,2+a2,2b2,2]+[a1,1b1,1+b1,2a1,2a2,1b1,1+b1,2a2,2b2,1a1,1+a1,2b2,2b2,1a2,1+a2,2b2,2]=AB+ABT=A(B+BT)
所以
ddKktr(第A项)ddKktr(第C项)ddKktr(第D项)ddKktr(第E项)=ddKktr(Pk−)=0=ddKktr(KkHPk−)=(HPk−)T=Pk−THT=Pk−HT=ddKktr(KkHPk−HTKkT)=Kk(HPk−HT+(HPk−HT)T)=Kk(HPk−HT+((HT)T(Pk−)THT))=Kk(HPk−HT+HPk−HT)=2Kk(HPk−HT)=ddKktr(KkRKkT)=Kk(R+RT)=Kk(R+R)=2KkR
所以
ddKktr(Pk)ddKktr(Var(ek))ddKktr(第A项)−2tr(第C项)+tr(第D项)+tr(第E项)ddKktr(第A项)−2ddKktr(第C项)+ddKktr(第D项)+ddKktr(第E项)0−2Pk−HT+2Kk(HPk−HT)+2KkR−Pk−HT+Kk(HPk−HT)+KkRKk(HPk−HT)+KkRKk(HPk−HT+R)Kk=0=0=0=0=0=0=Pk−HT=Pk−HT=HPk−HT+RPk−HT
所以最终得到:
Kk=HPk−HT+RPk−HT
其中
- 测量误差 R→+∞
或
先验估计误差 Pk−→0- 则:Kk→HPk−HT+R0k−HT=0
- 测量误差 R→0
或
先验估计误差 Pk−→+∞- 则:Kk→HPk−HT+0Pk−HT=H1=H−1