本文主要是介绍卡尔曼家族从零解剖-(04)贝叶斯滤波→细节讨论,逻辑梳理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的 卡尔曼家族从零解剖 链接 :卡尔曼家族从零解剖-(00)目录最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/133846882
文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证
一、前言
上一篇博客,讲解的内容确实太多了,推导过程比较复杂,为了有一个整体的认知,方便后续学习,所以这里再花费一个篇幅梳理一下知识点。首先有最基本的贝叶斯公式:
f X ∣ Y ( x ∣ y ) = f X , Y ( x , y ) f Y ( y ) = f Y ∣ X ( y ∣ x ) f X ( x ) ∫ − ∞ + ∞ f Y ∣ X ( y ∣ x ) f X ( x ) d x = η f Y ∣ X ( y ∣ x ) f X ( x ) (01) \color{Green} \tag{01} f_{X \mid Y}(x \mid y)=\frac{f_{X, Y}(x, y)}{f_{Y}(y)}=\frac{f_{Y \mid X}(y \mid x) f_{X}(x)}{\int_{-\infty}^{+\infty} f_{Y \mid X}(y \mid x) f_{X}(x) \mathrm{d} x}=\eta f_{Y \mid X}(y \mid x) f_{X}(x) fX∣Y(x∣y)=fY(y)fX,Y(x,y)=∫−∞+∞fY∣X(y∣x)fX(x)dxfY∣X(y∣x)fX(x)=ηfY∣X(y∣x)fX(x)(01) 有了这个贝叶斯公式呢,接着做了两个重要的假设:
( 01 ) : \color{blue}(01): (01): 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 相互独立。
( 02 ) : \color{blue}(02): (02): 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 相互独立。
基于上上述的假设,我们假设了随机变量的状态方程与观测方程:
X k = f ( X k − 1 ) + Q k Y k = h ( X k ) + R k (02) \color{Green} \tag{02} X_k=f(X_{k-1})+Q_{k} \\Y_k=h(X_k)+R_k Xk=f(Xk−1)+QkYk=h(Xk)+Rk(02)然后我们进行随机变量的递归过程,图示如下(上一篇博客图二简化精华版):
上图为大致递推流程,但是这个流程是很难走下去的,为什么呢?假设现在初始状态 X 0 X_0 X0、 f ( x ) f(x) f(x)状态转移方程、 h ( x ) h(x) h(x) 测量方程、 与初始状态转移噪声 Q 1 Q_1 Q1 与 测量噪声 R 1 R_1 R1、以及各个时刻的观测随机变量 Y 1 Y_1 Y1到 Y k Y_k Yk,但是我们依旧没有办法递推出 X k + X_k^+ Xk+,因为我们不知道 Q 2 Q_2 Q2 到 Q k Q_k Qk, R 2 R_2 R2 到 R k R_k Rk,注意,这里是说随机变量 Q k Q_k Qk 与 R k R_k Rk 的具体取值不知道是多少,而不是说关于他们的函数表达式不知道(后续学习卡尔曼滤波会有更加深的体会),所以根据状态方程与测量方程进行了如下推导:
( 01 ) : \color{blue}(01): (01): 根据状态方程推导出先验概率密度函数 f X k − ( x ) f_{X_{k}}^-(x) fXk−(x),其等价于(01)式中的 f X ( x ) f_X(x) fX(x)。
f X k − ( x ) = d F X 1 − ( x ) d x = ∫ − ∞ + ∞ f Q k [ x − f ( v ) ] f X k − 1 + ( v ) d v (03) \color{red} \tag{03} f_{X_{k}}^-(x)=\frac{\mathrm{d} F_{X_1}^-(x)}{\mathrm{d} x}= \int_{-\infty}^{+\infty} f_{Q_{k}}[x-f(v)] f_{X_{k-1}}^{+}(v) \mathrm{d} v fXk−(x)=dxdFX1−(x)=∫−∞+∞fQk[x−f(v)]fXk−1+(v)dv(03)
( 02 ) : \color{blue}(02): (02): 根据测量方程推导出出似然概率密度函数 f Y k ∣ X k ( y k ∣ x ) f_{Y_{k} \mid X_{k}}(y_{k} \mid x) fYk∣Xk(yk∣x),等价于(01)式中的 f Y ∣ X ( y ∣ x ) f X ( x ) f_{Y \mid X}(y \mid x) f_{X}(x) fY∣X(y∣x)fX(x)。 f Y k ∣ X k ( y k ∣ x ) = f R k [ y k − h ( x ) ] (04) \color{red} \tag{04} f_{Y_{k} \mid X_{k}}(y_{k} \mid x)=f_{R_{k}}\left[y_{k}-h(x)\right] fYk∣Xk(yk∣x)=fRk[yk−h(x)](04)
( 03 ) : \color{blue}(03): (03): 最后参照(01)式子,可得后验概率密度函数 f X k + ( x ) f_{X_k}^+(x) fXk+(x):
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 (05) \color{red} \tag{05} 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(05) η 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 (06) \color{Green} \tag{06} \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(06)
需要注意,其上的 f Q k f_{Q_k} fQk 与 f R k f_{R_k} fRk 都为概率密度函数(PDF)。求得 后验概率密度,对齐进行积分即可得到概率分布,进一步求期望即可。
二、技术难点
公式确实推导出来了,但是很明显上式是一个广义结果,并没有实例化,比如 f ( x ) f(x) f(x), h ( x ) h(x) h(x)。如果这两个是函数十分复杂,比如非线性。那么上式则设计到两个非线性无穷积分的运算,也就是 (03) 式与 (06) 式。亦或者 f Q k ( x ) f_{Q_k}(x) fQk(x) 与 f R k ( x ) f_{R_k}(x) fRk(x) 十分复杂,同样会导致非线性无穷积分的运算,这样有可能会导致无法求解。当然,这个推导出来的结果就没有任何作用了。
所以呢,在实际的应用中,基于贝叶斯的不通算法会有不同假设,比如令 f ( x ) f(x) f(x), h ( x ) h(x) h(x) 为线性函数,那么显然,其就应用场景就存在局限性了,卡尔曼滤波就是一种具体化的实现。另外还有扩展卡尔曼滤波,其能够处理一些非线性的复杂场景,后续也会为大家详细分析。依照不通实现方式,对基于贝叶斯滤波思想的方法进行了归类如下:
这篇关于卡尔曼家族从零解剖-(04)贝叶斯滤波→细节讨论,逻辑梳理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!