参考论文:
http://www.cl.cam.ac.uk/~rmf25/papers/Understanding%20the%20Basis%20of%20the%20Kalman%20Filter.pdf
知乎上Kent Zeng博士的回答言简意赅,当时看了后觉得醍醐灌顶,但是还是想自己推导一遍,所以就参照了上面这篇论文。
这篇博客也是为了练习markdown的语法,所以大神可以略过,有错误请指正,求轻喷:-D
1.卡尔曼滤波典型应用:
(1)平滑噪声数据;
(2)参数估计。
(3)实例:阿波罗计划,卫星导航设备,智能手机,电脑游戏。
2.高斯分布的重要特性: 两个高斯分布的乘积仍然是一个高斯分布。
3.数学模型
(1)运动方程:
x
t
=
F
t
x
t
−
1
+
B
t
u
t
+
w
t
(1)
\boldsymbol x_{t}=\boldsymbol F_{t}\boldsymbol x_{t-1}+\boldsymbol B_{t}\boldsymbol u_{t}+\boldsymbol w_{t} \qquad\text{(1)}
xt=Ftxt−1+Btut+wt(1)
x
t
\boldsymbol x_{t}
xt——状态向量,包含系统有意义的项,例如t时刻的位置,速度,朝向等。
u
t
\boldsymbol u_{t}
ut——控制输入向量,例如航向角,节流阀设置,抱闸力等。
F
t
\boldsymbol F_{t}
Ft——状态转换矩阵,t-1时刻的状态对t时刻的系统状态的影响,例如t-1时刻的位置和速度都会影响t时刻的系统状态。
B
t
\boldsymbol B_{t}
Bt——控制输入矩阵,控制输入参数对状态向量的影响。例如,节流阀的设置对系统速度和位置的影响。
w
t
\boldsymbol w_{t}
wt——状态向量中每个参数的过程噪声。该噪声是一个零均值多元高斯正太分布,协方差矩阵为
Q
t
\boldsymbol Q_t
Qt。
(2)测量方程:
z
t
=
H
t
x
t
+
v
t
(2)
\boldsymbol z_{t}=\boldsymbol H_{t}\boldsymbol x_{t}+\boldsymbol v_{t}\qquad\text{(2)}
zt=Htxt+vt(2)
z
t
\boldsymbol z_{t}
zt——测量向量。
H
t
\boldsymbol H_{t}
Ht——转换矩阵,将状态向量参数映射到测量域上。
v
t
\boldsymbol v_{t}
vt——测量向量噪声。和过程噪声一样,该噪声也是零均值的高斯白噪声,协方差矩阵为
R
t
\boldsymbol R_{t}
Rt。
4.实例推导
实例:一维的跟踪问题,火车沿着铁轨运动。
状态向量
x
t
\boldsymbol x_t
xt包含火车的位置和速度:
x
t
=
(
x
t
x
t
˙
)
x_{t}=\begin{pmatrix} x_{t} \\ \dot{x_{t}} \\ \end{pmatrix}
xt=(xtxt˙)
列车驱动可能会施加刹车或者加速输入给系统,可以用牛顿方程,用一个外力
f
t
f_{t}
ft和列车质量m表示,控制向量
u
t
\boldsymbol u_{t}
ut为:
u
t
=
f
t
m
\boldsymbol u_{t}=\frac{f_{t}}{m}
ut=mft
∆t时间段内,驱动力和列车的位置和速度的关系可以列为如下方程:
x
t
=
x
t
−
1
+
(
x
t
−
1
˙
×
Δ
t
)
+
f
t
(
Δ
t
)
2
m
x_{t}=x_{t-1}+(\dot{x_{t-1}}\times\Delta t)+\frac{f_{t}(\Delta t)^2}{m}
xt=xt−1+(xt−1˙×Δt)+mft(Δt)2
x
t
˙
=
x
t
−
1
˙
+
f
t
Δ
t
2
m
\dot{x_t}=\dot{x_{t-1}}+\frac{f_{t}\Delta t}{2m}
xt˙=xt−1˙+2mftΔt
这些线性方程可以写为如下矩阵形式:
(
x
t
x
t
˙
)
=
(
1
Δ
t
0
1
)
(
x
t
−
1
x
t
−
1
˙
)
+
(
(
Δ
t
)
2
2
Δ
t
)
f
t
m
\begin{pmatrix} x_{t} \\ \dot{x_t}\\ \end{pmatrix} =\begin{pmatrix} 1 & \Delta t\\ 0 & 1\\ \end{pmatrix} \begin{pmatrix} x_{t-1} \\ \dot{x_t-1}\\ \end{pmatrix}+\begin{pmatrix} \frac{(\Delta t)^2}{2}\\ \Delta t\\ \end{pmatrix} \frac{f_t}{m}
(xtxt˙)=(10Δt1)(xt−1xt−1˙)+(2(Δt)2Δt)mft
对照方程(1)
x
t
=
F
t
x
t
−
1
+
B
t
u
t
+
w
t
x_{t}=F_{t}x_{t-1}+B_{t}u_{t}+w_{t}
xt=Ftxt−1+Btut+wt,可以得到:
F
t
=
(
1
Δ
t
0
1
)
a
n
d
B
t
=
(
(
Δ
t
)
2
2
Δ
t
)
\boldsymbol F_{t}=\begin{pmatrix} 1&\Delta t \\ 0&1\end{pmatrix} and \quad \boldsymbol B_{t}=\begin{pmatrix} \frac{(\Delta t)^2}{2} \\ \Delta t\end{pmatrix}
Ft=(10Δt1)andBt=(2(Δt)2Δt)
系统的真实状态
x
t
x_{t}
xt不能直接测量,卡尔曼滤波提供可以确定估计量
x
t
x_{t}
xt的算法,通过结合系统模型和确定值或者线性方程的噪声参数。状态向量的参数估计值可以通过概率密度函数提供,而不是离散值。卡尔曼滤波是基于高斯概率密度函数的,为了完整描述高斯方程,我们需要知道他们的变量协方差,这些都写在矩阵
P
t
P_{t}
Pt中,
P
t
P_t
Pt的主对角线上的元素对应状态向量的变量,非对角线的元素对应于状态向量的变量与变量之间的协方差。
卡尔曼滤波算法包含两个阶段:预测和更新
标准卡尔曼滤波算法的**预测过程**为:
x
t
∣
t
−
1
^
=
F
t
x
t
−
1
∣
t
−
1
^
+
B
t
u
t
(3)
\hat{\boldsymbol x_{t|t-1}}=\boldsymbol F_{t}\hat{\boldsymbol x_{t-1|t-1}}+\boldsymbol B_{t}\boldsymbol u_{t}\qquad\text{(3)}
xt∣t−1^=Ftxt−1∣t−1^+Btut(3)
P
t
∣
t
−
1
=
F
t
P
t
−
1
∣
t
−
1
F
t
T
+
Q
t
(4)
\boldsymbol P_{t|t-1}=\boldsymbol F_{t}\boldsymbol P_{t-1|t-1}\boldsymbol F^{\boldsymbol T}_{t}+\boldsymbol Q_t\qquad\text{(4)}
Pt∣t−1=FtPt−1∣t−1FtT+Qt(4)
其中,Q_t是过程噪声的协方差,也就是控制噪声。前一部分是对(3)式的推导,下面推导(4)式。
未知的真值
x
t
x_t
xt的预测值
x
^
t
∣
t
−
1
\hat{x}_{t|t-1}
x^t∣t−1的方差可以写为:
P
t
∣
t
−
1
=
E
[
(
x
t
−
x
^
t
∣
t
−
1
)
(
x
t
−
x
^
t
∣
t
−
1
)
T
]
P_{t|t-1}=E[(x_t-\hat{x}_{t|t-1})(x_t-\hat{x}_{t|t-1})^T]
Pt∣t−1=E[(xt−x^t∣t−1)(xt−x^t∣t−1)T]
看下(1)式
x
t
=
F
t
x
t
−
1
+
B
t
u
t
+
w
t
x_{t}=F_{t}x_{t-1}+B_{t}u_{t}+w_{t}
xt=Ftxt−1+Btut+wt,以及(3)式,可以得到:
x
t
−
x
^
t
∣
t
−
1
=
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
+
w
t
x_t-\hat{x}_{t|t-1}=F_t(x_{t-1}-\hat{x}_{t-1|t-1})+w_{t}
xt−x^t∣t−1=Ft(xt−1−x^t−1∣t−1)+wt
⟹
P
t
∣
t
−
1
=
E
[
(
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
+
w
t
)
(
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
+
w
t
)
T
]
=
E
[
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
F
t
T
+
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
w
t
T
+
w
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
F
t
T
+
w
t
w
t
T
]
=
F
t
E
[
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
]
F
t
T
+
F
t
E
[
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
w
t
T
]
+
E
[
w
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
]
F
t
T
+
E
[
w
t
w
t
T
]
\implies P_{t|t-1}=E[(F_t(x_{t-1}-\hat{x}_{t-1|t-1})+w_{t})(F_t(x_{t-1}-\hat{x}_{t-1|t-1})+w_{t})^T]=E[F_t(x_{t-1}-\hat{x}_{t-1|t-1})(x_{t-1}-\hat{x}_{t-1|t-1})^TF_{t}^T+F_t(x_{t-1}-\hat{x}_{t-1|t-1})w_t^T+w_t(x_{t-1}-\hat{x}_{t-1|t-1})^TF_t^T+w_tw_t^T]=F_tE[(x_{t-1}-\hat{x}_{t-1|t-1})(x_{t-1}-\hat{x}_{t-1|t-1})^T]F_t^T+F_tE[(x_{t-1}-\hat{x}_{t-1|t-1})w_t^T]+E[w_t(x_{t-1}-\hat{x}_{t-1|t-1})^T]F_t^T+E[w_tw_t^T]
⟹Pt∣t−1=E[(Ft(xt−1−x^t−1∣t−1)+wt)(Ft(xt−1−x^t−1∣t−1)+wt)T]=E[Ft(xt−1−x^t−1∣t−1)(xt−1−x^t−1∣t−1)TFtT+Ft(xt−1−x^t−1∣t−1)wtT+wt(xt−1−x^t−1∣t−1)TFtT+wtwtT]=FtE[(xt−1−x^t−1∣t−1)(xt−1−x^t−1∣t−1)T]FtT+FtE[(xt−1−x^t−1∣t−1)wtT]+E[wt(xt−1−x^t−1∣t−1)T]FtT+E[wtwtT]
需要注意,状态估计误差与控制过程噪声是不相关的,因此:
E
[
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
w
t
T
]
+
E
[
w
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
]
=
0
E[(x_{t-1}-\hat{x}_{t-1|t-1})w_t^T]+E[w_t(x_{t-1}-\hat{x}_{t-1|t-1})^T]=0
E[(xt−1−x^t−1∣t−1)wtT]+E[wt(xt−1−x^t−1∣t−1)T]=0
因此:
P
t
∣
t
−
1
=
E
[
F
t
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
(
x
t
−
1
−
x
^
t
−
1
∣
t
−
1
)
T
F
t
T
+
w
t
w
t
T
]
P_{t|t-1}=E[F_t(x_{t-1}-\hat{x}_{t-1|t-1})(x_{t-1}-\hat{x}_{t-1|t-1})^TF_{t}^T+w_tw_t^T]
Pt∣t−1=E[Ft(xt−1−x^t−1∣t−1)(xt−1−x^t−1∣t−1)TFtT+wtwtT]
⟹
P
t
∣
t
−
1
=
F
P
t
−
1
∣
t
−
1
F
T
+
Q
t
\implies P_{t|t-1}=FP_{t-1|t-1}F^T+Q_t
⟹Pt∣t−1=FPt−1∣t−1FT+Qt
标准卡尔曼滤波算法的**测量更新过程**为:
x
^
t
∣
t
=
x
^
t
∣
t
−
1
+
K
t
(
z
t
−
H
t
)
x
^
t
∣
t
−
1
(5)
\hat{\boldsymbol x}_{t|t}=\hat{\boldsymbol x}_{t|t-1}+\boldsymbol K_t(\boldsymbol z_t-\boldsymbol H_t)\hat{\boldsymbol x}_{t|t-1}\qquad\text{(5)}
x^t∣t=x^t∣t−1+Kt(zt−Ht)x^t∣t−1(5)
P
t
∣
t
=
P
t
∣
t
−
1
−
K
t
H
t
P
t
∣
t
−
1
(6)
\boldsymbol P_{t|t}=\boldsymbol P_{t|t-1}-\boldsymbol K_t\boldsymbol H_t\boldsymbol P_{t|t-1}\qquad\text{(6)}
Pt∣t=Pt∣t−1−KtHtPt∣t−1(6)
其中:
K
t
=
P
t
∣
t
−
1
H
t
T
(
H
t
P
t
∣
t
−
1
H
t
T
+
R
t
)
−
1
(7)
\boldsymbol K_t=\boldsymbol P_{t|t-1}\boldsymbol H_t^\boldsymbol T(\boldsymbol H_t\boldsymbol P_{t|t-1}\boldsymbol H_t^\boldsymbol T+\boldsymbol R_t)^{-1}\qquad\text{(7)}
Kt=Pt∣t−1HtT(HtPt∣t−1HtT+Rt)−1(7)
Solution:
卡尔曼滤波器推导中,考虑一个简单的一维跟踪问题,比如列车沿着一条铁轨线运动的例子。每一个测量时间点上,我们期望知道列车位置(或者更精确点,是列车顶部天线的安装位置)的最优估计。
已知的信息是:(1)列车上一次的位置和速度;(2)无线电测量系统的测量值。通过将预测值和测量值结合,得到列车定位的最可能估计,如图1所示。
系统的初始状态(t=0s)状态已知,精确度合理,如图2所示,列车的位置是一个高斯分布。
在下一个时刻(t=1s),我们可以基于已知的限制条件估计列车的新位置,例如t=0s时刻的位置和速度,最大可能加速度等。实际中,我们可能还知道控制输入,例如刹车制动器和加速装置的输入。无论哪种清理,我们都可以预估列车的一个新位置,如图3所示,列车的位置用一个新的高斯分布来表示。注意,我们可以看到,图3的高斯分布比图1的高斯分布矮胖了很多,这是因为有噪声在里面,不确定性变大了。数学推导上,可以参照式(1)的推导。方差变大,可以参照式(4)的推导,这表示相对t=0时刻,我们减少了精度,因为任何加速度或减速都会带来噪声影响。
在t=1时刻,我们也用无线电定位系统测量了列车的位置,如图4所示,蓝色的高斯分布代表了这个测量者,通过结合预测值和测量值,我们能得到的一个最优估计值。可以通过把两个高斯分布相乘,如图5所示。
**高斯分布的一个关键特性是:两个高斯分布的乘积仍然是一个高斯分布。**它允许无限多个高斯分布相乘,但是结果并不会将高斯分布的项变复杂。因此,经过一段时间后,新的概率分布仍然是一个高斯分布,这就是卡尔曼滤波器迭代特性的关键。
下面推导卡尔曼滤波的测量更新过程。
图3中代表预测分布的红色高斯分布可以表达为:
y
1
(
r
;
μ
1
,
σ
1
)
≜
1
2
π
σ
1
2
e
−
(
r
−
μ
1
)
2
2
σ
1
2
(8)
y_1(r;\mu_1,\sigma_1)\triangleq\frac{1}{\sqrt{2\pi\sigma_1^2}}e^{-\frac{(r-\mu_1)^2}{2\sigma_1^2}}\qquad\text{(8)}
y1(r;μ1,σ1)≜2πσ121e−2σ12(r−μ1)2(8)
图4中代表测量分布的蓝色高斯分布可以表达为:
y
2
(
r
;
μ
2
,
σ
2
)
≜
1
2
π
σ
2
2
e
−
(
r
−
μ
2
)
2
2
σ
2
2
(9)
y_2(r;\mu_2,\sigma_2)\triangleq\frac{1}{\sqrt{2\pi\sigma_2^2}}e^{-\frac{(r-\mu_2)^2}{2\sigma_2^2}}\qquad\text{(9)}
y2(r;μ2,σ2)≜2πσ221e−2σ22(r−μ2)2(9)
如图5所示,将两个高斯分布相乘,新的高斯分布表达了预测和更新的融合结果,而且系统当前估计的最优值,可以由两个高斯函数的乘积给出:
y
1
(
r
;
μ
1
,
σ
1
,
μ
2
,
σ
2
)
≜
1
2
π
σ
1
2
e
−
(
r
−
μ
1
)
2
2
σ
1
2
1
2
π
σ
2
2
e
−
(
r
−
μ
2
)
2
2
σ
2
2
=
1
2
π
σ
1
2
σ
2
2
e
−
(
(
r
−
μ
1
)
2
2
σ
1
2
+
(
r
−
μ
2
)
2
2
σ
2
2
)
(10)
y_1(r;\mu_1,\sigma_1,\mu_2,\sigma_2)\triangleq\frac{1}{\sqrt{2\pi\sigma_1^2}}e^{-\frac{(r-\mu_1)^2}{2\sigma_1^2}}\frac{1}{\sqrt{2\pi\sigma_2^2}}e^{-\frac{(r-\mu_2)^2}{2\sigma_2^2}}=\frac{1}{\sqrt{2\pi\sigma_1^2\sigma_2^2}}e^{-(\frac{(r-\mu_1)^2}{2\sigma_1^2}+\frac{(r-\mu_2)^2}{2\sigma_2^2})}\qquad\text{(10)}
y1(r;μ1,σ1,μ2,σ2)≜2πσ121e−2σ12(r−μ1)22πσ221e−2σ22(r−μ2)2=2πσ12σ221e−(2σ12(r−μ1)2+2σ22(r−μ2)2)(10)
将上式的二次项展开,然后整式可以重写为:
y
f
u
s
e
d
(
r
;
μ
f
u
s
e
d
,
σ
f
u
s
e
d
)
≜
1
2
π
σ
f
u
s
e
d
2
e
−
(
r
−
μ
f
u
s
e
d
)
2
2
σ
f
u
s
e
d
2
(11)
y_{fused}(r;\mu_{fused},\sigma_{fused})\triangleq\frac{1}{\sqrt{2\pi\sigma_{fused}^2}}e^{-\frac{(r-\mu_{fused})^2}{2\sigma_{fused}^2}}\qquad\text{(11)}
yfused(r;μfused,σfused)≜2πσfused21e−2σfused2(r−μfused)2(11)
其中,
μ
f
u
s
e
d
=
μ
1
σ
2
2
+
μ
2
σ
1
2
σ
1
2
+
σ
2
2
=
μ
1
+
σ
1
2
(
μ
2
−
μ
1
)
σ
1
2
+
σ
2
2
(12)
\mu_{fused}=\frac{\mu_1\sigma_2^2+\mu_2\sigma_1^2}{\sigma_1^2+\sigma_2^2}=\mu_1+\frac{\sigma_1^2(\mu_2-\mu_1)}{\sigma_1^2+\sigma_2^2}\qquad\text{(12)}
μfused=σ12+σ22μ1σ22+μ2σ12=μ1+σ12+σ22σ12(μ2−μ1)(12)
σ
f
u
s
e
d
2
=
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
σ
1
2
−
σ
1
4
σ
1
2
+
σ
2
2
(13)
\sigma_{fused}^2=\frac{\sigma_1^2\sigma_2^2}{\sigma_1^2+\sigma_2^2}=\sigma_1^2-\frac{\sigma_1^4}{\sigma_1^2+\sigma_2^2}\qquad\text{(13)}
σfused2=σ12+σ22σ12σ22=σ12−σ12+σ22σ14(13)
上面两个方程表示了卡尔曼滤波器的测量更新步骤,之后会详细展示。然而,为了展示一个更一般的情况,我们需要对这个例子扩展一下。
在上述例子中,是假设预测和更新在相同的坐标系和相同的单位下进行的,这样就形成了更简洁的预测和更新步骤。然后实际中,很重要的是将预测和更新都映射到同一个域中。在这个例子中,列车的位置直接预测为一个沿着铁轨线的距离,单位是米,但是时间测量单位是秒s。为了允许将测量和更新的概率分布相乘,一个值必须转换到另一个域中,而常规做法是,将预测值映射到测量域中,通过转换矩阵
H
t
H_t
Ht。
现在重新看下公式(8)和公式(9),这两个式子都是让
y
1
y_1
y1和
y
2
y_2
y2表示沿着轨道的值,单位是米。现在,将
y
2
y_2
y2表示为,处在x=0位置处的无线电发射装置,将信号发射到列车顶部的无线电所用的飞行时间。空间域分布
y
1
y_1
y1通过光速因子c映射到测量域上,因此公式(8)和(9)可以重写为:
y
1
(
r
;
μ
1
,
σ
1
,
c
)
≜
1
2
π
(
σ
1
c
)
2
e
−
(
r
−
μ
1
c
)
2
2
(
σ
1
c
)
2
(14)
y_1(r;\mu_1,\sigma_1,c)\triangleq\frac{1}{\sqrt{2\pi(\frac{\sigma_1}{c})^2}}e^{-\frac{(r-\frac{\mu_1}{c})^2}{2(\frac{\sigma_1}{c})^2}}\qquad\text{(14)}
y1(r;μ1,σ1,c)≜2π(cσ1)21e−2(cσ1)2(r−cμ1)2(14)
图4中代表测量分布的蓝色高斯分布可以表达为:
y
2
(
r
;
μ
2
,
σ
2
)
≜
1
2
π
σ
2
2
e
−
(
r
−
μ
2
)
2
2
σ
2
2
(15)
y_2(r;\mu_2,\sigma_2)\triangleq\frac{1}{\sqrt{2\pi\sigma_2^2}}e^{-\frac{(r-\mu_2)^2}{2\sigma_2^2}}\qquad\text{(15)}
y2(r;μ2,σ2)≜2πσ221e−2σ22(r−μ2)2(15)
现在,两个分布都被定义在测量域中,无线电信号沿着时间轴s轴传播,测量单位为秒。按照之前的推导结果,可以发现:
μ
f
u
s
e
d
c
=
μ
1
c
+
(
σ
1
c
)
2
(
μ
2
−
μ
1
c
)
(
σ
1
c
)
2
+
σ
2
2
\frac{\mu_{fused}}{c}=\frac{\mu_1}{c}+\frac{(\frac{\sigma_1}{c})^2(\mu_2-\frac{\mu_1}{c})}{(\frac{\sigma_1}{c})^2+\sigma_2^2}
cμfused=cμ1+(cσ1)2+σ22(cσ1)2(μ2−cμ1)
μ
f
u
s
e
d
=
μ
1
+
(
σ
1
2
c
)
+
σ
1
2
(
μ
2
−
μ
1
)
σ
1
2
+
σ
2
2
(16)
\mu_{fused}=\mu_1+(\frac{\frac{\sigma_1^2}{c}}{})+\frac{\sigma_1^2(\mu_2-\mu_1)}{\sigma_1^2+\sigma_2^2}\qquad\text{(16)}
μfused=μ1+(cσ12)+σ12+σ22σ12(μ2−μ1)(16)
令
H
=
1
c
H=\frac{1}{c}
H=c1,
K
=
H
σ
2
H
2
σ
1
2
+
σ
2
2
K=\frac{H\sigma^2}{H^2\sigma_1^2+\sigma_2^2}
K=H2σ12+σ22Hσ2,从而得到:
μ
f
u
s
e
d
=
μ
1
+
K
⋅
(
μ
2
−
H
μ
1
)
(17)
\mu_{fused}=\mu_1+K\cdot(\mu_2-H\mu_1)\qquad\text{(17)}
μfused=μ1+K⋅(μ2−Hμ1)(17)
类似的,可以得到融合后的方差:
σ
f
u
s
e
d
2
c
2
=
(
σ
1
c
)
2
−
(
σ
1
c
)
4
(
σ
1
c
)
2
+
σ
2
2
\frac{\sigma_{fused}^2}{c^2}=(\frac{\sigma_1}{c})^2-\frac{(\frac{\sigma_1}{c})^4}{(\frac{\sigma_1}{c})^2+\sigma_2^2}
c2σfused2=(cσ1)2−(cσ1)2+σ22(cσ1)4
⇒
σ
f
u
s
e
d
2
=
σ
1
2
−
(
σ
1
2
c
(
σ
1
c
)
2
+
σ
2
2
)
σ
1
2
c
=
σ
1
2
−
K
H
σ
1
2
(18)
\Rightarrow\sigma_{fused}^2=\sigma_1^2-\left(\frac{\frac{\sigma_1^2}{c}}{\left(\frac{\sigma_1}{c}\right)^2+\sigma_2^2}\right)\frac{\sigma_1^2}{c}=\sigma_1^2-KH\sigma_1^2\qquad\text{(18)}
⇒σfused2=σ12−((cσ1)2+σ22cσ12)cσ12=σ12−KHσ12(18)
现在,和Kalman滤波器的更新方程
(
5
)
(
6
)
(
7
)
(5)(6)(7)
(5)(6)(7)对比一下,可以得到:
- μ f u s e d → x ^ t ∣ t \mu_{fused}\rightarrow\hat{\boldsymbol x}_{t|t} μfused→x^t∣t融合后的状态向量;
- μ 1 → x ^ t ∣ t − 1 \mu_1\rightarrow\hat{\boldsymbol x}_{t|t-1} μ1→x^t∣t−1融合前的状态向量,也就是预测的状态向量;
- σ 1 2 → P t ∣ t \sigma_1^2\rightarrow \boldsymbol P_{t|t} σ12→Pt∣t数据融合后的协方差矩阵(置信度);
- σ 1 2 → P t ∣ t − 1 \sigma_1^2\rightarrow \boldsymbol P_{t|t-1} σ12→Pt∣t−1数据融合前的协方差矩阵(置信度);
- μ 2 → z t \mu_2\rightarrow \boldsymbol z_t μ2→zt观测向量;
- σ 2 2 → R t \sigma_2^2\rightarrow \boldsymbol R_t σ22→Rt测量噪声的矩阵(置信度);
- H → H t H\rightarrow \boldsymbol H_t H→Ht转换矩阵,用于将状态向量参数映射到测量域;
-
K
=
H
σ
1
2
H
2
σ
1
2
+
σ
2
2
→
K
t
=
P
t
∣
t
−
1
H
t
T
(
H
t
P
t
∣
t
−
1
H
t
T
+
R
t
)
−
1
K=\frac{H\sigma_1^2}{H^2\sigma_1^2+\sigma_2^2}\rightarrow \boldsymbol K_t=\boldsymbol P_{t|t-1}\boldsymbol H_t^\boldsymbol T(\boldsymbol H_t \boldsymbol P_{t|t-1} \boldsymbol H_t^{\boldsymbol T}+\boldsymbol R_t)^{-1}
K=H2σ12+σ22Hσ12→Kt=Pt∣t−1HtT(HtPt∣t−1HtT+Rt)−1Kalman增益。
现在,可以很容易观察标准Kalman滤波方程和(17)(18)之间的关系:
μ f u s e d = μ 1 + ( H σ 1 2 H 2 σ 1 2 + σ 2 2 ) ⋅ ( μ 2 − H μ 1 ) \mu_{fused}=\mu_1+\left(\frac{H\sigma_1^2}{H^2\sigma_1^2+\sigma_2^2}\right)\cdot (\mu_2-H\mu_1) μfused=μ1+(H2σ12+σ22Hσ12)⋅(μ2−Hμ1)
→ x ^ t ∣ t = x ^ t ∣ t − 1 + K t ( z t = H t x ^ t ∣ t − 1 ) \rightarrow \hat{\boldsymbol x}_{t|t}=\hat{\boldsymbol x}_{t|t-1}+\boldsymbol K_t(\boldsymbol z_t=\boldsymbol H_t\hat{\boldsymbol x}_{t|t-1}) →x^t∣t=x^t∣t−1+Kt(zt=Htx^t∣t−1)
σ f u s e d 2 = σ 1 2 − ( H σ 1 2 H 2 σ 1 2 + σ 2 2 ) H σ 1 2 \sigma_{fused}^2 = \sigma_1^2-\left(\frac{H\sigma_1^2}{H^2\sigma_1^2+\sigma_2^2}\right)H\sigma_1^2 σfused2=σ12−(H2σ12+σ22Hσ12)Hσ12
→ P t ∣ t = P t ∣ t − 1 − K t H t P t ∣ t − 1 \rightarrow \boldsymbol P_{t|t} = \boldsymbol P_{t|t-1}-\boldsymbol K_t \boldsymbol H_t \boldsymbol P_{t|t-1} →Pt∣t=Pt∣t−1−KtHtPt∣t−1