卡尔曼家族从零解剖-(04)贝叶斯滤波→细节讨论,逻辑梳理

news2025/2/24 17:13:49

讲解关于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) fXY(xy)=fY(y)fX,Y(x,y)=+fYX(yx)fX(x)dxfYX(yx)fX(x)=ηfYX(yx)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(Xk1)+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[xf(v)]fXk1+(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) fYkXk(ykx),等价于(01)式中的 f Y ∣ X ( y ∣ x ) f X ( x ) f_{Y \mid X}(y \mid x) f_{X}(x) fYX(yx)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] fYkXk(ykx)=fRk[ykh(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)=ηkfXkYk(x)fXk(x)=ηkfRk[ykh(x)]+fQk[xf(v)]fXk1+(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[ykh(x)]+fQk[xf(v)]fXk1+(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) 为线性函数,那么显然,其就应用场景就存在局限性了,卡尔曼滤波就是一种具体化的实现。另外还有扩展卡尔曼滤波,其能够处理一些非线性的复杂场景,后续也会为大家详细分析。依照不通实现方式,对基于贝叶斯滤波思想的方法进行了归类如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1165241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

玩转AIGC:如何选择最佳的Prompt提示词?

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spring、SpringMVC、Mybatis

一.Spring基础 1.Spring 框架是什么 Spring 是一款开源的轻量级 Java 开发框架,我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,例如,Spring-core、Spring-JDBC、Spring-MVC 等,使用这些模块可…

Vite 的基本原理,和 webpack 在开发阶段的比较

目录 1,webpack 的流程2,Vite 的流程简单编译 3,总结 主要对比开发阶段。 1,webpack 的流程 开发阶段大致流程:指定一个入口文件,对相关的模块(js css img 等)先进行打包&#xff0…

【MySql】11- 实践篇(九)

文章目录 1. 大查询是否会把数据库内存打爆?1.1 全表扫描对 server 层的影响1.2 全表扫描对 InnoDB 的影响 2. 可不可以使用join?2.1 Index Nested-Loop Join2.2 Simple Nested-Loop Join2.3 Block Nested-Loop Join 3. join语句怎么优化?3.1 Multi-Range Read 优化3.2 Batc…

安装Oracle 11g Error in invoking target报错

在redhat7.5上安装Oracle 11g,安装过程中到86%时出现Error in invoking target报错 原因是由于操作系统版本过高,导致lib链接报错 [oracleemrtest ~]$ cd O R A C L E H O M E / s y s m a n / l i b / [ o r a c l e e m r t e s t l i b ] ORACLE…

没有PDF密码,如何解密文件?

PDF文件有两种密码,一个打开密码、一个限制编辑密码,因为PDF文件设置了密码,那么打开、编辑PDF文件就会受到限制。想要解密,我们需要输入正确的密码,但是有时候我们可能会出现忘记密码的情况,或者网上下载P…

canvas制作电子白板签名功能

Canvas是html5主要的画图工具&#xff0c;用户可以利用js在里面构思自己的创意&#xff0c;页面上很多手写签名是通过这个来完成的&#xff0c;让我们来用一个简单的例子作为抛砖引玉。 效果图 源代码 <html> <head> <meta charset"utf-8"> &l…

【脚本工具】视频抽帧、添加srt字幕朗读、添加背景音频

1.文章目录 看完本文章&#xff0c;你将能学会一下内容&#xff1a; 批量视频抽帧&#xff1b;添加srt字幕&#xff1b;添加srt配音&#xff1b;添加背景音乐&#xff1b;多视频片段合成一个新视频&#xff1b; 效果&#xff1a; 2.安装依赖 首先安装视频处理库opencv-pyth…

ERR invalid password

E:\Document_Redis_Windows\redis-2.4.5-win32-win64\64bit redis.conf

前端实现调用打印机和小票打印(TSPL )功能

Ⅰ- 壹 - 使用需求 前端 的方式 点击这个按钮&#xff0c;直接让打印机打印我想要的东西 Ⅱ - 贰 - 小票打印 目前比较好的方式就是直接用 TSPL 标签打印指令集, 基础环境就不多说了,这个功能的实现就是利用usb发送指令,现在缺少个来让我们能够和usb沟通的工具,下面这就是推…

代码随想录 Day35 动态规划04 01背包问题和完全背包问题 LeetCode T416 分割等和子集

背包问题 说到背包问题大家都会想到使用动规的方式来求解,那么为什么用动规呢,dp数组代表什么呢?初始化是什么,遍历方式又是什么,这篇文章笔者将详细讲解背包问题的经典例题0-1背包问题和完全背包问题的解题方式,希望能帮助到大家 1.暴力方式 有人一提到背包问题就只会使用动态…

C++之队列queue

1.知识百科 队列是一种特殊的线性表&#xff0c;特殊之处在于它只允许在表的前端&#xff08;front&#xff09;进行删除操作&#xff0c;而在表的后端&#xff08;rear&#xff09;进行插入操作&#xff0c;和栈一样&#xff0c;队列是一种操作受限制的线性表。进行插入操作的…

Idea - Apifox Helper 插件的安装、配置令牌、导出

第一步&#xff1a;先安装插件&#xff08;其他EASY API 、Api docx同理&#xff09; 等待安装完毕 第二步&#xff1a; 导出你想导出的API 提示我们没有找到配置文件&#xff0c;需要到设置里面设置Personal Access Token 第三步&#xff1a;到设置里面设置Personal Access T…

AI:50-基于深度学习的柑橘类水果分类

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌本专栏包含以下学习方向: 机器学习、深度学…

城市内涝解决方案:实时监测,提前预警,让城市更安全

城市内涝积水问题是指城市地区在短时间内遭遇强降雨后&#xff0c;地面积水过多&#xff0c;导致城市交通堵塞、居民生活不便、财产损失等问题。近年来&#xff0c;随着全球气候变化和城市化进程的加速&#xff0c;城市内涝积水问题越来越突出&#xff0c;成为城市发展中的一大…

C++之初始化列表详细剖析

一、初始化列表定义 初始化列表&#xff1a;以一个冒号开始&#xff0c;接着是一个以逗号分隔的数据成员列表&#xff0c;每个"成员变量"后面跟一个放在括号中的初始值或表达式。 class Date { public:Date(int year, int month, int day): _year(year), _month(mont…

tauri 访问静态资源,响应头为Content-Type:‘text/html‘

现象 报错&#xff1a; Error: THREE.FBXLoader: Unknown format. at FBXLoader.parse (index-f8291142.js:22050:15) at Object.onLoad (index-f8291142.js:22033:22) at index-f8291142.js:19769:20 使用threejs 加载fbx模型文件时&#xff0c;返回头中Content-…

《C++ Primer》第6章 函数(一)

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 6.1 函数基础&#xff08;P182&#xff09; 典型的函数定义包括&#xff1a;返回类型&#xff08; return type &#xff09;、函数名字、0 个或多个形参&#xff08; parameter &#xff09;组成的列表、函…

使用HttpClient库的爬虫程序

使用HttpClient库的爬虫程序&#xff0c;该爬虫使用C#来抓取内容。 using System; using System.Net.Http; using System.Threading.Tasks; ​ namespace CrawlerProgram {class Program{static void Main(string[] args){// 创建HttpClient对象using (HttpClient client new…

数据结构 - 顺序表ArrayList

目录 实现一个通用的顺序表 总结 包装类 装箱 / 装包 和 拆箱 / 拆包 ArrayList 与 顺序表 ArrayList基础功能演示 add 和 addAll &#xff0c;添加元素功能 ArrayList的扩容机制 来看一下&#xff0c;下面的代码是否存在缺陷 模拟实现 ArrayList add 功能 add ind…