【卡尔曼滤波理论推导与实践】【理论】【3.2/5 卡尔曼增益02】
目录
还是将卡尔曼滤波核心思想钉在开头:
用测量值修正系统模型值,得到当前轮次的最优估计值。再将该最优估计值当作下一轮的系统模型输入,继续进行下一轮的最优估计,如此迭代进行。
继续推导上节留下来的 P k 模 \mathrm{P_{k模}} Pk模。
根据协方差定义的公式,
P
k
模
=
E
[
e
k
模
⃗
∗
e
k
模
⃗
T
]
=
E
[
(
z
k
真
⃗
−
z
k
模
⃗
)
∗
(
z
k
真
⃗
−
z
k
模
⃗
)
T
]
\begin{aligned}\mathrm{P_{k模}}&=E[\vec{e_{k模}}*\vec{e_{k模}}^T]\\ &=E[(\vec{z_{k真}}-\vec{z_{k模}})*(\vec{z_{k真}}-\vec{z_{k模}})^T]\end{aligned}
Pk模=E[ek模∗ek模T]=E[(zk真−zk模)∗(zk真−zk模)T]
展开一下 ( z k 真 ⃗ − z k 模 ⃗ ) (\vec{z_{k真}}-\vec{z_{k模}}) (zk真−zk模):
z k 真 ⃗ − z k 模 ⃗ = A ∗ z k − 1 真 ⃗ + B ∗ F k − 1 + w k − 1 ⃗ − ( A ∗ z k − 1 估 ⃗ + B ∗ F k − 1 ) = A ∗ ( z k − 1 真 − z k − 1 估 ) + w k − 1 ⃗ = A e k − 1 估 ⃗ + w k − 1 ⃗ \begin{aligned}\vec{z_{k真}}-\vec{z_{k模}}&=\mathrm{A}*\vec{z_{k-1真}}+\mathrm{B}*F_{k-1}+\vec{w_{k-1}}-(\mathrm{A}*\vec{z_{k-1估}}+\mathrm{B}*F_{k-1})\\&=\mathrm{A}*(z_{k-1真}-z_{k-1估})+\vec{w_{k-1}}\\&=\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}}\end{aligned} zk真−zk模=A∗zk−1真+B∗Fk−1+wk−1−(A∗zk−1估+B∗Fk−1)=A∗(zk−1真−zk−1估)+wk−1=Aek−1估+wk−1
P
k
模
\mathrm{P_{k模}}
Pk模可以继续展开了:
P
k
模
=
E
[
(
A
e
k
−
1
估
⃗
+
w
k
−
1
⃗
)
∗
(
A
e
k
−
1
估
⃗
+
w
k
−
1
⃗
)
T
]
\begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})*(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})^T]\end{aligned}
Pk模=E[(Aek−1估+wk−1)∗(Aek−1估+wk−1)T]
将转置操作分配到括号里:
P
k
模
=
E
[
(
A
e
k
−
1
估
⃗
+
w
k
−
1
⃗
)
∗
(
e
k
−
1
估
⃗
T
A
T
+
w
k
−
1
⃗
T
)
]
\begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}+\vec{w_{k-1}})*(\vec{e_{k-1估}}^T\mathrm{A}^T+\vec{w_{k-1}}^T)]\end{aligned}
Pk模=E[(Aek−1估+wk−1)∗(ek−1估TAT+wk−1T)]
接下来将括号乘开。注意噪声
w
k
−
1
⃗
\vec{w_{k-1}}
wk−1的期望是0,所以和
w
k
−
1
⃗
\vec{w_{k-1}}
wk−1搭边的项都是0。乘开后可以得到以下结果:
P
k
模
=
E
[
(
A
e
k
−
1
估
⃗
e
k
−
1
估
⃗
T
A
T
+
w
k
−
1
⃗
w
k
−
1
⃗
T
]
\begin{aligned}\mathrm{P_{k模}}&=E[(\mathrm{A}\vec{e_{k-1估}}\vec{e_{k-1估}}^T\mathrm{A}^T+\vec{w_{k-1}}\vec{w_{k-1}}^T]\end{aligned}
Pk模=E[(Aek−1估ek−1估TAT+wk−1wk−1T]
再把期望分配到括号里,
E
[
w
k
−
1
⃗
w
k
−
1
⃗
T
]
E[\vec{w_{k-1}}\vec{w_{k-1}}^T]
E[wk−1wk−1T]是一个模型噪声的协方差矩阵,是人为假定的常数,是已知的,记做
Q
\mathrm{Q}
Q:
P
k
模
=
A
E
[
e
k
−
1
估
⃗
e
k
−
1
估
⃗
T
]
A
T
+
E
[
w
k
−
1
⃗
w
k
−
1
⃗
T
]
=
A
P
k
−
1
估
A
T
+
Q
\begin{aligned}\mathrm{P_{k模}}&=\mathrm{A}E[\vec{e_{k-1估}}\vec{e_{k-1估}}^T]\mathrm{A}^T+E[\vec{w_{k-1}}\vec{w_{k-1}}^T]\\&=\mathrm{A}\mathrm{P_{k-1估}}\mathrm{A}^T+\mathrm{Q}\end{aligned}
Pk模=AE[ek−1估ek−1估T]AT+E[wk−1wk−1T]=APk−1估AT+Q
在上节已经推导过
P
k
估
\mathrm{P_{k估}}
Pk估的表达式,将最优估计时的
G
k
\mathrm{G_k}
Gk代入表达式,即可得到最优估计时的
P
k
估
\mathrm{P_{k估}}
Pk估。
上节推导得到的两个表达式如下,注意只是将
k
k
k换成
k
−
1
k-1
k−1:
P
k
−
1
估
=
(
I
−
G
k
−
1
)
2
P
k
−
1
模
+
G
k
−
1
2
(
H
−
1
)
2
R
,
G
k
−
1
=
P
k
−
1
模
P
k
−
1
模
+
(
H
−
1
)
2
R
\begin{aligned}\mathrm{P_{k-1估}}&=(\mathrm{I}-\mathrm{G_{k-1}})^2\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2(\mathrm{H}^{-1})^2\mathrm{R},\mathrm{G_{k-1}}=\frac{\mathrm{P_{k-1模}}}{\mathrm{P_{k-1模}}+(\mathrm{H}^{-1})^2\mathrm{R}}\end{aligned}
Pk−1估=(I−Gk−1)2Pk−1模+Gk−12(H−1)2R,Gk−1=Pk−1模+(H−1)2RPk−1模
你完全可以将
G
k
−
1
\mathrm{G_{k-1}}
Gk−1直接无脑代入
P
k
−
1
估
\mathrm{P_{k-1估}}
Pk−1估,毕竟
P
k
−
1
估
\mathrm{P_{k-1估}}
Pk−1估等式右边全是上轮迭代得到的已知数,但是
P
k
−
1
估
\mathrm{P_{k-1估}}
Pk−1估可以进行化简减少计算量:
P
k
−
1
估
=
P
k
−
1
模
+
G
k
−
1
2
P
k
−
1
模
−
2
G
k
−
1
P
k
−
1
模
+
G
k
−
1
2
(
H
−
1
)
2
R
=
P
k
−
1
模
+
G
k
−
1
[
G
k
−
1
(
P
k
−
1
模
+
(
H
−
1
)
2
R
)
−
2
P
k
−
1
模
]
=
P
k
−
1
模
+
G
k
−
1
(
P
k
−
1
模
−
2
P
k
−
1
模
)
=
(
I
−
G
k
−
1
)
P
k
−
1
模
\begin{aligned}\mathrm{P_{k-1估}}&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2\mathrm{P_{k-1模}}-2\mathrm{G_{k-1}}\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}^2(\mathrm{H}^{-1})^2\mathrm{R}\\&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}[\mathrm{G_{k-1}}(\mathrm{P_{k-1模}}+(\mathrm{H}^{-1})^2\mathrm{R})-2\mathrm{P_{k-1模}}]\\&=\mathrm{P_{k-1模}}+\mathrm{G_{k-1}}(\mathrm{P_{k-1模}}-2\mathrm{P_{k-1模}})\\&=(\mathrm{I}-\mathrm{G_{k-1}})\mathrm{P_{k-1模}}\end{aligned}
Pk−1估=Pk−1模+Gk−12Pk−1模−2Gk−1Pk−1模+Gk−12(H−1)2R=Pk−1模+Gk−1[Gk−1(Pk−1模+(H−1)2R)−2Pk−1模]=Pk−1模+Gk−1(Pk−1模−2Pk−1模)=(I−Gk−1)Pk−1模
等号右边都是上轮迭代得出的值,
P
k
−
1
估
\mathrm{P_{k-1估}}
Pk−1估可知了,从而
P
k
模
\mathrm{P_{k模}}
Pk模也可知了,从而卡尔曼增益
G
k
\mathrm{G_k}
Gk也可知了。
到此为止,所有东西都被推导出来了,能看到这是一轮迭代求解的过程,下一节对公式进行整理,也就是卡尔曼滤波的5个公式。