滤波估计理论(二)——卡尔曼滤波器(Kalman Filter)
线性高斯模型
我们知道,贝叶斯滤波的具体形式取决于先验概率分布、系统动态模型等多个方面,二者不同的搭配会带来不同的结果,因此这里我们首先来看一个最为简单的搭配——线性模型+高斯分布。
对于一个线性系统来说,其状态空间模型可以写成如下的矩阵形式:
{
x
k
=
A
k
−
1
x
k
−
1
+
q
k
−
1
z
k
=
H
k
x
k
+
r
k
\left\{\begin{aligned} &\bm{x}_k=\bm{A}_{k-1}\bm{x}_{k-1}+\bm{q}_{k-1}\\ &\bm{z}_k=\bm{H}_k\bm{x}_k+\bm{r}_k \end{aligned}\right.
{xk=Ak−1xk−1+qk−1zk=Hkxk+rk
式中矩阵 A k − 1 \bm{A}_{k-1} Ak−1和 H k \bm{H}_k Hk分别称为状态转移矩阵和量测矩阵, q k − 1 ∼ N ( 0 , Q k − 1 ) \bm{q}_{k-1}\sim N(0,\bm{Q}_{k-1}) qk−1∼N(0,Qk−1)和 r k ∼ N ( 0 , R k ) \bm{r}_k\sim N(0,\bm{R}_k) rk∼N(0,Rk)分别为服从零均值高斯分布的过程噪声和量测噪声,系统的初值同样服从高斯分布 x 0 ∼ N ( μ 0 , P 0 ) \bm{x}_0\sim N(\bm{\mu}_0,\bm{P}_0) x0∼N(μ0,P0)。
根据高斯分布的线性性,我们可以很容易将该状态空间模型转化为概率状态空间模型:
p
(
x
k
∣
x
k
−
1
)
∼
N
(
A
k
−
1
x
k
−
1
,
Q
k
−
1
)
p
(
z
k
∣
x
k
)
∼
N
(
H
k
x
k
,
R
k
)
\begin{aligned} &p(\bm{x}_k|\bm{x}_{k-1})\sim N(\bm{A}_{k-1}\bm{x}_{k-1},\bm{Q}_{k-1})\\ &p(\bm{z}_k|\bm{x}_{k})\sim N(\bm{H}_k\bm{x}_k,\bm{R}_k) \end{aligned}
p(xk∣xk−1)∼N(Ak−1xk−1,Qk−1)p(zk∣xk)∼N(Hkxk,Rk)
在进一步推导Kalman滤波的具体形式之前,我们需要先介绍关于Gaussian变量的两个重要性质。
高斯变量的联合分布与条件分布
高斯变量的联合分布(条件->联合)
对于两个高斯分布随机变量
x
∼
R
n
\bm{x}\sim\mathbb{R}^n
x∼Rn和
y
∼
R
m
\bm{y}\sim\mathbb{R}^m
y∼Rm,已知边缘分布
p
(
x
)
p(\bm{x})
p(x)和条件分布
p
(
y
∣
x
)
p(\bm{y}|\bm{x})
p(y∣x)如下:
p
(
x
)
∼
N
(
μ
,
P
)
p
(
y
∣
x
)
∼
N
(
H
x
+
u
,
R
)
\begin{aligned} p(\bm{x})&\sim N(\bm{\mu},\bm{P})\\ p(\bm{y}|\bm{x})&\sim N(\bm{Hx}+\bm{u},\bm{R}) \end{aligned}
p(x)p(y∣x)∼N(μ,P)∼N(Hx+u,R)
则
x
\bm{x}
x和
y
\bm{y}
y的联合分布以及
y
\bm{y}
y的边缘分布如下:
[
x
y
]
∼
N
(
[
μ
H
μ
+
u
]
,
[
P
P
H
T
H
P
H
P
H
T
+
R
]
)
y
∼
N
(
H
μ
+
u
,
H
P
H
T
+
R
)
(1)
\begin{aligned} \left[\begin{array}{c} \bm{x}\\\bm{y} \end{array}\right]&\sim N\left(\left[\begin{array}{c} \bm{\mu}\\\bm{H}\bm{\mu}+\bm{u}\end{array}\right], \left[\begin{matrix} \bm{P} & \bm{P}\bm{H}^T\\ \bm{HP} & \bm{HP}\bm{H}^T+\bm{R} \end{matrix}\right]\right)\\ \bm{y}&\sim N(\bm{H}\bm{\mu}+\bm{u},\bm{HP}\bm{H}^T+\bm{R}) \end{aligned} \tag{1}
[xy]y∼N([μHμ+u],[PHPPHTHPHT+R])∼N(Hμ+u,HPHT+R)(1)
高斯变量的条件分布(联合->条件)
反之,如果我们已知高斯随机变量
x
\bm{x}
x和
y
\bm{y}
y的联合分布为:
[
x
y
]
∼
N
(
[
a
b
]
,
[
A
C
C
T
B
]
)
\left[\begin{array}{c}\bm{x}\\\bm{y}\end{array}\right]\sim N\left(\left[\begin{array}{c}\bm{a}\\\bm{b}\end{array}\right], \left[\begin{matrix}\bm{A} & \bm{C}\\ \bm{C}^T & \bm{B} \end{matrix}\right]\right)
[xy]∼N([ab],[ACTCB])
则
x
\bm{x}
x和
y
\bm{y}
y各自的边缘分布以及条件分布如下:
p
(
x
)
∼
N
(
a
,
A
)
p
(
y
)
∼
M
(
b
,
B
)
p
(
x
∣
y
)
∼
N
(
a
+
C
B
−
1
(
y
−
b
)
,
A
−
C
B
−
1
C
T
)
p
(
y
∣
x
)
∼
N
(
b
+
C
T
A
−
1
(
x
−
a
)
,
B
−
C
T
A
−
1
C
)
(2)
\begin{aligned} p(\bm{x})&\sim N(\bm{a},\bm{A})\\ p(\bm{y})&\sim M(\bm{b},\bm{B})\\ p(\bm{x}|\bm{y})&\sim N(\bm{a}+\bm{C}\bm{B}^{-1}(\bm{y}-\bm{b}),\bm{A}-\bm{C}\bm{B}^{-1}\bm{C}^T)\\ p(\bm{y}|\bm{x})&\sim N(\bm{b}+\bm{C}^T\bm{A}^{-1}(\bm{x}-\bm{a}),\bm{B}-\bm{C}^T\bm{A}^{-1}\bm{C}) \end{aligned} \tag{2}
p(x)p(y)p(x∣y)p(y∣x)∼N(a,A)∼M(b,B)∼N(a+CB−1(y−b),A−CB−1CT)∼N(b+CTA−1(x−a),B−CTA−1C)(2)
式中 A − C B − 1 C T \bm{A}-\bm{C}\bm{B}^{-1}\bm{C}^T A−CB−1CT和 B − C T A − 1 C \bm{B}-\bm{C}^T\bm{A}^{-1}\bm{C} B−CTA−1C分别称为矩阵 B \bm{B} B和矩阵 A \bm{A} A相对于协方差矩阵的舒尔补(Schur Complement)。上述所有公式都可以通过写出对应的概率密度函数并进行整理简化即可,并没有什么复杂的变换过程,因此具体过程这里略过,只要记忆对应的结论即可。
线性高斯Kalman滤波
状态预测
现在我们接着回到线性高斯模型下的贝叶斯滤波中,同样在未获得
k
k
k时刻的量测值
z
k
\bm{z}_k
zk之前,我们可以根据
k
−
1
k-1
k−1时刻的系统状态对
k
k
k时刻的系统状态做出预测,即求解在给定
z
1
:
k
−
1
\bm{z}_{1:k-1}
z1:k−1下
x
k
−
1
\bm{x}_{k-1}
xk−1和
x
k
\bm{x}_k
xk的联合分布
p
(
x
k
,
x
k
−
1
∣
z
1
:
k
−
1
)
p(\bm{x}_k,\bm{x}_{k-1}|\bm{z}_{1:k-1})
p(xk,xk−1∣z1:k−1),根据贝叶斯公式有:
p
(
x
k
,
x
k
−
1
∣
z
1
:
k
−
1
)
=
p
(
x
k
∣
x
k
−
1
,
z
1
:
k
−
1
)
p
(
x
k
−
1
∣
z
1
:
k
−
1
)
p(\bm{x}_k,\bm{x}_{k-1}|\bm{z}_{1:k-1})=p(\bm{x}_k|\bm{x}_{k-1},\bm{z}_{1:k-1})p(\bm{x}_{k-1}|\bm{z}_{1:k-1})
p(xk,xk−1∣z1:k−1)=p(xk∣xk−1,z1:k−1)p(xk−1∣z1:k−1)
由于
x
k
\bm{x}_k
xk和
x
k
−
1
\bm{x}_{k-1}
xk−1均与
z
1
:
k
−
1
\bm{z}_{1:k-1}
z1:k−1无关,因此
p
(
x
k
−
1
∣
z
1
:
k
−
1
)
p(\bm{x}_{k-1}|\bm{z}_{1:k-1})
p(xk−1∣z1:k−1)就相当于边缘概率
p
(
x
k
−
1
)
p(\bm{x}_{k-1})
p(xk−1),根据式(1)有:
[
x
k
x
k
−
1
]
∼
p
(
x
k
,
x
k
−
1
∣
z
1
:
k
−
1
)
=
p
(
x
k
∣
x
k
−
1
)
p
(
x
k
−
1
)
=
N
(
A
k
−
1
x
k
−
1
,
Q
k
−
1
)
N
(
μ
k
−
1
,
P
k
−
1
)
=
N
(
[
μ
k
−
1
A
k
−
1
μ
k
−
1
]
,
[
P
k
−
1
P
k
−
1
A
k
−
1
T
A
k
−
1
P
k
−
1
A
k
−
1
P
k
−
1
A
k
−
1
T
+
Q
k
]
)
\begin{aligned} \left[\begin{array}{c}\bm{x}_k\\\bm{x}_{k-1}\end{array}\right]&\sim p(\bm{x}_k,\bm{x}_{k-1}|\bm{z}_{1:k-1})\\ &=p(\bm{x}_k|\bm{x}_{k-1})p(\bm{x}_{k-1})\\ &=N(\bm{A}_{k-1}\bm{x}_{k-1},\bm{Q}_{k-1})N(\bm{\mu}_{k-1},\bm{P}_{k-1})\\ &=N\left(\left[\bm{\begin{array}{c}\bm{\mu}_{k-1}\\\bm{A}_{k-1}\bm{\mu}_{k-1}\end{array}}\right],\left[\begin{matrix} \bm{P}_{k-1} & \bm{P}_{k-1}\bm{A}_{k-1}^T\\ \bm{A}_{k-1}\bm{P}_{k-1} & \bm{A}_{k-1}\bm{P}_{k-1}\bm{A}_{k-1}^T+\bm{Q}_k \end{matrix}\right]\right) \end{aligned}
[xkxk−1]∼p(xk,xk−1∣z1:k−1)=p(xk∣xk−1)p(xk−1)=N(Ak−1xk−1,Qk−1)N(μk−1,Pk−1)=N([μk−1Ak−1μk−1],[Pk−1Ak−1Pk−1Pk−1Ak−1TAk−1Pk−1Ak−1T+Qk])
进而可由式(1)得到边缘分布
p
(
x
k
∣
z
1
:
k
−
1
)
p(\bm{x}_k|\bm{z}_{1:k-1})
p(xk∣z1:k−1)为:
p
(
x
k
∣
z
1
:
k
−
1
)
=
p
(
x
k
)
∼
N
(
A
k
−
1
μ
k
−
1
,
A
k
−
1
P
k
−
1
A
k
−
1
T
+
Q
k
)
(3)
p(\bm{x_k|\bm{z}_{1:k-1}})=p(\bm{x}_k)\sim N(\bm{A}_{k-1}\bm{\mu}_{k-1},\bm{A}_{k-1}\bm{P}_{k-1}\bm{A}_{k-1}^T+\bm{Q}_k) \tag{3}
p(xk∣z1:k−1)=p(xk)∼N(Ak−1μk−1,Ak−1Pk−1Ak−1T+Qk)(3)
式(3)即为Kalman滤波的一步预测过程,为了方便后续书写,这里我们使用上标 ( ⋅ ) ^ \hat{(\cdot)} (⋅)^表示预测值,简记为 p ( x k ∣ z 1 : k − 1 ) ∼ N ( μ ^ k , P ^ k ) p(\bm{x_k|\bm{z}_{1:k-1}})\sim N(\hat{\bm{\mu}}_k,\hat{\bm{P}}_k) p(xk∣z1:k−1)∼N(μ^k,P^k)。
量测更新
在获得了
k
k
k时刻量测信息
z
k
\bm{z}_k
zk的条件分布
p
(
z
k
∣
x
k
)
p(\bm{z}_k|\bm{x}_k)
p(zk∣xk)之后,同样根据式(1)有:
p
(
z
k
,
x
k
∣
z
1
:
k
−
1
)
=
p
(
z
k
∣
x
k
)
p
(
x
k
∣
z
k
−
1
)
=
N
(
H
k
x
k
,
R
k
)
N
(
μ
k
^
,
P
^
k
)
⇒
[
x
k
z
k
]
∼
N
(
[
μ
^
k
H
k
μ
^
k
]
,
[
P
^
k
P
^
k
H
k
T
H
k
P
^
k
H
k
P
^
k
H
T
+
R
k
]
)
\begin{aligned} p(\bm{z}_k,\bm{x}_k|\bm{z}_{1:k-1})&=p(\bm{z}_k|\bm{x}_k)p(\bm{x}_k|\bm{z}_{k-1})\\ &=N(\bm{H}_k\bm{x}_k,\bm{R}_k)N(\hat{\bm{\mu}_k},\hat{\bm{P}}_k)\\ \Rightarrow\left[\begin{array}{c}\bm{x}_k\\\bm{z}_k\end{array}\right]&\sim N(\left[\begin{array}{c}\hat{\bm{\mu}}_k\\\bm{H}_k\hat{\bm{\mu}}_k\end{array}\right], \left[\begin{matrix} \hat{\bm{P}}_k & \hat{\bm{P}}_k\bm{H}_k^T\\ \bm{H}_k\hat{\bm{P}}_k & \bm{H}_k\hat{\bm{P}}_k\bm{H}^T+\bm{R}_k\\ \end{matrix}\right]) \end{aligned}
p(zk,xk∣z1:k−1)⇒[xkzk]=p(zk∣xk)p(xk∣zk−1)=N(Hkxk,Rk)N(μk^,P^k)∼N([μ^kHkμ^k],[P^kHkP^kP^kHkTHkP^kHT+Rk])
虽然根据公式我们最后求得的应为
[
x
k
∣
z
1
:
k
−
1
z
k
∣
z
1
:
k
−
1
]
T
\left[\begin{array}{cc}\bm{x}_k|\bm{z}_{1:k-1} & \bm{z}_k|\bm{z}_{1:k-1}\end{array}\right]^T
[xk∣z1:k−1zk∣z1:k−1]T的联合分布,但由贝叶斯估计的Markov性和条件独立性可知,
x
k
\bm{x}_k
xk和
z
k
\bm{z}_k
zk均与
z
1
:
k
−
1
\bm{z}_{1:k-1}
z1:k−1无关,因此实际上
p
(
[
x
k
∣
z
1
:
k
−
1
z
k
∣
z
1
:
k
−
1
]
T
)
=
p
(
[
x
k
z
k
]
T
)
p(\left[\begin{array}{cc}\bm{x}_k|\bm{z}_{1:k-1} & \bm{z}_k|\bm{z}_{1:k-1}\end{array}\right]^T)=p(\left[\begin{array}{cc}\bm{x}_k & \bm{z}_k\end{array}\right]^T)
p([xk∣z1:k−1zk∣z1:k−1]T)=p([xkzk]T)。进一步根据式(2)有:
p
(
x
k
∣
z
k
,
z
1
:
k
−
1
)
=
p
(
x
k
∣
z
k
)
∼
N
(
μ
~
k
,
P
~
k
)
p(\bm{x}_k|\bm{z}_k,\bm{z}_{1:k-1})=p(\bm{x}_k|\bm{z}_k)\sim N(\tilde{\bm{\mu}}_k,\tilde{\bm{P}}_k)
p(xk∣zk,z1:k−1)=p(xk∣zk)∼N(μ~k,P~k)
我们使用上标
(
⋅
)
~
\tilde{\left(\cdot\right)}
(⋅)~来表示估计值,则
μ
~
k
\tilde{\bm{\mu}}_k
μ~k和
P
~
k
\tilde{\bm{P}}_k
P~k分别为:
μ
~
k
=
μ
^
+
P
^
k
H
k
T
(
H
k
P
^
k
H
T
+
R
k
)
−
1
(
z
k
−
H
k
μ
^
k
)
=
μ
^
+
K
z
^
k
(4)
\tilde{\bm{\mu}}_k=\hat{\bm{\mu}}+ \hat{\bm{P}}_k\bm{H}_k^T\left(\bm{H}_k\hat{\bm{P}}_k\bm{H}^T+\bm{R}_k\right)^{-1}\left(\bm{z}_k-\bm{H}_k\hat{\bm{\mu}}_k\right)=\hat{\bm{\mu}}+ \bm{K}\hat{\bm{z}}_k \tag{4}
μ~k=μ^+P^kHkT(HkP^kHT+Rk)−1(zk−Hkμ^k)=μ^+Kz^k(4)
P ~ k = P ^ k − P ^ k H k T ( H k P ^ k H T + R k ) − 1 H k P ^ k = P ^ k − K H k P ^ k (5) \tilde{\bm{P}}_k=\hat{\bm{P}}_k-\hat{\bm{P}}_k\bm{H}_k^T\left(\bm{H}_k\hat{\bm{P}}_k\bm{H}^T+\bm{R}_k\right)^{-1}\bm{H}_k\hat{\bm{P}}_k=\hat{\bm{P}}_k-\bm{K}\bm{H}_k\hat{\bm{P}}_k \tag{5} P~k=P^k−P^kHkT(HkP^kHT+Rk)−1HkP^k=P^k−KHkP^k(5)
式(4)和式(5)即为Kalman滤波的量测更新过程,其中矩阵 K \bm{K} K称为Kalman增益矩阵,其表征的是将对预测的状态值和量测的状态值进行加权估计。 z ^ k \hat{z}_k z^k称为Kalman新息或残差,其表征的是我们实际的测量值和我们的预测值之间的偏差。
总结
可以看出,虽然经典的Kalman滤波算法最初是从最优控制的中的最小二乘估计问题得来的,但Kalman就是贝叶斯滤波在线性高斯模型下的闭合解。式(3)~式(5)即为经典Kalman的五步估计方程,这里整理如下:
一
步
预
测
{
μ
^
k
=
A
k
−
1
μ
k
−
1
P
^
k
=
A
k
−
1
P
k
−
1
A
k
−
1
T
+
Q
k
量
测
更
新
{
K
=
P
^
k
H
k
T
(
H
k
P
^
k
H
T
+
R
k
)
−
1
μ
~
k
=
μ
^
+
K
(
z
k
−
H
k
μ
^
k
)
P
~
k
=
P
^
k
−
K
H
k
P
^
k
\begin{aligned} 一步预测\quad&\left\{\begin{aligned} \hat{\bm{\mu}}_k&=\bm{A}_{k-1}\bm{\mu}_{k-1}\\ \hat{\bm{P}}_k&=\bm{A}_{k-1}\bm{P}_{k-1}\bm{A}_{k-1}^T+\bm{Q}_k\\ \end{aligned}\right.\\ 量测更新\quad&\left\{\begin{aligned} \bm{K}&=\hat{\bm{P}}_k\bm{H}_k^T\left(\bm{H}_k\hat{\bm{P}}_k\bm{H}^T+\bm{R}_k\right)^{-1}\\ \tilde{\bm{\mu}}_k&=\hat{\bm{\mu}}+ \bm{K}\left(\bm{z}_k-\bm{H}_k\hat{\bm{\mu}}_k\right)\\ \tilde{\bm{P}}_k&=\hat{\bm{P}}_k-\bm{K}\bm{H}_k\hat{\bm{P}}_k \end{aligned}\right. \end{aligned}
一步预测量测更新{μ^kP^k=Ak−1μk−1=Ak−1Pk−1Ak−1T+Qk⎩⎪⎪⎪⎨⎪⎪⎪⎧Kμ~kP~k=P^kHkT(HkP^kHT+Rk)−1=μ^+K(zk−Hkμ^k)=P^k−KHkP^k
在推导经典Kalman滤波的过程中,我们用到了线性系统模型和Gaussian分布两个假设中。其中Gaussian假设在大多数情况下都可以默认是合理的,但线性模型假设则并不符合实际生活中的大多数情况。因此后续我们将舍弃线性模型假设,从非线性的角度与进一步看贝叶斯滤波的特殊形式(例如EKF、UKF等)。