大家好,好久不见,我是小政。读研期间,我的研究方向是协作定位,涉及到多机器人分布式融合,主要用到了卡尔曼滤波,CI融合等概念。卡尔曼滤波我也是研究了很久,一直在思考的问题就是,卡尔曼滤波到底有什么用?如果用笼统的话来解释,那就是:将预测的值和量测的值结合起来,获得更接近真实情况的数值。
卡尔曼滤波公式超详细完整推导
- 一、问题提出
- 二、解决思路
- 三、问题建模
- 1.外部因素
- 2.外部不确定性
- 3.通过量测来细化估计值
- 4.结合高斯
- 5.结合在一起
- 四、卡尔曼滤波五大公式总结
一、问题提出
假设有一个机器人正在往前方行驶,为让机器人实现导航,机器人需要知道自身当前所在的位置,即机器人存在一个位置信息和速度信息的状态 x ⃗ k = ( p ⃗ , v ⃗ ) \vec{x}_k=\left( \vec{p},\vec{v} \right) xk=(p,v)
机器人自身带有GPS传感器,定位精度为10米,但传感器都是存在误差,况且路上可能存在小石子,也会存在阻力,如果机器人稍微偏出几米,那么就可能出现滑到等情况,所以GPS提供的信息存在一定误差。
同时,我们也可以预测机器人的移动轨迹:给它发送指令,让电机按固定速率往一个方向移动,但机器人对于自身的状态是未知的,它可能会出现轮子打滑等情况,所以车轮转动的次数并不能代表机器人实际移动的距离,所以这个距离的预测也是存在误差的。
综合以上两点,GPS传感器测量的信息存在误差,预测的机器人移动距离也存在误差,所以我们能否在这两者基础之上,得到一个效果更好的预测,使得它的准确度比机器人搜集单次预测汇总更好?用卡尔曼滤波,就可以将这个问题解决。
二、解决思路
机器人自身有一个状态,它和位置、速度有关:
x
⃗
=
[
p
v
]
\vec{x}=\left[ \begin{array}{c} p\\ v\\ \end{array} \right]
x=[pv]
卡尔曼滤波假设两个变量(位置 p p p和速度 v v v)是随机的,且符合高斯分布,每个变量有一个均值 μ \mu μ,它是随机分布的中心;有一个方差 σ 2 \sigma ^2 σ2,它衡量组合的不确定性。
如果位置和速度不是相关的,意味着不能从一个变量推导到另一个变量。如果位置和速度是相关的,机器人前往特定的位置就取决于它自身的速度。
这不难理解,如果基于旧位置估计新位置,产生两个结论:如果速度很快,机器人可能移动得更远,所以得到的位置会更远;如果速度很慢,机器人就走不了那么远。
这种关系对目标跟踪来说非常重要,因为它提供了更多信息:一个可以衡量可能性的标准。这就是卡尔曼滤波的目标:从不确定信息中挤出尽可能多的信息!
为了捕获这种相关性,我们用的是协方差矩阵。简而言之,矩阵的每个值是第 i i i个变量和第 j j j个变量之间的相关程度(由于矩阵是对称的, i i i和 j j j的位置可以随便交换)。我们用 Σ \Sigma Σ表示协方差矩阵,在这个例子中,就是 Σ i j \Sigma _{ij} Σij。
三、问题建模
把以上关于状态的信息建模为高斯分布(灰色部分),同时我们还需要获得
k
k
k时刻的两个信息:最佳估计
x
^
k
\hat{x}_k
x^k,协方差矩阵
P
k
P_k
Pk。
x
^
k
=
[
p
v
]
P
k
=
[
Σ
p
p
Σ
p
v
Σ
v
p
Σ
v
v
]
\begin{aligned} \hat{x}_k&=\left[ \begin{array}{c} p\\ v\\ \end{array} \right] \\ P_k&=\left[ \begin{matrix} \Sigma _{pp}& \Sigma _{pv}\\ \Sigma _{vp}& \Sigma _{vv}\\ \end{matrix} \right] \end{aligned}
x^kPk=[pv]=[ΣppΣvpΣpvΣvv]
接着,我们要通过查看当前
k
−
1
k-1
k−1时刻状态来预测
k
k
k时刻的状态。从原始预测中取每一点,将其移动到新的预测位置。如果原始预测正确,系统会移动到新位置。用矩阵
F
k
F_k
Fk表示预测步骤:
用矩阵来预测机器人下一刻的位置和速度:
p
k
=
p
k
−
1
+
△
t
v
k
−
1
v
k
=
v
k
−
1
\begin{aligned} p_k&=p_{k-1}+\bigtriangleup tv_{k-1} \\ v_k&=v_{k-1} \end{aligned}
pkvk=pk−1+△tvk−1=vk−1
转换成矩阵形式:
x
^
k
=
[
1
△
t
0
1
]
x
^
k
−
1
=
F
k
x
^
k
−
1
\begin{aligned} \hat{x}_k&=\left[ \begin{matrix} 1& \bigtriangleup t\\ 0& 1\\ \end{matrix} \right] \hat{x}_{k-1} \\ &=F_k\hat{x}_{k-1} \end{aligned}
x^k=[10△t1]x^k−1=Fkx^k−1
这是预测矩阵,给出机器人下一时刻的状态。但目前还未知协方差矩阵的更新,所以要引出下面等式:将分布中的每个点乘以矩阵
A
A
A,协方差发生如下变化:
C
o
v
(
x
)
=
Σ
C
o
v
(
A
x
)
=
A
Σ
A
T
\begin{aligned} Cov\left( x \right) &=\varSigma \\ Cov\left( Ax \right) &=A\varSigma A^T \end{aligned}
Cov(x)Cov(Ax)=Σ=AΣAT
把该式与上述最佳估计
x
^
k
\hat{x}_k
x^k结合,可得:
x
^
k
=
F
k
x
^
k
−
1
P
k
=
F
k
P
k
−
1
F
k
T
\begin{aligned} \hat{x}_k&=F_k\hat{x}_{k-1} \\ P_k&=F_kP_{k-1}F_{k}^{T} \end{aligned}
x^kPk=Fkx^k−1=FkPk−1FkT
1.外部因素
除了位置与速度,外部因素也会对系统噪声影响,例如模拟火车运动,除了火车自驾系统,列车员可能也会手动调速。在机器人示例中,导航软件也可以发出停止指令。对于这些信息,我们把它作为一个向量 u ⃗ k \vec{u}_k uk,纳入预测系统作为修正。
假设电机速率设置和控制命令是已知的,我们知道机器人的预期加速度
a
a
a。根据运动学基本定理,我们可得:
p
k
=
p
k
−
1
+
△
t
v
k
−
1
+
1
2
a
△
t
2
v
k
=
v
k
−
1
+
a
△
t
\begin{aligned} p_k&=p_{k-1}+\bigtriangleup tv_{k-1}+\frac{1}{2}a\bigtriangleup t^2 \\ v_k&=v_{k-1}+a\bigtriangleup t \end{aligned}
pkvk=pk−1+△tvk−1+21a△t2=vk−1+a△t
转换为矩阵形式:
x
^
k
=
F
k
x
^
k
−
1
+
[
△
t
2
2
△
t
]
a
=
F
k
x
^
k
−
1
+
B
k
u
⃗
k
\begin{aligned} \hat{x}_k&=F_k\hat{x}_{k-1}+\left[ \begin{array}{c} \frac{\bigtriangleup t^2}{2}\\ \bigtriangleup t\\ \end{array} \right] a \\ &=F_k\hat{x}_{k-1}+B_k\vec{u}_k \end{aligned}
x^k=Fkx^k−1+[2△t2△t]a=Fkx^k−1+Bkuk
B k B_k Bk是控制矩阵, u ⃗ k \vec{u}_k uk是控制向量。如果外部环境异常简单,我们可以忽略这部分内容,但是如果添加外部因素后,模型的准确率还是上不去,这又是为什么呢?
2.外部不确定性
当我们监控无人机时,它可能会受到风的影响;当我们跟踪轮式机器人时,它的轮胎可能会打滑,或者粗糙地面会降低它的移速。这些因素是难以掌握的,如果出现其中的任意一种情况,预测结果就难以保障。
这要求我们在每个预测步骤后再加上一些新的不确定性,来模拟和可能存在的所有不确定性:
如上图所示,加上外部不确定性后,
x
^
k
−
1
\hat{x}_{k-1}
x^k−1的每个预测状态都可能会移动到另一点,也就是蓝色的高斯分布会移动到橙色高斯分布的位置,并且具有协方差
Q
k
Q_k
Qk。换句话说,我们把这些不确定影响视为协方差
Q
k
Q_k
Qk的噪声。橙色的高斯分布拥有和原分布相同的均值,但协方差不同。在原式上加入
Q
k
Q_k
Qk:
x
^
k
=
F
k
x
^
k
−
1
+
B
k
u
⃗
k
P
k
=
F
k
P
k
−
1
F
k
T
+
Q
k
\begin{aligned} \hat{x}_k&=F_k\hat{x}_{k-1}+B_k\vec{u}_k \\ P_k&=F_kP_{k-1}F_{k}^{T}+Q_k \end{aligned}
x^kPk=Fkx^k−1+Bkuk=FkPk−1FkT+Qk
这里,新的最佳估计是基于上一时刻最佳估计和已知外部因素校正后得到的预测。新的不确定性是基于上一时刻不确定性和外部环境不确定性得到的预测。现在,有了这些概念,可以把传感器数据输入其中。
3.通过量测来细化估计值
如果存在多个传感器,它们一起提供有关系统状态的信息。传感器可以读取位置,可以读取速度,它能告诉我们关于状态的间接信息——它是状态下产生的一组读数。
请注意,传感器读数的规模和状态的规模不一定相同,所以我们把传感器读数矩阵设为 H k H_k Hk。
把这些分布转换为一般形式:
μ
⃗
s
e
n
s
o
r
=
H
k
x
^
k
Σ
s
e
n
s
o
r
=
H
k
P
k
H
k
T
\begin{aligned} \vec{\mu}_{sensor}&=H_k\hat{x}_k \\ \varSigma _{sensor}&=H_kP_kH_{k}^{T} \end{aligned}
μsensorΣsensor=Hkx^k=HkPkHkT
卡尔曼滤波的一大优点是擅长处理传感器噪声。换句话说,由于种种因素,传感器采集的数据是不准确的,一个状态事实上可以产生多种读数。
我们将这种不确定性(即传感器噪声)的协方差设为 R k R_k Rk,读数的分布均值设为 z k z_k zk。现在我们得到两块高斯分布,一块围绕预测的均值,另一块围绕传感器读数。
如果要生成靠谱预测,模型必须调和这两个信息。也就是说,对于任何可能的读数 ( z 1 , z 2 ) \left( z_1,z_2 \right) (z1,z2),这两种方法预测的状态都有可能是准的,也都有可能是不准的。重点是我们怎么找到这两个准确率。
最简单的方法是两者相乘,两块高斯分布相乘后,我们可以得到它们的重叠部分,这也是会出现最佳估计的区域。换个角度看,它看起来也符合高斯分布:
事实证明,当两个高斯分布和它们各自的均值和协方差矩阵相乘时,会得到一个拥有独立均值和协方差矩阵的新高斯分布。最后剩下的问题就不难解决了:必须有一个公式来从旧的参数中获取这些新参数!
4.结合高斯
让我们从一维看起,设均值为
μ
\mu
μ,方差为
σ
2
\sigma ^2
σ2,一个标准一维高斯钟形曲线方程如下所示:
N
(
x
,
μ
,
σ
)
=
1
σ
2
π
e
−
(
x
−
μ
)
2
2
σ
2
\mathcal{N} \left( x,\mu ,\sigma \right) =\frac{1}{\sigma \sqrt{2\pi}}e^{-\frac{\left( x-\mu \right) ^2}{2\sigma ^2}}
N(x,μ,σ)=σ2π1e−2σ2(x−μ)2
若两个高斯相乘,结果是否还是高斯分布呢?
如图所示红色和绿色分别代表两个独立的高斯分布函数,蓝色为两个分布的乘积,从蓝色形状可以粗略看出乘积结果可能为一个幅值被压缩的高斯分布,期望在
[
μ
1
,
μ
2
]
\left[ \mu _1,\mu _2 \right]
[μ1,μ2]之间。那真的是这样的吗?需要理论的推导来进行证明。
N
(
x
,
μ
′
,
σ
′
)
=
N
(
x
,
μ
1
,
σ
1
)
⋅
N
(
x
,
μ
2
,
σ
2
)
=
1
σ
1
2
π
e
−
(
x
−
μ
1
)
2
2
σ
1
2
1
σ
2
2
π
e
−
(
x
−
μ
2
)
2
2
σ
2
2
=
1
2
π
σ
1
σ
2
e
−
[
(
x
−
μ
1
)
2
2
σ
1
2
+
(
x
−
μ
2
)
2
2
σ
2
2
]
\begin{aligned} \mathcal{N} \left( x,\mu \prime,\sigma \prime \right) &=\mathcal{N} \left( x,\mu _1,\sigma _1 \right) \cdot \mathcal{N} \left( x,\mu _2,\sigma _2 \right) \\ &=\frac{1}{\sigma _1\sqrt{2\pi}}e^{-\frac{\left( x-\mu _1 \right) ^2}{2\sigma _{1}^{2}}}\frac{1}{\sigma _2\sqrt{2\pi}}e^{-\frac{\left( x-\mu _2 \right) ^2}{2\sigma _{2}^{2}}} \\ &=\frac{1}{2\pi \sigma _1\sigma _2}e^{-\left[ \frac{\left( x-\mu _1 \right) ^2}{2\sigma _{1}^{2}}+\frac{\left( x-\mu _2 \right) ^2}{2\sigma _{2}^{2}} \right]} \end{aligned}
N(x,μ′,σ′)=N(x,μ1,σ1)⋅N(x,μ2,σ2)=σ12π1e−2σ12(x−μ1)2σ22π1e−2σ22(x−μ2)2=2πσ1σ21e−[2σ12(x−μ1)2+2σ22(x−μ2)2]
把指数部分单独提出:
β
=
(
x
−
μ
1
)
2
2
σ
1
2
+
(
x
−
μ
2
)
2
2
σ
2
2
=
(
σ
1
2
+
σ
2
2
)
x
2
−
2
(
μ
2
σ
1
2
+
μ
1
σ
2
2
)
x
+
(
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
)
2
σ
1
2
σ
2
2
=
x
2
−
2
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
x
+
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
σ
1
2
+
σ
2
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
x
−
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
)
2
+
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
σ
1
2
+
σ
2
2
−
(
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
x
−
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
⏟
γ
+
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
σ
1
2
+
σ
2
2
−
(
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
⏟
λ
\begin{aligned} \beta &=\frac{\left( x-\mu _1 \right) ^2}{2\sigma _{1}^{2}}+\frac{\left( x-\mu _2 \right) ^2}{2\sigma _{2}^{2}} \\ &=\frac{\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right) x^2-2\left( \mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2} \right) x+\left( \mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2} \right)}{2\sigma _{1}^{2}\sigma _{2}^{2}} \\ &=\frac{x^2-2\frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}x+\frac{\mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}}{\frac{2\sigma _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}} \\ &=\frac{\left( x-\frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \right) ^2+\frac{\mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}-\left( \frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \right) ^2}{\frac{2\sigma _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}} \\ &=\underset{\gamma}{\underbrace{\frac{\left( x-\frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \right) ^2}{\frac{2\sigma _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}}}}+\underset{\lambda}{\underbrace{\frac{\frac{\mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}-\left( \frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \right) ^2}{\frac{2\sigma _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}}}} \end{aligned}
β=2σ12(x−μ1)2+2σ22(x−μ2)2=2σ12σ22(σ12+σ22)x2−2(μ2σ12+μ1σ22)x+(μ22σ12+μ12σ22)=σ12+σ222σ12σ22x2−2σ12+σ22μ2σ12+μ1σ22x+σ12+σ22μ22σ12+μ12σ22=σ12+σ222σ12σ22(x−σ12+σ22μ2σ12+μ1σ22)2+σ12+σ22μ22σ12+μ12σ22−(σ12+σ22μ2σ12+μ1σ22)2=γ
σ12+σ222σ12σ22(x−σ12+σ22μ2σ12+μ1σ22)2+λ
σ12+σ222σ12σ22σ12+σ22μ22σ12+μ12σ22−(σ12+σ22μ2σ12+μ1σ22)2
其中,
γ
\gamma
γ为一个
(
μ
′
,
σ
′
)
\left( \mu \prime,\sigma \prime \right)
(μ′,σ′)的正态分布,
λ
\lambda
λ是一个常数值。继续简化
λ
\lambda
λ有:
λ
=
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
σ
1
2
+
σ
2
2
−
(
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
)
2
2
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
(
μ
2
2
σ
1
2
+
μ
1
2
σ
2
2
)
(
σ
1
2
+
σ
2
2
)
−
(
μ
2
σ
1
2
+
μ
1
σ
2
2
)
2
2
σ
1
2
σ
2
2
(
σ
1
2
+
σ
2
2
)
=
(
μ
2
2
σ
1
4
+
μ
2
2
σ
1
2
σ
2
2
+
μ
1
2
σ
1
2
σ
2
2
+
μ
1
2
σ
2
4
)
−
(
μ
2
2
σ
1
4
+
2
μ
1
μ
2
σ
1
2
σ
2
2
+
μ
1
2
σ
2
4
)
2
σ
1
2
σ
2
2
(
σ
1
2
+
σ
2
2
)
=
σ
1
2
σ
2
2
(
μ
1
2
+
μ
2
2
−
2
μ
1
μ
2
)
2
σ
1
2
σ
2
2
(
σ
1
2
+
σ
2
2
)
=
(
μ
1
−
μ
2
)
2
2
(
σ
1
2
+
σ
2
2
)
\begin{aligned} \lambda &=\frac{\frac{\mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}-\left( \frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \right) ^2}{\frac{2\sigma _{1}^{2}\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}} \\ &=\frac{\left( \mu _{2}^{2}\sigma _{1}^{2}+\mu _{1}^{2}\sigma _{2}^{2} \right) \left( \sigma _{1}^{2}+\sigma _{2}^{2} \right) -\left( \mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2} \right) ^2}{2\sigma _{1}^{2}\sigma _{2}^{2}\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right)} \\ &=\frac{\left( \mu _{2}^{2}\sigma _{1}^{4}+\mu _{2}^{2}\sigma _{1}^{2}\sigma _{2}^{2}+\mu _{1}^{2}\sigma _{1}^{2}\sigma _{2}^{2}+\mu _{1}^{2}\sigma _{2}^{4} \right) -\left( \mu _{2}^{2}\sigma _{1}^{4}+2\mu _1\mu _2\sigma _{1}^{2}\sigma _{2}^{2}+\mu _{1}^{2}\sigma _{2}^{4} \right)}{2\sigma _{1}^{2}\sigma _{2}^{2}\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right)} \\ &=\frac{\sigma _{1}^{2}\sigma _{2}^{2}\left( \mu _{1}^{2}+\mu _{2}^{2}-2\mu _1\mu _2 \right)}{2\sigma _{1}^{2}\sigma _{2}^{2}\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right)} \\ &=\frac{\left( \mu _1-\mu _2 \right) ^2}{2\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right)} \end{aligned}
λ=σ12+σ222σ12σ22σ12+σ22μ22σ12+μ12σ22−(σ12+σ22μ2σ12+μ1σ22)2=2σ12σ22(σ12+σ22)(μ22σ12+μ12σ22)(σ12+σ22)−(μ2σ12+μ1σ22)2=2σ12σ22(σ12+σ22)(μ22σ14+μ22σ12σ22+μ12σ12σ22+μ12σ24)−(μ22σ14+2μ1μ2σ12σ22+μ12σ24)=2σ12σ22(σ12+σ22)σ12σ22(μ12+μ22−2μ1μ2)=2(σ12+σ22)(μ1−μ2)2
两个高斯分布相乘为:
N
(
x
,
μ
′
,
σ
′
)
=
N
(
x
,
μ
1
,
σ
1
)
⋅
N
(
x
,
μ
2
,
σ
2
)
=
1
2
π
σ
1
σ
2
e
−
(
γ
+
λ
)
=
1
2
π
σ
1
σ
2
e
−
γ
⋅
e
−
λ
=
1
2
π
σ
1
σ
2
e
−
(
x
−
μ
′
)
2
2
σ
′
2
⋅
e
−
(
μ
1
−
μ
2
)
2
2
(
σ
1
2
+
σ
2
2
)
\begin{aligned} \mathcal{N} \left( x,\mu \prime,\sigma \prime \right) &=\mathcal{N} \left( x,\mu _1,\sigma _1 \right) \cdot \mathcal{N} \left( x,\mu _2,\sigma _2 \right) \\ &=\frac{1}{2\pi \sigma _1\sigma _2}e^{-\left( \gamma +\lambda \right)} \\ &=\frac{1}{2\pi \sigma _1\sigma _2}e^{-\gamma}\cdot e^{-\lambda} \\ &=\frac{1}{2\pi \sigma _1\sigma _2}e^{-\frac{\left( x-\mu \prime \right) ^2}{2\sigma \prime^2}}\cdot e^{-\frac{\left( \mu _1-\mu _2 \right) ^2}{2\left( \sigma _{1}^{2}+\sigma _{2}^{2} \right)}} \end{aligned}
N(x,μ′,σ′)=N(x,μ1,σ1)⋅N(x,μ2,σ2)=2πσ1σ21e−(γ+λ)=2πσ1σ21e−γ⋅e−λ=2πσ1σ21e−2σ′2(x−μ′)2⋅e−2(σ12+σ22)(μ1−μ2)2
其中,
μ
′
=
μ
2
σ
1
2
+
μ
1
σ
2
2
σ
1
2
+
σ
2
2
=
μ
1
+
σ
1
2
(
μ
2
−
μ
1
)
σ
1
2
+
σ
2
2
σ
′
2
=
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
=
σ
1
2
−
σ
1
4
σ
1
2
+
σ
2
2
\begin{aligned} \mu \prime&=\frac{\mu _2\sigma _{1}^{2}+\mu _1\sigma _{2}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}}=\mu _1+\frac{\sigma _{1}^{2}\left( \mu _2-\mu _1 \right)}{\sigma _{1}^{2}+\sigma _{2}^{2}} \\ \sigma \prime^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}} \end{aligned}
μ′σ′2=σ12+σ22μ2σ12+μ1σ22=μ1+σ12+σ22σ12(μ2−μ1)=σ12+σ22σ12σ22=σ12−σ12+σ22σ14
用
k
k
k简化一下:
k
=
σ
1
2
σ
1
2
+
σ
2
2
μ
′
=
μ
1
+
k
(
μ
2
−
μ
1
)
σ
′
2
=
σ
1
2
−
k
σ
1
2
\begin{aligned} k&=\frac{\sigma _{1}^{2}}{\sigma _{1}^{2}+\sigma _{2}^{2}} \\ \mu \prime&=\mu _1+k\left( \mu _2-\mu _1 \right) \\ \sigma \prime^2&=\sigma _{1}^{2}-k\sigma _{1}^{2} \end{aligned}
kμ′σ′2=σ12+σ22σ12=μ1+k(μ2−μ1)=σ12−kσ12
以上是一维,如果是多维空间,把这个式子转成矩阵格式:
K
=
Σ
1
Σ
1
+
Σ
2
μ
⃗
′
=
μ
⃗
1
+
K
(
μ
⃗
2
−
μ
⃗
1
)
Σ
′
=
Σ
1
−
K
Σ
1
\begin{aligned} K&=\frac{\Sigma _1}{\Sigma _1+\Sigma _2} \\ \vec{\mu}\prime&=\vec{\mu}_1+K\left( \vec{\mu}_2-\vec{\mu}_1 \right) \\ \Sigma \prime&=\Sigma _1-K\Sigma _1 \end{aligned}
Kμ′Σ′=Σ1+Σ2Σ1=μ1+K(μ2−μ1)=Σ1−KΣ1
矩阵K就是我们说的卡尔曼增益。
5.结合在一起
截止目前,我们有矩阵
(
μ
1
,
Σ
1
)
=
(
H
k
x
^
k
,
H
k
P
k
H
k
T
)
\left( \mu _1,\Sigma _1 \right) =\left( H_k\hat{x}_k,H_kP_kH_{k}^{T} \right)
(μ1,Σ1)=(Hkx^k,HkPkHkT)预测的分布,有用传感器读数预测的分布
(
μ
2
,
Σ
2
)
=
(
z
⃗
k
,
R
k
)
\left( \mu _2,\Sigma _2 \right) =\left( \vec{z}_k,R_k \right)
(μ2,Σ2)=(zk,Rk),把它们代入上节的矩阵等式中:
K
=
H
k
P
k
H
k
T
H
k
P
k
H
k
T
+
R
k
H
k
x
^
k
′
=
H
k
x
^
k
+
K
(
z
⃗
k
−
H
k
x
^
k
)
H
k
P
k
′
H
k
T
=
H
k
P
k
H
k
T
−
K
H
k
P
k
H
k
T
\begin{aligned} K&=\frac{H_kP_kH_{k}^{T}}{H_kP_kH_{k}^{T}+R_k} \\ H_k\hat{x}_{k}^{\prime}&=H_k\hat{x}_k+K\left( \vec{z}_k-H_k\hat{x}_k \right) \\ H_kP_{k}^{\prime}H_{k}^{T}&=H_kP_kH_{k}^{T}-KH_kP_kH_{k}^{T} \end{aligned}
KHkx^k′HkPk′HkT=HkPkHkT+RkHkPkHkT=Hkx^k+K(zk−Hkx^k)=HkPkHkT−KHkPkHkT
简化上式有:
K
′
=
H
k
T
P
k
H
k
P
k
H
k
T
+
R
k
x
^
k
′
=
x
^
k
+
K
′
(
z
⃗
k
−
H
k
x
^
k
)
P
k
′
=
(
I
−
K
′
H
k
)
P
k
\begin{aligned} K\prime&=\frac{H_{k}^{T}P_k}{H_kP_kH_{k}^{T}+R_k} \\ \hat{x}_{k}^{\prime}&=\hat{x}_k+K\prime\left( \vec{z}_k-H_k\hat{x}_k \right) \\ P_{k}^{\prime}&=\left( I-K\prime H_k \right) P_k \end{aligned}
K′x^k′Pk′=HkPkHkT+RkHkTPk=x^k+K′(zk−Hkx^k)=(I−K′Hk)Pk
最后, x ^ k ′ \hat{x}_{k}^{\prime} x^k′是我们的最佳估计值,我们可以把它继续放进去做下一轮进行预测。
四、卡尔曼滤波五大公式总结
总结一下卡尔曼滤波的预测与更新的五个公式:
预测:
x
^
k
=
F
k
x
^
k
−
1
+
B
k
u
⃗
k
P
k
=
F
k
P
k
−
1
F
k
T
+
Q
k
\begin{aligned} \hat{x}_{\mathrm{k}}&=F_{\mathrm{k}}\hat{x}_{\mathrm{k}-1}+B_{\mathrm{k}}\vec{u}_{\mathrm{k}} \\ P_k&=F_kP_{k-1}F_{k}^{T}+Q_k \end{aligned}
x^kPk=Fkx^k−1+Bkuk=FkPk−1FkT+Qk
更新:
K
′
=
H
k
T
P
k
H
k
P
k
H
k
T
+
R
k
x
^
k
′
=
x
^
k
+
K
′
(
z
⃗
k
−
H
k
x
^
k
)
P
k
′
=
(
I
−
K
′
H
k
)
P
k
\begin{aligned} K\prime&=\frac{H_{k}^{T}P_k}{H_kP_kH_{k}^{T}+R_k} \\ \hat{x}_{k}^{\prime}&=\hat{x}_k+K\prime\left( \vec{z}_k-H_k\hat{x}_k \right) \\ P_{k}^{\prime}&=\left( I-K\prime H_k \right) P_k \end{aligned}
K′x^k′Pk′=HkPkHkT+RkHkTPk=x^k+K′(zk−Hkx^k)=(I−K′Hk)Pk
以上就是卡尔曼滤波完整推导,若文章中出现错误或者小伙伴对以上内容有所疑问,欢迎大家在评论区留言讨论,小政看到后会尽快回复大家!