卡尔曼滤波
核心公式
运动方程:
x
k
=
A
k
x
k
−
1
+
B
k
u
k
+
w
k
x_{k} = A_{k}x_{k-1} + B_{k}u_{k} + w_{k}
xk=Akxk−1+Bkuk+wk
w
k
∼
N
(
0
,
Q
k
)
w_{k} \sim \mathcal{N} (0,Q_{k})
wk∼N(0,Qk)
观测方程:
z
k
=
C
k
x
k
+
v
k
z_{k} = C_{k}x_{k} + v_{k}
zk=Ckxk+vk
v
k
∼
N
(
0
,
R
k
)
v_{k} \sim \mathcal{N} (0,R_{k})
vk∼N(0,Rk)
预测:1
先验状态量均值(Predicted (a priori) state estimate):
x
ˇ
k
=
A
k
x
^
k
−
1
+
B
k
u
k
\check{x}_{k} = A_{k}\hat{x}_{k-1} + B_{k}u_{k}
xˇk=Akx^k−1+Bkuk
先验状态量协方差(Predicted (a priori) estimate covariance):
P
ˇ
k
=
A
k
P
^
k
−
1
A
k
T
+
Q
k
\check{P}_{k} = A_{k}\hat{P}_{k-1}A_{k}^{T} + Q_{k}
Pˇk=AkP^k−1AkT+Qk
更新:
状态更新前的观测协方差,先验观测协方差(Innovation (or pre-fit residual) covariance):
S
k
=
C
k
P
ˇ
k
C
k
T
+
R
k
S_{k} = C_{k}\check{P}_{k}C_{k}^{T} + R_{k}
Sk=CkPˇkCkT+Rk
卡尔曼增益(Optimal Kalman gain):
K
k
=
P
ˇ
k
C
k
T
S
k
=
P
ˇ
k
C
k
T
C
k
P
ˇ
k
C
k
T
+
R
k
K_{k} = \frac{\check{P}_{k}C_{k}^{T}} {S_{k}} = \frac{\check{P}_{k}C_{k}^{T}} {C_{k}\check{P}_{k}C_{k}^{T} + R_{k}}
Kk=SkPˇkCkT=CkPˇkCkT+RkPˇkCkT
状态更新前,观测值减去预测值得到的残差;未经状态更新的测量残差(
Innovation or measurement pre-fit residual):
y
ˇ
k
=
z
k
−
C
k
x
ˇ
k
\check{y}_{k} = z_{k} - C_{k}\check{x}_{k}
yˇk=zk−Ckxˇk
后验状态量均值(Updated (a posteriori) state estimate):
x
^
k
=
x
ˇ
k
+
K
k
y
ˇ
k
\hat{x}_{k} = \check{x}_{k} + K_{k}\check{y}_{k}
x^k=xˇk+Kkyˇk
后验状态量协方差(Updated (a posteriori) estimate covariance):
P
^
k
=
(
I
−
K
k
C
k
)
P
ˇ
k
\hat{P}_{k} = (I - K_{k}C_{k})\check{P}_{k}
P^k=(I−KkCk)Pˇk
更新后测量残差(Measurement post-fit residual):
y
^
k
=
z
k
−
C
k
x
^
k
\hat{y}_{k} = z_{k} - C_{k}\hat{x}_{k}
y^k=zk−Ckx^k
本人翻译可能不准确,所以给出概念的英文描述,资料来自Wikipedia:Kalman filter ↩︎