已知运动方程为,
x
k
=
ϕ
k
∣
k
−
1
x
k
−
1
+
Γ
k
−
1
w
k
−
1
(1)
x_k=\phi_{k|k-1}x_{k-1}+\Gamma_{k-1}w_{k-1} \tag{1}
xk=ϕk∣k−1xk−1+Γk−1wk−1(1)
其中
x
k
x_k
xk表示
k
k
k时刻的状态,
ϕ
k
∣
k
−
1
\phi_{k|k-1}
ϕk∣k−1表示状态转移矩阵,
x
k
−
1
x_{k-1}
xk−1表示
k
−
1
k-1
k−1时刻的状态,
Γ
k
−
1
\Gamma_{k-1}
Γk−1表示噪声矩阵,
w
k
−
1
w_{k-1}
wk−1表示运动噪声。
w
k
−
1
w_{k-1}
wk−1服从高斯分布
N
(
0
,
Q
k
−
1
)
N(0,Q_{k-1})
N(0,Qk−1)。
测量方程为,
z
k
=
H
k
x
k
+
v
k
(2)
z_k=H_kx_k+v_k \tag{2}
zk=Hkxk+vk(2)
其中
z
k
z_k
zk表示
k
k
k时刻的测量,
H
k
H_k
Hk表示测量矩阵,
v
k
v_k
vk表示测量噪声。
v
k
v_k
vk服从高斯分布
N
(
0
,
R
k
)
N(0,R_k)
N(0,Rk)。
输入
k
−
1
k-1
k−1时刻的后验状态
x
^
k
−
1
\hat x_{k-1}
x^k−1和后验状态的协方差矩阵
P
^
k
−
1
\hat P_{k-1}
P^k−1,以及
k
k
k时刻的测量
z
k
z_k
zk,进行如下操作:预测+更新。
预测:用运动方程得到先验估计,包括先验状态
x
ˇ
k
\check x_k
xˇk和先验状态的协方差矩阵
P
ˇ
k
\check P_k
Pˇk。
x
ˇ
k
=
ϕ
k
∣
k
−
1
x
^
k
−
1
(3-1)
\check x_k = \phi_{k|k-1}\hat x_{k-1} \tag{3-1}
xˇk=ϕk∣k−1x^k−1(3-1)
P
ˇ
k
=
ϕ
k
∣
k
−
1
P
^
k
−
1
ϕ
k
∣
k
−
1
T
+
Γ
k
−
1
Q
k
−
1
Γ
k
−
1
T
(3-2)
\check P_k=\phi_{k|k-1}\hat P_{k-1}\phi_{k|k-1}^T+\Gamma_{k-1}Q_{k-1}\Gamma_{k-1}^T \tag{3-2}
Pˇk=ϕk∣k−1P^k−1ϕk∣k−1T+Γk−1Qk−1Γk−1T(3-2)
其中公式(3-1)由均值的传播定律得到,而公式(3-2)由协方差的传播定律得到。
更新:先计算卡尔曼增益,然后用测量方程更新先验估计得到后验估计,包括后验状态
x
^
k
\hat x_k
x^k和后验状态的协方差矩阵
P
^
k
\hat P_k
P^k。
K
k
=
P
ˇ
k
H
k
T
(
H
k
P
ˇ
k
H
k
T
+
R
k
)
−
1
(3-3)
K_k=\check P_kH_k^T(H_k\check P_kH_k^T+R_k)^{-1} \tag{3-3}
Kk=PˇkHkT(HkPˇkHkT+Rk)−1(3-3)
x ^ k = x ˇ k + K k ( z k − H k x ˇ k ) (3-4) \hat x_k = \check x_k + K_k(z_k-H_k\check x_k) \tag{3-4} x^k=xˇk+Kk(zk−Hkxˇk)(3-4)
P
^
k
=
(
I
−
K
k
H
k
)
P
ˇ
k
(3-5)
\hat P_k= (I-K_kH_k)\check P_k \tag{3-5}
P^k=(I−KkHk)Pˇk(3-5)
其中公式(3-1)至(3-5)即为离散时间下的卡尔曼滤波器方程。
卡尔曼滤波器的一个小例子。
已知房间内的温度受扰动噪声
w
w
w的影响,它服从高斯分布
N
(
0
,
0.
4
2
)
N(0,0.4^2)
N(0,0.42);同时,房间内有一个温度计,它的测量噪声为
v
v
v,它服从高斯分布
N
(
0
,
0.
3
2
)
N(0,0.3^2)
N(0,0.32)。已知
k
−
1
k-1
k−1时刻房间内的真实温度为25摄氏度,
k
k
k时刻的温度计读数为25.2摄氏度,请问
k
k
k时刻房间的温度估计为多少?该估计的不确定度为多少?
解答:
由题意,系统的运动方程为,
x
k
=
x
k
−
1
+
w
k
−
1
x_k=x_{k-1}+w_{k-1}
xk=xk−1+wk−1
测量方程为,
z
k
=
x
k
+
v
k
z_k=x_k+v_k
zk=xk+vk
且已知
k
−
1
k-1
k−1时刻的后验估计为25摄氏度,方差为0。根据公式(3-1)和(3-2)得到,
k
k
k时刻先验的状态估计为25摄氏度,方差为
0.
4
2
0.4^2
0.42。根据公式(3-3)得到卡尔曼增益为,
K
k
=
0.
4
2
0.
4
2
+
0.
3
2
=
16
25
=
0.64
K_k=\frac{0.4^2}{0.4^2+0.3^2}=\frac{16}{25}=0.64
Kk=0.42+0.320.42=2516=0.64
那么,根据公式(3-4)和公式(3-5)得到后验的状态估计为,
x
^
k
=
25
+
0.64
⋅
(
25.2
−
25
)
=
25.128
\hat x_k=25+0.64\cdot(25.2-25)=25.128
x^k=25+0.64⋅(25.2−25)=25.128
P
^
k
=
(
1
−
0.64
)
⋅
0.
4
2
=
0.0576
=
0.2
4
2
\hat P_k=(1-0.64)\cdot0.4^2=0.0576=0.24^2
P^k=(1−0.64)⋅0.42=0.0576=0.242
故
k
k
k时刻房间的温度估计为25.128摄氏度,该估计的不确定度为
0.2
4
2
0.24^2
0.242。
换个角度思考(当运动方程和测量方程中的系数皆为1时,下面两个结论才成立),
预测操作时,状态的不确定度等价于电阻的串联,
P
ˇ
k
=
0
2
+
0.
4
2
⇒
P
ˇ
k
=
0.
4
2
\check P_k=0^2+0.4^2 \Rightarrow \check P_k=0.4^2
Pˇk=02+0.42⇒Pˇk=0.42
更新操作时,状态的不确定度等价于电阻的并联,
1
P
^
k
=
1
0.
4
2
+
1
0.
3
2
⇒
P
^
k
=
0.2
4
2
\frac{1}{\hat P_k}=\frac{1}{0.4^2}+\frac{1}{0.3^2} \Rightarrow \hat P_k=0.24^2
P^k1=0.421+0.321⇒P^k=0.242