讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/133846882
文末正下方中心提供了本人
联系方式,
点击本人照片即可显示
W
X
→
官方认证
{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证}
文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证
郑重声明:该系列博客为本人
(
W
e
n
h
a
i
Z
h
u
)
独家私有
,
禁止转载与抄袭
,
首次举报有谢
!
\color{red}郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢!
郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢!
一、前言
在一篇博中,通过前面一系列博客,对卡尔滤波有了一定,且在上一篇博客中对整个流程进行了梳理。首先,贝叶斯滤波仅仅是一种思想指导,其是没有办法直接应用的,其中卡尔曼漫滤就一种实例化体现,当然,也并非完全实例化,若想卡尔漫滤波算法落地,则需要再进补一步根据实际应用情况, 进行建模.
卡尔曼滤波是基于LG(线性高斯)系统进行推断,故其只适用于LG 数学模形,若想适用于 NL 或 NG 系统,则需要使用共它变种算法,如EKF(扩展卡尔曼滤波),这些内容在后面的博客中会进行详细的分析.上一片篇空中, 总结出公式如下:
f
X
k
+
(
x
)
=
η
k
⋅
f
X
k
∣
Y
k
(
x
)
⋅
f
X
k
−
(
x
)
=
η
k
⋅
f
R
k
[
y
k
−
h
(
x
)
]
⋅
∫
−
∞
+
∞
f
Q
k
[
x
−
f
(
v
)
]
f
X
k
−
1
+
(
v
)
d
v
(01)
\color{Green} \tag{01} f_{X_k}^+(x)=\eta_k ·f_{X_k | Y_k}(x) ·f_{X_k}^-(x) =\eta_k ·f_{R_{k}}\left[y_{k}-h(x)\right]· \int_{-\infty}^{+\infty} f_{Q_{k}}[x-f(v)] f_{X_{k-1}}^{+}(v) \mathrm{d} v
fXk+(x)=ηk⋅fXk∣Yk(x)⋅fXk−(x)=ηk⋅fRk[yk−h(x)]⋅∫−∞+∞fQk[x−f(v)]fXk−1+(v)dv(01)
η
k
=
[
∫
−
∞
+
∞
(
f
R
k
[
y
k
−
h
(
x
)
]
⋅
∫
−
∞
+
∞
f
Q
k
[
x
−
f
(
v
)
]
f
X
k
−
1
+
(
v
)
d
v
d
x
]
−
1
)
d
x
(02)
\color{Green} \tag{02} \eta_k=[\int_{-\infty}^{+\infty}(f_{R_{k}}\left[y_{k}-h(x)\right]· \int_{-\infty}^{+\infty} f_{Q_{k}}[x-f(v)] f_{X_{k-1}}^{+}(v) \mathrm{d} v\mathrm{d} x]^{-1}) \mathrm d x
ηk=[∫−∞+∞(fRk[yk−h(x)]⋅∫−∞+∞fQk[x−f(v)]fXk−1+(v)dvdx]−1)dx(02)已经分析过,阻碍算法落地罪魁祸首的就是上面的两个无穷积分,那么接下来的核心,就是如何避免无穷积分,或者直接求解无穷积分了。现在来看,尔麦滤波关是如何从根源上避免无穷积,其首相如下做没:
( 01 ) \color{blue}(01) (01) 状态转移函数 f ( x ) f(x) f(x) 与 观测函数 h ( x ) h(x) h(x) 都是线性的,如下( . ˇ \check{.} .ˇ 表示先验, . ^ \hat{.} .^ 表示后验 ): 状态方程 : x ˇ k = f x ^ k − 1 + q k f 为一维常数 观测方程 : x ^ = h x ˇ k + r k h 为一维常数 (03) \color{Green} \tag{03} 状态方程:~~~~~~ \check x_{k}=f\hat x_{k-1}+q_k~~~~~~~~~f为一维常数\\观测方程:~~~~~~~\hat x=h\check x_k+r_k~~~~~~~~~~~~~~h为一维常数 状态方程: xˇk=fx^k−1+qk f为一维常数观测方程: x^=hxˇk+rk h为一维常数(03) ( 02 ) \color{blue}(02) (02) 其上 q k ∈ Q ∼ N ( u q k , σ k 2 ) \color{Green} q_k \in Q \sim N(u_{q_k},\sigma^2_{k}) qk∈Q∼N(uqk,σk2), r k ∈ R ∼ N ( u r k , σ r k 2 ) \color{Green} r_k \in R \sim N(u_{r_k},\sigma^2_{r_k}) rk∈R∼N(urk,σrk2),为正太分布。
需要注意,后续推导过程先一维示例,再拓展到高维,因为一维不设计到矩阵、多元高斯、协方差矩阵等。所谓通过现象看本质。虽然实际应用中很少使用一维的,但是从一维来理解最合适最底层原理还是比较合适的。因为是一维的,所以使用小写字母表示,另外上面假设是随机过程的实例化,也就是 x ˇ k \check x_{k} xˇk 、 x ˇ k \check x_k xˇk、 q k q_k qk、 r k r_k rk 表示随机过程的具体取值,而非随机变量。另外,公式 (02) 推导使用到假设:
(
03
)
:
\color{blue}(03):
(03):
X
0
X_0
X0 与
Q
1
Q_1
Q1、
Q
2
Q_2
Q2、
Q
3
Q_3
Q3、
.
.
.
.
.
.
......
......、
Q
k
Q_{k}
Qk 相互独立。
(
04
)
:
\color{blue}(04):
(04):
X
1
X_1
X1 与
R
1
R_1
R1、
R
2
R_2
R2、
R
3
R_3
R3、
.
.
.
.
.
.
......
......、
R
k
R_{k}
Rk 相互独立。
所以这里得记录一下,也就是实际应用过程中,不能把这个假设忽略了,否则是不适用于贝叶斯滤波得。除了上面的假设,还需要额外的知识点:
(
05
)
:
\color{blue}(05):
(05): 正太分布函数进行线性变换,依旧为符合正太分布。
(
06
)
:
\color{blue}(06):
(06): 两个正太分布的乘积依旧为正太分布(先记住结论后续进行推导)。
两正太分布乘积结果如下(注意,先记结果,别纠结过程,陷入死胡同了):
x
1
∈
X
1
∼
N
(
v
1
,
σ
1
2
)
x
2
∈
X
2
∼
N
(
v
2
,
σ
2
2
)
(04)
\color{Green} \tag{04} x_1 \in X_1 \sim N(v_1,\sigma_1^2)~~~~~~~~~~~~~~~~~~~~x_2 \in X_2 \sim N(v_2,\sigma_2^2)
x1∈X1∼N(v1,σ12) x2∈X2∼N(v2,σ22)(04)
f
(
x
1
)
∗
f
(
x
2
)
=
N
(
σ
1
2
σ
1
2
+
σ
2
2
μ
2
+
σ
2
2
σ
1
2
+
σ
2
2
μ
1
,
σ
1
2
σ
2
2
σ
1
2
+
σ
2
2
)
(05)
\color{Green} \tag{05} f(x_1)*f(x_2)=N\left(\frac{\sigma_{1}^{2}}{\sigma_{1}^2+\sigma_{2}^{2}} \mu_{2}+\frac{\sigma_{2}^{2}}{\sigma_{1}^{2}+\sigma_{2}^{2}} \mu_{1} , \frac{\sigma_{1}^{2} \sigma_{2}^{2}}{\sigma_{1}^{2}+\sigma_{2}^{2}}\right)
f(x1)∗f(x2)=N(σ12+σ22σ12μ2+σ12+σ22σ22μ1,σ12+σ22σ12σ22)(05)
二、思想指导
首先要整体来分析一下,假设先验状态 x ^ k − 1 \hat x_{k-1} x^k−1 的概率密度函数 f k − 1 + f_{k-1}^+ fk−1+ 符合正太分布 N ( v x k − 1 , σ x k − 1 2 ) N(v_{x_{k-1}},\sigma _{x_{k-1}}^2) N(vxk−1,σxk−12),那么根据状态转移函数 f ( x ˇ k ) = a f ( x ^ k − 1 ) + q k f(\check x_{k})=af(\hat x_{k-1})+q_k f(xˇk)=af(x^k−1)+qk,结合 【 ( 05 ) : \color{blue}(05): (05): 正太分布函数进行线性变换,依旧为符合正太分布。 可以知道 f ( x ˇ k ) f(\check x_{k}) f(xˇk) 】,可知 f ( x ˇ k ) = f X k + ( x ) f(\check x_{k})=f^+_{X_k}(x) f(xˇk)=fXk+(x) 也符合正太分布,直白的说,若 k − 1 k-1 k−1 时刻后验符合正太分布,则 k k k 时刻的先验也符合正太分布,再来看 (01) 式: f X k + ( x ) = η k ⋅ f X k ∣ Y k ( x ) ⋅ f X k − ( x ) (06) \color{Green} \tag{06} f_{X_k}^+(x)=\eta_k ·f_{X_k | Y_k}(x) ·f_{X_k}^-(x) fXk+(x)=ηk⋅fXk∣Yk(x)⋅fXk−(x)(06) 可以知道,若 f X k ∣ Y k ( x ) f_{X_k | Y_k}(x) fXk∣Yk(x) 也符合正太分布,那么 f X k + ( x ) f_{X_k}^+(x) fXk+(x) 也符合正太分布了( η k \eta_k ηk为一个常数),这样递推公式就出来了。根据 (1) 式子可知: f X k ∣ Y k ( x ) = f R k [ y k − h ( x ) ] (07) \color{Green} \tag{07} f_{X_k | Y_k}(x)=f_{R_{k}}\left[y_{k}-h(x)\right] fXk∣Yk(x)=fRk[yk−h(x)](07) 上式中由于 h ( x ) h(x) h(x) 是线性函数, y k − h ( x ) y_{k}-h(x) yk−h(x) 的作用相当于对原本的太正分布图形进行了平移或缩放,故结果 f X k ∣ Y k ( x ) f_{X_k | Y_k}(x) fXk∣Yk(x) 依旧为正太分布。
核心 : \color{red}核心: 核心: 根据上面的推导,可知,若 f k − 1 + f_{k-1}^+ fk−1+ 符合正太分布,则 f X k − ( x ) f_{X_k}^-(x) fXk−(x) 与 f X k ∣ Y k ( x ) f_{X_k | Y_k}(x) fXk∣Yk(x) 都符合正太,又 η k \eta_k ηk 为一参数,根据 【 ( 06 ) : \color{blue}(06): (06): 两个正太分布的乘积依旧为正太分布】,可知 f X k + ( x ) f_{X_k}^+(x) fXk+(x) 为正太分布。最后可知,若 x 0 x_0 x0 符合正太分布,可以一直递推出 x ^ 1 \hat x_1 x^1、 x ^ 2 \hat x_2 x^2、 ⋯ \cdots ⋯、 x ^ k − 1 \hat x_{k-1} x^k−1、 x ^ k \hat x_{k} x^k 都是符合正太分布。
这里额外补充一下 η \eta η 是一个常数,其表达式在 卡尔曼家族从零解剖-(01)预备知识点 中推导过: η = [ f Y k ( x ) ] − 1 = [ ∫ − ∞ + ∞ f Y k ∣ X k ( y k ∣ x ) f X ( x ) d x ] − 1 (08) \color{Green} \tag{08} \eta=[f_{Y_{k}}(x)]^{-1}=[{\int_{\mathbb{-\infty}}^{+\infty} f_{Y_k \mid X_k}(y_k \mid x) f_{X}(x) \mathrm d x}]^{-1} η=[fYk(x)]−1=[∫−∞+∞fYk∣Xk(yk∣x)fX(x)dx]−1(08)其本质来源于连续随机变量的全概率公式,其实也比较好理解,目前观测到 y k y_k yk,那么 P ( y k ) P(y_k) P(yk) 已经能被确定的,因为已经假设 f Y k ( X ) f_{Y_k}(X) fYk(X) 符合正太分布。观测到 y k y_k yk 的总概率,不就是所有所有 x x x 状态下,能够观测到 Y k Y_k Yk 概率的概率总和吗?
三、公式推导
再推导之前,首先要明白已知条件与推导目的,避免计算过程中,都不知自己再做些什么了,如下:
已知
:
x
^
k
−
1
求解
:
x
^
k
−
1
(09)
\color{Green} \tag{09}已知: \hat x_{k-1} ~~~~~~~~~~~~~~~~~~求解:\hat x_{k-1}
已知:x^k−1 求解:x^k−1(09)当然,仅仅凭其一个已知条件,是没有办法进行下去的,所以还需要额外的假设,以LG(线性高斯系统)为基础进行推断,故
f
X
k
−
(
x
)
f_{X_{k}}^-(x)
fXk−(x)、
f
X
k
+
(
x
)
f_{X_{k}}^+(x)
fXk+(x)、
f
Q
k
(
x
)
f_{Q_{k}}(x)
fQk(x) 、
f
R
k
(
x
)
f_{R_{k}}(x)
fRk(x) 都符合正太正太分布:
f
(
x
)
=
1
σ
2
π
e
−
(
x
−
μ
)
2
2
σ
2
X
∼
N
(
μ
,
σ
2
)
(10)
\color{Green} \tag{10} f(x)=\frac{1}{ \sigma \sqrt{2 \pi}} e^{-\frac{(x-\mu)^{2}}{2 \sigma^{2}}}~~~~~~~~~~~X \sim N\left(\mu, \sigma^{2}\right)
f(x)=σ2π1e−2σ2(x−μ)2 X∼N(μ,σ2)(10)并且
f
Q
k
(
x
)
∼
N
(
0
,
σ
q
k
−
1
)
f
R
k
(
x
)
∼
N
(
0
,
σ
R
k
−
1
)
(11)
\color{Green} \tag{11} f_{Q_{k}}(x) \sim N(0,\sigma_{q_{k-1}})~~~~~~~~~f_{R_{k}}(x) \sim N(0,\sigma_{R_{k-1}})
fQk(x)∼N(0,σqk−1) fRk(x)∼N(0,σRk−1)(11)
其上的 μ \mu μ 表示均值, σ \sigma σ 表示标准差。除此之外,还需要对 (03) 式中状态转移方程与观测方程进行实例化,这里设: 状态方程 : x ˇ k = f x ^ k − 1 + q k f 为一维常数 观测方程 : x ^ = h x ˇ k + r k h 为一维常数 (12) \color{Green} \tag{12} 状态方程:~~~~~~ \check x_{k}=f\hat x_{k-1}+q_k~~~~~~~~~f为一维常数\\观测方程:~~~~~~~\hat x=h\check x_k+r_k~~~~~~~~~~~~~~h为一维常数 状态方程: xˇk=fx^k−1+qk f为一维常数观测方程: x^=hxˇk+rk h为一维常数(12)上面的假设都是比较简单的, f f f、 h h h 是两个参数,不会发生改变, f f f、 h h h 会改变的场景这里先不做考虑,其过程相对复杂一些,当然应用也会更加广泛。
1.预测步
首先参考(01)式,可以指导
f
X
k
−
1
−
f_{X_{k-1}}^-
fXk−1− 与
f
X
k
−
1
+
f_{X_{k-1}}^+
fXk−1+ 的关系,如下所示:
f
X
k
−
(
x
)
=
∫
−
∞
+
∞
f
Q
k
[
x
−
f
(
v
)
]
f
X
k
−
1
+
(
v
)
d
v
(11)
\color{Green} \tag{11} f_{X_k}^-(x) =\int_{-\infty}^{+\infty} f_{Q_{k}}[x-f(v)] f_{X_{k-1}}^{+}(v) \mathrm{d} v
fXk−(x)=∫−∞+∞fQk[x−f(v)]fXk−1+(v)dv(11)设
f
Q
k
(
x
)
f_{Q_{k}}(x)
fQk(x) 的均值为
μ
Q
k
=
0
\color {red} \mu_{Q_{k}}=0
μQk=0,方差为
σ
Q
k
\sigma_{Q_{k}}
σQk;
f
X
k
−
1
+
(
x
)
f_{X_{k-1}}^+(x)
fXk−1+(x) 的均值为
x
^
k
−
1
\color {red} \hat x_{k-1}
x^k−1,方差为
σ
X
k
−
1
+
\sigma_{X_{k-1}}^+
σXk−1+; 把他们带入上式得:
f
X
k
−
1
+
(
v
)
=
1
σ
X
k
−
1
2
π
e
−
(
v
−
x
^
k
−
1
)
2
2
σ
X
k
−
1
−
2
(12)
\color{Green} \tag{12} f_{X_{k-1}}^{+}(v)=\frac{1}{ \sigma_{X{k-1}} \sqrt{2 \pi}} e^{-\frac{(v-\hat x_{k-1})^{2}}{2 \sigma_{X{k-1}}^{-2}}}
fXk−1+(v)=σXk−12π1e−2σXk−1−2(v−x^k−1)2(12)
f
Q
k
−
1
(
x
−
f
(
v
)
)
=
1
σ
Q
k
−
1
2
π
e
−
(
x
−
a
v
)
2
2
σ
Q
k
−
1
2
其中
:
f
(
v
)
=
f
v
(13)
\color{Green} \tag{13} f_{Q_{k-1}}(x-f(v))=\frac{1}{ \sigma_{Q{k-1}} \sqrt{2 \pi}} e^{-\frac{(x-av)^{2}}{2 \sigma_{Q{k-1}}^{2}}} ~~~~~~~~其中: f(v)=fv
fQk−1(x−f(v))=σQk−12π1e−2σQk−12(x−av)2 其中:f(v)=fv(13)
上面需要注意的是
μ
Q
k
=
0
\color {red} \mu_{Q_{k}}=0
μQk=0,下面再把
f
X
k
−
1
+
(
v
)
f_{X_{k-1}}^{+}(v)
fXk−1+(v) 与
f
Q
k
−
1
(
x
−
f
(
v
)
)
f_{Q_{k-1}}(x-f(v))
fQk−1(x−f(v)) 都带入到 (11) 式得:
f
X
k
−
(
x
)
=
∫
−
∞
+
∞
1
σ
Q
k
−
1
2
π
e
−
(
x
−
f
v
)
2
2
σ
Q
k
−
1
2
⋅
1
σ
X
k
−
1
+
2
π
e
−
(
v
−
x
^
k
−
1
)
2
2
σ
X
k
−
1
+
2
⋅
d
v
(14)
\color{Green} \tag{14} f_{X_k}^-(x) =\int_{-\infty}^{+\infty} \frac{1}{ \sigma_{Q{k-1}} \sqrt{2 \pi}} e^{-\frac{(x-fv)^{2}}{2 \sigma_{Q{k-1}}^{2}}} · \frac{1}{ \sigma_{X{k-1}}^+ \sqrt{2 \pi}} e^{-\frac{(v-\hat x_{k-1})^{2}}{2 \sigma_{X{k-1}}^{+2}}} · \mathrm{d} v
fXk−(x)=∫−∞+∞σQk−12π1e−2σQk−12(x−fv)2⋅σXk−1+2π1e−2σXk−1+2(v−x^k−1)2⋅dv(14) 此时,再来看上式,其实就比较明朗了,本质上就是前面提到的,两个高斯密度函数的乘积,使用 Mathematic 软件计算可以得到答案(后续会手动推导),其中的变量
v
v
v 会进行积分,积分之后就只剩下一个变量
x
x
x ,得答案如下:
f
X
k
−
(
x
)
∼
N
(
x
ˇ
k
,
σ
X
k
−
)
=
N
(
f
x
^
k
−
1
,
f
2
σ
X
k
−
1
+
+
σ
Q
k
−
1
)
(15)
\color{red} \tag{15} f_{X_k}^-(x) \sim N(\check x_{k},\sigma^{-}_{X_{k}})=N(f\hat x_{k-1},f^2\sigma_{X_{k-1}}^{+}+\sigma_{Q_{k-1}})
fXk−(x)∼N(xˇk,σXk−)=N(fx^k−1,f2σXk−1++σQk−1)(15)
2.更新步
完成先验概率密度函数
f
X
k
−
(
x
)
f_{X_k}^-(x)
fXk−(x) 的推导,现在就是求似然概率密度函数,也就是一式中
f
X
k
∣
Y
k
(
x
)
=
f
R
k
[
y
k
−
h
(
x
)
]
f_{X_k | Y_k}(x)=f_{R_{k}}\left[y_{k}-h(x)\right]
fXk∣Yk(x)=fRk[yk−h(x)] 的结果了,不说其他的,直观看起来就简单太多了,直接参考前面的 (10) (11) 式,带入即可:
f
X
k
∣
Y
k
(
x
)
=
1
σ
R
k
2
π
e
−
(
y
−
h
x
)
2
2
σ
R
k
2
(15)
\color {Green} \tag{15} f_{X_k | Y_k}(x)=\frac{1}{ \sigma_{R_k} \sqrt{2 \pi}} e^{-\frac{(y-hx)^{2}}{2 \sigma_{R_k}^{2}}}
fXk∣Yk(x)=σRk2π1e−2σRk2(y−hx)2(15)都不用多说,其上很明显就是
N
(
h
x
,
σ
R
k
−
1
2
)
N (hx,\sigma_{R{k-1}}^2)
N(hx,σRk−12) 的一个正太分布,现在需要利用他对前面的
N
(
μ
X
k
−
,
σ
X
k
−
2
)
N(\mu_{X_{k}}^-,\sigma^{-2}_{X_{k}})
N(μXk−,σXk−2) 进行修正,得到
N
(
μ
X
k
+
,
σ
X
k
+
2
)
N(\mu_{X_{k}}^+,\sigma^{+2}_{X_{k}})
N(μXk+,σXk+2),当然修正过程不能忘记还要乘一个归一化变量:
η
k
=
[
∫
−
∞
+
∞
f
X
k
∣
Y
k
(
x
)
⋅
f
X
k
−
(
x
)
d
x
]
−
1
(16)
\color{Green} \tag{16} \eta_k=[\int_{-\infty}^{+\infty}f_{X_k | Y_k}(x)·f_{X_k}^-(x)dx]^{-1}
ηk=[∫−∞+∞fXk∣Yk(x)⋅fXk−(x)dx]−1(16)这里依旧直接给出答案,后续有时间再为大家详细推导,这里给出的是
x
^
=
E
(
f
X
k
+
(
x
)
)
\hat x= E(f_{X_k}^+(x))
x^=E(fXk+(x)) :
X
k
+
=
(
x
^
k
,
σ
X
k
+
)
∼
N
(
h
σ
X
k
−
y
k
+
σ
R
k
x
ˇ
k
h
2
σ
X
k
−
+
σ
R
k
,
σ
R
k
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
)
(17)
\color{red} \tag{17} X^+_k=(\hat x_{k},\sigma^+_{X_{k}}) \sim N\left(\frac{h \sigma_{X_k}^{-} y_{k}+\sigma_{R_k} \check x_k}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}, \frac{\sigma_{R_k} \sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}\right)
Xk+=(x^k,σXk+)∼N(h2σXk−+σRkhσXk−yk+σRkxˇk,h2σXk−+σRkσRkσXk−)(17)
3.公式化简
虽然通过上面的推导,答案基本已经出来了,但是其对于编程的实现并不是很友好,所以还需要继续化简一下,在这之前我们先把上面的公式梳理一下,(15) (17) 式等价如下:
x
ˇ
k
=
f
x
^
k
−
1
σ
X
k
−
=
f
2
σ
X
k
−
1
+
+
σ
Q
k
−
1
(18)
\color{Green} \tag{18}\check x_{k}=f\hat x_{k-1}~~~~~~~~~~~~~~~~~~~~~~~~\sigma^{-}_{X_{k}}=f^2\sigma_{X_{k-1}}^{+}+\sigma_{Q_{k-1}}
xˇk=fx^k−1 σXk−=f2σXk−1++σQk−1(18)
x
^
k
=
h
σ
X
k
−
y
k
+
σ
R
k
x
ˇ
k
h
2
σ
X
k
−
+
σ
R
k
σ
X
k
+
=
σ
R
k
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
(19)
\color{Green} \tag{19} \hat x_{k}=\frac{h \sigma_{X_k}^{-} y_{k}+\sigma_{R_k} \check x_k}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}~~~~~~~~~~~~~\sigma^+_{X_{k}}=\frac{\sigma_{R_k} \sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}
x^k=h2σXk−+σRkhσXk−yk+σRkxˇk σXk+=h2σXk−+σRkσRkσXk−(19)根据上面的式子可以很直观的知道,其是一个递归推导,若已知
x
^
0
\hat x_0
x^0 与
σ
X
0
+
\sigma^+_{X_{0}}
σX0+,以及各个时刻的观测
y
k
y_k
yk,则可递归推导:
【
x
^
0
,
σ
X
0
+
,
y
1
】
→
【
x
^
1
,
σ
X
1
+
,
y
2
】
→
⋯
→
【
x
^
k
,
σ
X
k
+
】
(20)
\color{Green} \tag{20}【\hat x_0,\sigma^+_{X_{0}},y_1】→【\hat x_1,\sigma^+_{X_{1}},y_2】→\cdots →【\hat x_k,\sigma^+_{X_{k}}】
【x^0,σX0+,y1】→【x^1,σX1+,y2】→⋯→【x^k,σXk+】(20)对于(19) 式分别化简如下:
x
^
k
=
h
σ
X
k
−
y
k
+
σ
R
k
x
ˇ
k
h
2
σ
X
k
−
+
σ
R
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
y
k
+
σ
R
k
x
ˇ
k
h
2
σ
X
k
−
+
σ
R
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
y
k
+
x
ˇ
(
σ
R
k
+
h
2
σ
X
k
−
)
−
x
ˇ
k
h
2
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
y
k
+
x
ˇ
−
x
ˇ
h
2
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
(
y
k
−
h
x
ˇ
)
+
x
ˇ
(21)
\color{Green} \tag{21} \begin{aligned} \hat x_{k}&=\frac{h \sigma_{X_k}^{-} y_{k}+\sigma_{R_k} \check x_k}{h^{2}\sigma_{X_k}^{-}+\sigma_{R_k}} \\&= \frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}} y_{k}+\frac{\sigma_{R_k} \check x_k}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}} \\&= \frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}} y_k+\frac{ \check x(\sigma_{R_k}+ h^2 \sigma_{X_k}^{-})- \check x_k h^2 \sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}} \\&=\frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}} y_k+\check x -\frac{\check xh^2\sigma^-_{X_k}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}\\ &=\frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}}(y_k-h\check x)+\check x\\ \end{aligned}
x^k=h2σXk−+σRkhσXk−yk+σRkxˇk=h2σXk−+σRkhσXk−yk+h2σXk−+σRkσRkxˇk=h2σXk−+σRkhσXk−yk+h2σXk−+σRkxˇ(σRk+h2σXk−)−xˇkh2σXk−=h2σXk−+σRkhσXk−yk+xˇ−h2σXk−+σRkxˇh2σXk−=h2σXk−+σRkhσXk−(yk−hxˇ)+xˇ(21)
σ
X
k
+
=
σ
R
k
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
=
(
h
2
σ
X
k
−
+
σ
R
k
)
σ
X
k
−
−
h
2
σ
X
k
−
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
=
σ
X
k
−
−
h
2
σ
X
k
−
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
=
(
1
−
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
h
)
σ
X
k
−
(22)
\color{Green} \tag{22} \begin{aligned} \sigma^+_{X_{k}}&=\frac{\sigma_{R_k} \sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}} \\&=\frac{(h^2 \sigma_{X_k}^{-}+\sigma_{R_k} )\sigma_{X_k}^{-}-h^2 \sigma_{X_k}^{-}\sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}} \\&=\sigma_{X_k}^{-}-\frac{h^2 \sigma_{X_k}^{-}\sigma_{X_k}^{-}}{h^{2} \sigma_{X_k}^{-}+\sigma_{R_k}}\\&=(1-\frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}}h)\sigma_{X_k}^{-} \end{aligned}
σXk+=h2σXk−+σRkσRkσXk−=h2σXk−+σRk(h2σXk−+σRk)σXk−−h2σXk−σXk−=σXk−−h2σXk−+σRkh2σXk−σXk−=(1−h2σXk−+σRkhσXk−h)σXk−(22)可以看到,其都存在共同的一项,那就是卡尔曼增益项:
k
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
(23)
\color{Green} \tag{23}k_k=\frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}}
kk=h2σXk−+σRkhσXk−(23)把其带如何到 (22) (23) 式可得:
x
^
k
=
k
k
(
y
k
−
h
x
ˇ
)
+
x
ˇ
σ
X
k
+
=
(
1
−
h
k
k
)
σ
X
k
−
(24)
\color{Green} \tag{24} \hat x_{k}=k_k(y_k-h\check x)+\check x~~~~~~~~~~~~~~~~~~\sigma^+_{X_{k}}=(1-hk_k) \sigma_{X_k}^{-}
x^k=kk(yk−hxˇ)+xˇ σXk+=(1−hkk)σXk−(24)
四、总结
通过上面一系列的推导,可以得到以下五个公式,其就是卡尔曼的五大核心公式,即 (15) 式中的两个公式(需展开),以及 (23) (24),整理如下:
①:
x
ˇ
k
=
f
x
^
k
−
1
②:
σ
X
k
−
=
f
2
σ
X
k
−
1
+
+
σ
Q
k
−
1
(25)
\color{red} ①:\tag{25}\check x_{k}= f\hat x_{k-1}~~~~~~~~~~~~~~~②:\sigma^{-}_{X_{k}}=f^2\sigma_{X_{k-1}}^{+}+\sigma_{Q_{k-1}}
①:xˇk=fx^k−1 ②:σXk−=f2σXk−1++σQk−1(25)
③:
k
k
=
h
σ
X
k
−
h
2
σ
X
k
−
+
σ
R
k
(26)
\color{red} \tag{26}③:k_k=\frac{h \sigma_{X_k}^{-} }{h^{2} \sigma_{X_k}^{-} +\sigma_{R_k}}
③:kk=h2σXk−+σRkhσXk−(26)
④:
x
^
k
=
k
k
(
y
k
−
h
x
ˇ
)
+
x
ˇ
⑤:
σ
X
k
+
=
(
1
−
h
k
k
)
σ
X
k
−
(27)
\color{red} \tag{27} ④:\hat x_{k}=k_k(y_k-h\check x)+\check x~~~~~~~~~~~~~~~~~~⑤:\sigma^+_{X_{k}}=(1-hk_k) \sigma_{X_k}^{-}
④:x^k=kk(yk−hxˇ)+xˇ ⑤:σXk+=(1−hkk)σXk−(27)
上面的五个式子很明显是递推的若假设已知
x
^
0
\hat x_0
x^0、
σ
X
0
+
\sigma_{X_{0}}^+
σX0+、以及各个时刻观测
y
k
y_k
yk,则可推导出出
x
^
k
\hat x_k
x^k、
σ
X
k
+
\sigma_{X_{k}}^+
σXk+,如下:
【
x
^
0
,
σ
X
0
+
,
y
1
】
→
【
x
^
1
,
σ
X
1
+
,
y
2
】
→
⋯
→
【
x
^
k
,
σ
X
k
+
】
(28)
\color{Green} \tag{28}【\hat x_0,\sigma_{X_{0}}^+,y_1】→【\hat x_1,\sigma_{X_{1}}^+,y_2】→\cdots→【\hat x_k,\sigma_{X_{k}}^+】
【x^0,σX0+,y1】→【x^1,σX1+,y2】→⋯→【x^k,σXk+】(28)
不过上面推导的公式存在一个很大的问题,那就是其基于一维推导,实际应用过程中,很少使用到一维的卡尔曼滤波,虽然以这种方式进行推导,可以很好的理解整个推导过程,但是局限性太大。文章来源:https://www.toymoban.com/news/detail-742563.html
另外,还有很多地方没有讲解清楚,如两个高斯分布的乘积与积分,高斯分布线性变化等,都未进行详细的讲解。不用着急,后续博客都会展开进行详细分析与推导。文章来源地址https://www.toymoban.com/news/detail-742563.html
到了这里,关于卡尔曼家族从零解剖-(05)卡尔曼滤波→公式推导,应用通俗讲解,c++代码示例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!