最优预测、估计与平滑之间的关系:
三种平滑方式:
函数模型和随机模型
{
X
k
=
Φ
k
/
k
−
1
X
k
−
1
+
Γ
k
−
1
W
k
−
1
Z
k
=
H
k
X
k
+
V
k
{
E
[
W
k
]
=
0
,
E
[
W
k
W
j
T
]
=
Q
k
δ
k
j
E
[
V
k
]
=
0
,
E
[
V
k
V
j
T
]
=
R
k
δ
k
j
E
[
W
k
V
j
T
]
=
0
\left\{\begin{array} { l } { \boldsymbol { X } _ { k } = \boldsymbol { \Phi } _ { k / k - 1 } \boldsymbol { X } _ { k - 1 } + \boldsymbol { \Gamma } _ { k - 1 } \boldsymbol { W } _ { k - 1 } } \\ { \boldsymbol { Z } _ { k } = \boldsymbol { H } _ { k } \boldsymbol { X } _ { k } + \boldsymbol { V } _ { k } } \end{array} \quad \left\{\begin{array}{ll} \mathrm{E}\left[\boldsymbol{W}_{k}\right]=\mathbf{0}, & \mathrm{E}\left[\boldsymbol{W}_{k} \boldsymbol{W}_{j}^{\mathrm{T}}\right]=\boldsymbol{Q}_{k} \delta_{k j} \\ \mathrm{E}\left[\boldsymbol{V}_{k}\right]=\mathbf{0}, & \mathrm{E}\left[\boldsymbol{V}_{k} \boldsymbol{V}_{j}^{\mathrm{T}}\right]=\boldsymbol{R}_{k} \delta_{k j} \\ \mathrm{E}\left[\boldsymbol{W}_{k} \boldsymbol{V}_{j}^{\mathrm{T}}\right]=\mathbf{0} & \end{array}\right.\right.
⎩⎪⎪⎪⎨⎪⎪⎪⎧Xk=Φk/k−1Xk−1+Γk−1Wk−1Zk=HkXk+Vk⎩⎪⎪⎪⎨⎪⎪⎪⎧E[Wk]=0,E[Vk]=0,E[WkVjT]=0E[WkWjT]=QkδkjE[VkVjT]=Rkδkj
将量测序列分成两段:
Z
ˉ
M
=
[
Z
1
Z
2
⋯
Z
j
⏟
Z
‾
1
⋅
j
Z
j
+
1
Z
j
+
2
⋯
Z
M
⏟
Z
ˉ
j
+
1
+
M
]
T
\bar{Z}_{M}=\underbrace{\left[\boldsymbol{Z}_{1} \boldsymbol{Z}_{2} \cdots \boldsymbol{Z}_{j}\right.}_{\overline{\boldsymbol{Z}}_{\mathrm{1} \cdot j}} \underbrace{\mathbf{Z}_{j+1} \boldsymbol{Z}_{j+2} \cdots \boldsymbol{Z}_{M}}_{\bar{Z}_{j+1+M}}]^{\mathrm{T}}
ZˉM=Z1⋅j
[Z1Z2⋯ZjZˉj+1+M
Zj+1Zj+2⋯ZM]T
先看固定点平滑,固定区间平滑只是将点的范围扩大了,将点前后平移即可
1.正向滤波(forward)
通过前面一段做正向滤波,就是普通的Kalman滤波,下标都加了
f
f
f 表示正向,:
{
X
^
f
,
k
/
k
−
1
=
Φ
k
/
k
−
1
X
^
f
,
k
−
1
P
f
,
k
/
k
−
1
=
Φ
k
/
k
−
1
P
f
,
k
−
1
Φ
k
/
k
−
1
T
+
Γ
k
−
1
Q
k
−
1
Γ
k
−
1
T
K
f
,
k
=
P
f
,
k
/
k
−
1
H
k
T
(
H
k
P
f
,
k
/
k
−
1
H
k
T
+
R
k
)
−
1
k
=
1
,
2
,
⋯
,
j
X
^
f
,
k
=
X
^
f
,
k
/
k
−
1
+
K
f
,
k
(
Z
k
−
H
k
X
^
f
,
k
/
k
−
1
)
P
f
,
k
=
(
I
−
K
f
,
k
H
k
)
P
f
,
k
/
k
−
1
\left\{\begin{array}{l} \hat{\boldsymbol{X}}_{f, k / k-1}=\boldsymbol{\Phi}_{k / k-1} \hat{\boldsymbol{X}}_{f, k-1} \\ \boldsymbol{P}_{f, k / k-1}=\boldsymbol{\Phi}_{k / k-1} \boldsymbol{P}_{f, k-1} \boldsymbol{\Phi}_{k / k-1}^{\mathrm{T}}+\boldsymbol{\Gamma}_{k-1} \boldsymbol{Q}_{k-1} \boldsymbol{\Gamma}_{k-1}^{\mathrm{T}} \\ \boldsymbol{K}_{f, k}=\boldsymbol{P}_{f, k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}\left(\boldsymbol{H}_{k} \boldsymbol{P}_{f, k / k-1} \boldsymbol{H}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}\right)^{-1} \quad k=1,2, \cdots, j \\ \hat{\boldsymbol{X}}_{f, k}=\hat{\boldsymbol{X}}_{f, k / k-1}+\boldsymbol{K}_{f, k}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{f, k / k-1}\right) \\ \boldsymbol{P}_{f, k}=\left(\boldsymbol{I}-\boldsymbol{K}_{f, k} \boldsymbol{H}_{k}\right) \boldsymbol{P}_{f, k / k-1} \end{array}\right.
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧X^f,k/k−1=Φk/k−1X^f,k−1Pf,k/k−1=Φk/k−1Pf,k−1Φk/k−1T+Γk−1Qk−1Γk−1TKf,k=Pf,k/k−1HkT(HkPf,k/k−1HkT+Rk)−1k=1,2,⋯,jX^f,k=X^f,k/k−1+Kf,k(Zk−HkX^f,k/k−1)Pf,k=(I−Kf,kHk)Pf,k/k−1
求得
j
j
j 时刻估计
X
^
f
,
j
,
P
f
,
j
\hat{\boldsymbol{X}}_{f, j}, \boldsymbol{P}_{f, j}
X^f,j,Pf,j
2.反向滤波(backward)
从后往前推,需要对Kalman滤波模型改写:把状态转移矩阵变为求逆的形式,表示由后时刻预测前时刻:
{
X
k
=
Φ
k
/
k
−
1
X
k
−
1
+
Γ
k
−
1
W
k
−
1
Z
k
=
H
k
X
k
+
V
k
⟹
{
X
k
=
Φ
k
+
1
/
k
−
1
X
k
+
1
−
Φ
k
+
1
/
k
−
1
Γ
k
W
k
Z
k
=
H
k
X
k
+
V
k
\left\{\begin{array}{l}\boldsymbol{X}_{k}={\color{red}\boldsymbol{\Phi}_{k / k-1}} \boldsymbol{X}_{k-1}+\boldsymbol{\Gamma}_{k-1} \boldsymbol{W}_{k-1} \\ \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}_{k}+\boldsymbol{V}_{k}\end{array} \Longrightarrow\left\{\begin{array}{l}\boldsymbol{X}_{k}={\color{red}\boldsymbol{\Phi}_{k+1 / k}^{-1}} \boldsymbol{X}_{k+1}-{\color{red}\boldsymbol{\Phi}_{k+1 / k}^{-1}} \boldsymbol{\Gamma}_{k} \boldsymbol{W}_{k} \\ \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}_{k}+\boldsymbol{V}_{k}\end{array}\right.\right.
{Xk=Φk/k−1Xk−1+Γk−1Wk−1Zk=HkXk+Vk⟹{Xk=Φk+1/k−1Xk+1−Φk+1/k−1ΓkWkZk=HkXk+Vk
令
Φ
k
+
1
/
k
∗
=
Φ
k
+
1
/
k
−
1
\boldsymbol{\Phi}_{k+1 / k}^{*}=\boldsymbol{\Phi}_{k+1 / k}^{-1}
Φk+1/k∗=Φk+1/k−1 ,
Γ
k
∗
=
−
Φ
k
+
1
/
k
−
1
Γ
k
\boldsymbol{\Gamma}_{k}^{*}=-\boldsymbol{\Phi}_{k+1 / k}^{-1} \boldsymbol{\Gamma}_{k}
Γk∗=−Φk+1/k−1Γk ,
W
k
+
1
∗
=
W
k
\boldsymbol{W}_{k+1}^{*}=\boldsymbol{W}_{k}
Wk+1∗=Wk ,得新的函数模型:
{
X
k
=
Φ
k
+
1
/
k
∗
X
k
+
1
+
Γ
k
∗
W
k
+
1
∗
Z
k
=
H
k
X
k
+
V
k
\left\{\begin{array}{l} \boldsymbol{X}_{k}=\boldsymbol{\Phi}_{k+1 / k}^{*} \boldsymbol{X}_{k+1}+\boldsymbol{\Gamma}_{k}^{*} \boldsymbol{W}_{k+1}^{*} \\ \boldsymbol{Z}_{k}=\boldsymbol{H}_{k} \boldsymbol{X}_{k}+\boldsymbol{V}_{k} \end{array}\right.
{Xk=Φk+1/k∗Xk+1+Γk∗Wk+1∗Zk=HkXk+Vk
对新的函数模型做Kalman滤波:
{
X
^
b
,
k
/
k
+
1
=
Φ
k
/
k
+
1
∗
X
^
b
,
k
+
1
P
b
,
k
/
k
+
1
=
Φ
k
/
k
+
1
∗
P
b
,
k
+
1
(
Φ
k
/
k
+
1
∗
)
T
+
Γ
k
∗
Q
k
Γ
k
∗
K
b
,
k
=
P
b
,
k
/
k
+
1
H
k
T
(
H
k
P
b
,
k
/
k
+
1
H
k
T
+
R
k
)
−
1
k
=
M
−
1
,
M
−
2
,
⋯
,
j
+
1
X
^
b
,
k
=
X
^
b
,
k
/
k
+
1
+
K
b
,
k
(
Z
k
−
H
k
X
^
b
,
k
/
k
+
1
)
P
b
,
k
=
(
I
−
K
b
,
k
H
k
)
P
b
,
k
/
k
+
1
\left\{\begin{array}{l} \hat{\boldsymbol{X}}_{b, k / k+1}=\boldsymbol{\Phi}_{k / k+1}^{*} \hat{\boldsymbol{X}}_{b, k+1} \\ \boldsymbol{P}_{b, k / k+1}=\boldsymbol{\Phi}_{k / k+1}^{*} \boldsymbol{P}_{b, k+1}\left(\boldsymbol{\Phi}_{k / k+1}^{*}\right)^{\mathrm{T}}+\boldsymbol{\Gamma}_{k}^{*} \boldsymbol{Q}_{k} \boldsymbol{\Gamma}_{k}^{*} \\ \boldsymbol{K}_{b, k}=\boldsymbol{P}_{b, k / k+1} \boldsymbol{H}_{k}^{\mathrm{T}}\left(\boldsymbol{H}_{k} \boldsymbol{P}_{b, k / k+1} \boldsymbol{H}_{k}^{\mathrm{T}}+\boldsymbol{R}_{k}\right)^{-1} \quad k=M-1, M-2, \cdots, j+1 \\ \hat{\boldsymbol{X}}_{b, k}=\hat{\boldsymbol{X}}_{b, k / k+1}+\boldsymbol{K}_{b, k}\left(\boldsymbol{Z}_{k}-\boldsymbol{H}_{k} \hat{\boldsymbol{X}}_{b, k / k+1}\right) \\ \boldsymbol{P}_{b, k}=\left(\boldsymbol{I}-\boldsymbol{K}_{b, k} \boldsymbol{H}_{k}\right) \boldsymbol{P}_{b, k / k+1} \end{array}\right.
⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧X^b,k/k+1=Φk/k+1∗X^b,k+1Pb,k/k+1=Φk/k+1∗Pb,k+1(Φk/k+1∗)T+Γk∗QkΓk∗Kb,k=Pb,k/k+1HkT(HkPb,k/k+1HkT+Rk)−1k=M−1,M−2,⋯,j+1X^b,k=X^b,k/k+1+Kb,k(Zk−HkX^b,k/k+1)Pb,k=(I−Kb,kHk)Pb,k/k+1
求得
j
j
j 时刻反向一步预测
X
^
b
,
j
/
j
+
1
,
P
b
,
j
/
j
+
1
\hat{\boldsymbol{X}}_{b, j / j+1}, \boldsymbol{P}_{b, j / j+1}
X^b,j/j+1,Pb,j/j+1
3、j 时刻固定点信息融合(smoothing)
将利用前面观测值正向滤波得到的观测值
X
^
f
,
j
,
P
f
,
j
\hat{\boldsymbol{X}}_{f, j}, \boldsymbol{P}_{f, j}
X^f,j,Pf,j ,和反向滤波得到的观测值
X
^
b
,
j
/
j
+
1
,
P
b
,
j
/
j
+
1
\hat{\boldsymbol{X}}_{b, j / j+1}, \boldsymbol{P}_{b, j / j+1}
X^b,j/j+1,Pb,j/j+1 做信息融合(加权平均),并且认为两段滤波的结果不相关:
{
X
^
f
,
j
=
X
j
+
Δ
f
,
j
X
^
b
,
j
/
j
+
1
=
X
j
+
Δ
b
,
j
/
j
+
1
{
Δ
f
,
j
∼
N
(
0
,
P
f
,
j
)
,
Δ
b
,
j
/
j
+
1
∼
N
(
0
,
P
b
,
j
/
j
+
1
)
,
cov
(
U
f
,
j
Δ
b
,
j
/
j
+
1
T
)
=
0
⟹
{
P
s
,
j
=
(
P
f
,
j
−
1
+
P
b
,
j
/
j
+
1
−
1
)
−
1
X
^
s
,
j
=
P
s
,
j
(
P
b
,
j
/
j
+
1
−
1
X
^
f
,
j
+
P
f
,
j
−
1
X
^
b
,
j
/
j
+
1
)
\begin{array}{c} \left\{\begin{array} { l } { \hat { \boldsymbol { X } } _ { f , j } = \boldsymbol { X } _ { j } + \boldsymbol { \Delta } _ { f , j } } \\ { \hat { \boldsymbol { X } } _ { b , j / j + 1 } = \boldsymbol { X } _ { j } + \boldsymbol { \Delta } _ { b , j / j + 1 } } \end{array} \quad \left\{\begin{array}{l} \boldsymbol{\Delta}_{f, j} \sim \mathrm{N}\left(\mathbf{0}, \boldsymbol{P}_{f, j}\right), \\ \boldsymbol{\Delta}_{b, j / j+1} \sim \mathrm{N}\left(\mathbf{0}, \boldsymbol{P}_{b, j / j+1}\right), \\ \operatorname{cov}\left(\boldsymbol{U}_{f, j} \boldsymbol{\Delta}_{b, j / j+1}^{\mathrm{T}}\right)=\mathbf{0} \end{array}\right.\right. \\ \Longrightarrow\left\{\begin{array}{l} \boldsymbol{P}_{s, j}=\left(\boldsymbol{P}_{f, j}^{-1}+\boldsymbol{P}_{b, j / j+1}^{-1}\right)^{-1} \\ \hat{\boldsymbol{X}}_{s, j}=\boldsymbol{P}_{s, j}\left(\boldsymbol{P}_{b, j / j+1}^{-1} \hat{\boldsymbol{X}}_{f, j}+\boldsymbol{P}_{f, j}^{-1} \hat{\boldsymbol{X}}_{b, j / j+1}\right) \end{array}\right. \end{array}
⎩⎪⎨⎪⎧X^f,j=Xj+Δf,jX^b,j/j+1=Xj+Δb,j/j+1⎩⎪⎨⎪⎧Δf,j∼N(0,Pf,j),Δb,j/j+1∼N(0,Pb,j/j+1),cov(Uf,jΔb,j/j+1T)=0⟹⎩⎨⎧Ps,j=(Pf,j−1+Pb,j/j+1−1)−1X^s,j=Ps,j(Pb,j/j+1−1X^f,j+Pf,j−1X^b,j/j+1)
4、基于正反向滤波的区间平滑
- 由前往后正向滤波, 获得并存储 X ^ f , j , P f , j ( j = 1 , 2 , ⋯ , M ) \hat{\boldsymbol{X}}_{f, j}, \boldsymbol{P}_{f, j}(j=1,2, \cdots, M) X^f,j,Pf,j(j=1,2,⋯,M);
- 由后往前反向滤波, 获得 X ^ b , j / j + 1 , P b , j / j + 1 \hat{\boldsymbol{X}}_{b, j / j+1}, \boldsymbol{P}_{b, j / j+1} X^b,j/j+1,Pb,j/j+1, 融合获得 X ^ s , j , P s , j \hat{\boldsymbol{X}}_{s, j}, \boldsymbol{P}_{s, j} X^s,j,Ps,j;
- 当 ( j = M − 1 , M − 2 , ⋯ , 1 ) (j=M-1, M-2, \cdots, 1) (j=M−1,M−2,⋯,1) 完成整个区间平滑。
5、RTS区间平滑算法
H.Rauch, F.Tung, C.Striebel, 1965 ,推导比较复杂
不需要时间更新,先由前往后正向滤波, 获得并存储
Φ
j
/
j
−
1
T
,
X
^
f
,
j
/
j
−
1
\boldsymbol{\Phi}_{j / j-1}^{\mathrm{T}}, \hat{\boldsymbol{X}}_{f, j / j-1}
Φj/j−1T,X^f,j/j−1,
P
f
,
j
/
j
−
1
,
X
^
f
,
j
,
P
f
,
j
(
j
=
1
,
2
,
⋯
,
M
)
\boldsymbol{P}_{f, j / j-1}, \hat{\boldsymbol{X}}_{f, j}, \boldsymbol{P}_{f, j}(j=1,2, \cdots, M)
Pf,j/j−1,X^f,j,Pf,j(j=1,2,⋯,M) 再按由后往前的量测顺序执行如下RTS算法:
{
K
s
,
k
=
P
f
,
k
Φ
k
+
1
/
k
T
P
f
,
k
+
1
/
k
−
1
初值
X
^
s
,
M
=
X
^
f
,
M
,
P
s
,
M
=
P
f
,
M
X
^
s
,
k
=
X
^
f
,
k
+
K
s
,
k
(
X
^
s
,
k
+
1
−
X
^
f
,
k
+
1
/
k
)
k
=
M
−
1
,
M
−
2
,
⋯
,
1
P
s
,
k
=
P
f
,
k
+
K
s
,
k
(
P
s
,
k
+
1
−
P
f
,
k
+
1
/
k
)
K
s
,
k
T
\left\{\begin{array}{ll}\boldsymbol{K}_{s, k}=\boldsymbol{P}_{f, k} \boldsymbol{\Phi}_{k+1 / k}^{\mathrm{T}} \boldsymbol{P}_{f, k+1 / k}^{-1} & \text { 初值 } \hat{\boldsymbol{X}}_{s, M}=\hat{\boldsymbol{X}}_{f, M}, \boldsymbol{P}_{s, M}=\boldsymbol{P}_{f, M} \\ \hat{\boldsymbol{X}}_{s, k}=\hat{\boldsymbol{X}}_{f, k}+\boldsymbol{K}_{s, k}\left(\hat{\boldsymbol{X}}_{s, k+1}-\hat{\boldsymbol{X}}_{f, k+1 / k}\right) & k=M-1, M-2, \cdots, 1 \\ \boldsymbol{P}_{s, k}=\boldsymbol{P}_{f, k}+\boldsymbol{K}_{s, k}\left(\boldsymbol{P}_{s, k+1}-\boldsymbol{P}_{f, k+1 / k}\right) \boldsymbol{K}_{s, k}^{\mathrm{T}} & \end{array}\right.
⎩⎪⎨⎪⎧Ks,k=Pf,kΦk+1/kTPf,k+1/k−1X^s,k=X^f,k+Ks,k(X^s,k+1−X^f,k+1/k)Ps,k=Pf,k+Ks,k(Ps,k+1−Pf,k+1/k)Ks,kT 初值 X^s,M=X^f,M,Ps,M=Pf,Mk=M−1,M−2,⋯,1
计算量和正反向滤波的区间平滑差不多,存储量增加不少
6、平滑精度比较
- 可平滑性问题:受系统噪声影响的状态才具可平滑性。随机常数就没有可平滑性。
- 滤波要存的数据量比较大,可能几个G,工程上双向滤波+ P 阵对角线加权平均,可有效降低存储量。