【学习记录】贝叶斯滤波详解

2023-05-16

贝叶斯滤波详解

贝叶斯滤波的用途(Bayesian Filtering):
贝叶斯滤波理论的应用可谓十分广泛。我们知道,在机器人运动过程中,有两个方面的信息来源,一个是通过我们实际控制机器人的运动路线(状态方程)和机器人传感器观测的实际信息(观测方程)来估计自身的位姿,但实际上,无论是状态还是观测都不可避免的存在噪声。假如机器人单方面的仅通过状态方程或观测方程来估计自身位姿,这样一来随着时间的不断推移,机器人估计的位姿与机器人实际的位姿误差将会越来越大。这时候我们就需要考虑这样一个问题:如何有效的融合控制信息和观测信息(状态方程和观测方程,即对同一状态的不同估计)从而减小机器人估计自身位姿的不确定度,这时候贝叶斯滤波理论就派上用场了。

贝叶斯滤波理论简介:
通过贝叶斯公式对随机信号进行处理,减小噪声带来的不确定性。

接下来,我们将从贝叶斯公式出发,从零开始一步步理解贝叶斯滤波。

贝叶斯学派

在统计学中,贝叶斯学派是区别于频率学派的又一大派别。我们高中所学的概率统计是基于频率学派思想,频率学派认为,一个事件的概率是可以通过大量重复实验下的事件出现的频率来给出(基于大数定理),且该事件的概率不依赖于主观判断给出的概率。(举个例子,比如有一个人拿一枚硬币,根据之前的某种经验,他认为正面朝上的概率是0.7,那么对于是否要把0.7的概率作为将来计算正面朝上的概率的一个参考,频率学派持反对意见,而贝叶斯学派则恰恰相反,他们认为主观的经验反倒有借鉴意义)
在这里插入图片描述
事实上,贝叶斯学派的思想在现如今得到人们的青睐还有一个更重要的原因:那就是许多事情无法进行大量的重复实验(随机实验)因为每一次重复实验都应有一个前提,那就是实验的条件应该严格相同或至少大致相同。然而现实生活中大多数情况都不具备如此理想的条件。比如天气预测,股市分析,当然也包括机器人的姿态估计。

(转化为数学描述就是频率派眼中的概率符合大数定律,样本x1,x2,…,xk之间相互独立,互不干扰。而生活中的很多情况是随机过程,彼此之间相互关联,无法依赖于大量重复的随机实验进行预测)

贝叶斯学派进行概率估计的时候将人们的主观经验称为先验概率,在主观经验的基础上得到某个结果的概率叫做似然概率,而将那个结果作用于先验信息,最终更新先验概率得到的预测结果的概率叫做后验概率(会不会有点绕,没事,我接下来举个例子就能慢慢理解了)

贝叶斯公式

我们通过一个例子给出贝叶斯公式:

比如我们这时候想要测温度,通过某种经验(比如往年今日的气温)得出今天可能的气温概率如下:
在这里插入图片描述
而此时,温度计的读数显示是29度(由于温度计也有误差,因此观测结果也不是绝对准确的)。

这时候,根据以上信息,如果我们要估计今天是30度的概率,该如何估计呢?

这时候便引入贝叶斯公式:
在这里插入图片描述

其中:
在这里插入图片描述

而对于P(E),我们可以这样理解:
在这里插入图片描述

因此,P(E)与H的取值无关,而与H的分布率有关。

所以P(E)也可以表示一个常数,即:
在这里插入图片描述
那么我们的估计,用贝叶斯公式表示就是:
在这里插入图片描述

连续随机变量下的贝叶斯公式

详细推导过程:

相较于上部分的概率分布是离散的形式,我们再来推导一下连续随机变量下的贝叶斯公式:

(Y,X是连续随机变量,概率服从一定的分布函数)

但我们不能直接使用类推,简单想想:由于是连续随机变量,因此对于每一个具体取值的概率都将趋于0.

这时候我们可以将取值先化为一个具体的区间,即先求P(X<x|Y=y),并转化为求和,则有:

但实际上,分子和父母都是趋于0,这就成了一个0/0型,但这并不是求极限,我们也不能使用洛必达(汗)

同样的思想,再将概率中的取值转化为一个区间,只不过这次是一个极小的区间,看看能不能约掉什么:

利用积分的思想,将小区间下的概率转化为密度函数在小区间上的积分(其中f是概率密度函数),即:

再运用中值定理,有:
在这里插入图片描述
由于epsilon趋于0,那么可以将xi1,xi2,xi3近似为y,u,y,再约去epsilon:
在这里插入图片描述
通过观察,这是一个无穷小求和形式,我们可以将其转化为积分的形式:
在这里插入图片描述
在这里插入图片描述

最后这便是连续随机变量下的贝叶斯公式,(发现和贝叶斯公式挺像的,只不过将概率换成了概率密度函数)

那么我们是否也可以将其写成[先验]*[似然]最后乘上一个常数的形式呢?

可以的,因为:

在这里插入图片描述

再用那个矩形想一想,就是阴影面积之和,且由于实际公式中只有x是变量(最终出来是关于x的分布),观测值y是已知的,所以fY(y)最终积出来就是一个常数,即:
在这里插入图片描述

同样是测温度的例子:

假设今天的气温符合N(30,1)的正态分布(先验):
在这里插入图片描述
温度计读数为29度。(这里还需考虑传感器精度,假设传感器精度为土0.2°C)(似然):
在这里插入图片描述

(后验):
在这里插入图片描述
最终结果(计算过程略):
在这里插入图片描述

在这里插入图片描述

对比一下可以发现:

先验N(30,1),似然N(29,0.2^2),后验N(29.038,0.038)

方差减小了,不确定性下降了,即融合了先验与观测信息,从而实现了更精确的估计。

由于中间步骤计算繁琐,接下来直接给出推得的公式:
在这里插入图片描述
同样的,贝叶斯滤波理论也可用于多传感器融合算法(两个精度一般的传感器的运动估计->精度较高的运动估计)

随机过程的贝叶斯滤波

在前几个小节中,我们所讨论的随机变量都是相互独立的,但在机器人感知中,机器人的运动估计其实就是一个随机过程
随机过程彼此之间不独立,由一定的递推公式连接:
在这里插入图片描述
其中X_0是初值,初值一般只由主观猜测决定(先验)
那么我们如何从初始时刻的状态X_0,加上观测信息,进而估计到k时刻的状态X_k而又保证估计值的精度呢?

方法1:所有的X_0~X_k的先验概率都靠(直接忽略状态方程)
缺点:过于依赖观测值,放弃预测信息,等于说估计值的误差就是传感器的误差。

方法2:只有X_0是靠猜测,其余的X_1到X_k靠状态方程递推。
因此递推的情况下引入状态方程(预测方程):(反映X_k与X_k-1之间的关系):
在这里插入图片描述

同时又有观测方程(状态与传感器读数之间的转化关系,比如状态是位移,传感器是加速度传感器,之间就有一个转换方程):
在这里插入图片描述
有了状态方程和观测方程,我们又该如何递推呢?

方法1:不考虑观测方程
假设有状态方程X_k=2X_k-1,无噪声(状态方程绝对准确),无观测
且初值X_0~N(0,1)则有:
在这里插入图片描述
可以发现,如果只通过状态方程,由于初值X_0具有误差,因此误差会不断在迭代过程中累积,最终方差将会越来越大,模型越来越不准确。(原因:没有引入观测)

更准确的递推方式
在这里插入图片描述
即:将上一步的后验概率作为下一步的先验概率
在这里插入图片描述
具体该如何实现?

详细推导过程:

已知:
1.状态方程,观测方程:
在这里插入图片描述
2.随机独立性
在这里插入图片描述
3.观测值y_1,y_2,…,y_k已知,f_0(x),f_Q_k(x),f_R_k(x)已知

重要定理:条件概率里的条件可以做逻辑推导,例:
在这里插入图片描述
预测步:
在这里插入图片描述
更新步:
在这里插入图片描述
完整的递推过程:
在这里插入图片描述

最终的贝叶斯滤波算法:
在这里插入图片描述

且由于状态方程可以是多变的,因此贝叶斯滤波并不能直接运用于实际算法。

因此在贝叶斯滤波理论的基础上,人们又扩展了许多算法用于解决实际问题:
在这里插入图片描述
参考来源:忠厚老实的王大头

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【学习记录】贝叶斯滤波详解 的相关文章

  • Linux查看当前时间

    一 查看和修改Linux的时区 1 查看当前时区 命令 xff1a date R 2 修改设置Linux服务器时区 方法 A 命令 xff1a tzselect 方法 B 仅限于RedHat Linux 和 CentOS 命令 xff1a
  • 如何查看redis版本号

    Windows下查看redis版本号 1 打开redis所在目录启动 redis server 服务器端 2 启动 redis cli 客户端 3 客户端输入 xff1a info 结果如下 xff1a linux下查看redis的版本号
  • 三个练手的软件测试实战项目(附全套视频跟源码)偷偷卷死他们

    项目一 xff1a 12306抢票项目 项目测试目的 学会Selenium定位web元素的方法 熟练浏览器调试工具使用 项目主体步骤 1 xff09 人工走一遍流程 xff0c 对自动化的流程心中有数 2 xff09 按步骤拆分 xff0c
  • 基于LSTM的多变量温度预测(python从入门到入坑)

    基于LSTM的多变量温度预测 xff08 python xff09 我保证他能够运行 xff0c 而且结果能够让你满意 xff08 如果你和我一样都是一个新手的话 xff09 这里写目录标题 基于LSTM的多变量温度预测 xff08 pyt
  • 安装RabbitMQ出现Plugin configuration unchanged.问题

    安装RabbitMQ出现Plugin configuration unchanged 问题 rabbitmq server和opt版本 出现问题 xff1a 在安装RabbitMQ并配置好环境之后运行命令rabbitmq plugins e
  • selenium之 如何控制网页内嵌div中滚动条的滚动

    http blog csdn net huilan same article details 52131277 很多人疑惑怎么用selenium控制网页div中滚动条的滚动 xff0c 其实这个问题很简单 xff0c 用JS很简单就可以实现
  • Mysql如何设置id自增

    xff08 1 xff09 设置自增 方案一 xff1a CREATE TABLE IF NOT EXISTS user id INT UNSIGNED AUTO INCREMENT name VARCHAR 100 NOT NULL se
  • Centos安装RabbitMQ超详细(必须收藏)

    最近搞了台liunx xff08 centos xff09 服务器 xff0c 想玩一下rabbitMQ 但是发现csdn没有一个详细或者便捷的安装流程 xff0c 特此写了这么一篇文章 xff01 记得三连 万分感谢 xff01 首先Wi
  • Mysql占用CPU过高排查过程及可能优化方案

    1 查看生产DB服务器top列表 xff0c 执行 top 命令 2 使用root用户登录mysql 执行 show full processlist 查看慢查询 xff0c 反复执行 xff0c 如果发现一直有select 查询语句存在
  • SQLServer2019安装(Windows)

    目录 一 SQLServer2019下载 1 官网下载地址 2 下载安装包 2 1 选择Developer版本 立即下载 2 2 选择下载位置 3 安装 3 1 打开 SQLServer2019 x64 CHS Dev iso
  • 香橙派4在armbian上应用自启动设置

    编辑了一个qt界面 需要设置开机启动 xff0c 费了九牛二虎之力 xff0c 终于搞定了 设置开机显示命令行 开机不显示图形界面 xff0c 直接显示命令行的操作有两种方法 xff1a 多用户方法 sudo systemctl set s
  • vscode 中git解决冲突,合并代码的两种方法

    一 报错信息 有文件冲突的话 xff0c 会报错 xff1a git merge pre span class token operator span master span class token comment 合并 pre maste
  • 用Python爬取淘宝4403条大裤衩数据进行分析,终于找到可以入手的那一条

    炎炎夏日 xff0c 长裤已难以满足广大男生的需求 xff0c 为了在搬砖和摆摊的过程中增添一丝舒适感 xff0c 他们开始寻找一种神奇的存在 大裤衩 J哥在种菜的这些日子里也日益感受到大裤衩的重要性 xff0c 于是 xff0c 默默打开
  • 用户标签有哪些类型,如何进行科学分类?

    标签的分类 xff0c 是理解用户标签 理解用户画像的基础 优秀的标签分类 xff0c 将使得标签画像系统易于用户的使用 本篇文章和大家简单介绍一下标签数据的分类 按照不同的分类方法 xff0c 标签的分类也自然不同 本文主要介绍几种最常规
  • Python字符串查找函数find

    Python字符串查找函数find 比较简单 xff0c 直接上代码 总结下规则 xff0c 结果数字说明 按字符串索引下标查询 xff0c 索引从0开始 xff0c 空格会占位并且有下标结果 1 xff0c 代表没有查找到英文区分大小写
  • 闲着看看jquery.ajax源码

    框架的作用就是简化我们做的事情 xff0c 却又不失灵活性 jquery是js框架中的中流砥柱 xff0c 灵活并且强大 jquery中对ajax的封装很完美 xff0c 且不说底层的ajax函数的强大 xff0c 但是其上层的get xf
  • java 转json 报错处理机制 案例 .

    JSON lib这个Java类包用于把bean map和XML转换成JSON并能够把JSON转回成bean和DynaBean http kingpingping iteye com blog 1157771 报错处理机制 commons b
  • 关于jquery对象的remove参数中出现伪位置类选择器,出现非预期结果的研究

    记得前几天有人在论坛发帖问了一个关于jquery删除节点的问题 原帖是这样的 xff08 原帖的地址是 xff1a 原帖 xff09 lt ul gt lt li gt 1 lt li gt lt li title 61 34 a 34 g
  • linux源码阅读利器-GNU GLOBAL Source Code Tag System

    学习浏览linux源码 xff0c 如果自己用自带的文本编辑器就太麻烦了 xff0c 但是如果安装强大的lxr那就太麻烦了 xff08 对于非debian用户来说 xff09 xff0c 找了很久找到了一个用起来很不错的源码浏览工具 xff
  • android 4.0.1源码编译,学习错误解决

    主机是fedora 14 linux内核2 6 35 6 swapon交换分区1 5G make version 3 81 官方指定的make版本 xff09 jdk 1 6 磁盘预留空间大概需要大于13G 具体的编译步骤可参考 Fedor

随机推荐

  • android webApp 调试问题解决

    前不久做了个webapp xff0c 在pc上chrome调试都是可以的 但是手机上显示却有点问题 xff0c 所以一直是想在手机浏览器上调试 xff0c 但是一直没有相关支持 xff0c 后来google终于出了chrome beta版
  • android系统源代码分析 书评

    其实接触android应用开发差不多两年了 xff0c 但是实际上并没与多少拿得出手的作品 因为在很长一段时间里我都在问自己android是什么 xff0c 内部怎么运行的 xff0c 为什么我的java代码就可以在linux上运行 xff
  • Fedora18博通430g电信无线拨号上网

    回家折腾了有两三天 xff0c 想让fedora18 也能蹭上网 首当其冲的问题就是fedora 没有为无线网卡安装驱动 xff0c 只能自己慢慢找驱动 费了好久找到上传了驱动下载 xff0c 满心欢喜按照README 编译 xff0c 结
  • VR技术的发展趋势,未来有哪些展望?

    虚拟现实技术Virtual Reality xff0c 缩写为VR xff0c 是一项全新的实用技术 虚拟现实技术包含计算机 电子信息 仿真技术于一体 xff0c 其基本实现方式是计算机模拟虚拟环境从而给人以环境沉浸感 目前来看 xff0c
  • APM2.8 Rover 自动巡航车设计(超声波和红外测距仪的安装和设置)

    xff08 转载 xff09 4 1 ROVER自动巡航车自主壁障的设置 APM2 8的飞控驾驶仪的传感器接入支持超声波 xff0c 电压传感器 xff0c 电流传感器 xff0c 光流传感器 xff0c 红外传感器 其中超声波和红外传感器
  • 学习笔记(一)-古月ROS机器视觉开发入门 -摄像头参数标定

    我们做图像处理为的就是要得到图像的数据 xff0c 在得到这些数据之后怎么对这些数据进行处理 xff0c 这才是我们主要关心的问题 但是 xff0c 在此之前 xff0c 我们还需要做一个非常主要的步骤 对摄像头的参数进行参数标定 安装标定
  • 卸载ROS的方法

    1 卸载全部ros span class token variable sudo span span class token variable apt get span span class token variable remove sp
  • Json String to Java Bean

    34 version 34 1 34 consentId 34 34 b618924f 8a6c 42bc 8553 99e3a8a0fec4 34 34 domain 34 34 cd site15294072534021 com 34
  • 实战PyQt5: 097-键盘事件

    在一个GUI桌面应用中 xff0c 用户和程序之间的交互一般通过键盘和鼠标来完成 xff0c 处理有关键盘和鼠标的事件是一个GUI程序几乎不可或缺的部分 xff0c 下面介绍在Qt中处理输入焦点和键盘事件的相关知识 设置控件的输入焦点 在一
  • 线性代数之——特征值和特征向量

    线性方程 A x 61 b Ax 61 b A x 61 b 是稳定状态的问题 xff0c 特征值在动态问题中有着巨大的重要性
  • Px4源码框架结构图

    此篇blog的目的是对px4工程有一个整体认识 xff0c 对各个信号的流向有个了解 xff0c 以及控制算法采用的控制框架 PX4自动驾驶仪软件 可分为三大部分 xff1a 实时操作系统 中间件和飞行控制栈 1 NuttX实时操作系统 提
  • aruco marker 的使用

    安装aruco 教程 xff1a make make install
  • PX4自定义Mavlink消息(一)px4发送

    用于项目需求 xff0c 需要在PX4和QGC新增自定义消息用于通信控制 xff0c 看了很多有关文章 xff0c 我就不明白 xff0c 为啥代码都是复制来复制去的 xff0c 大部分的文章连变量名的起的一样 一点帮助都没有 xff0c
  • QGC接收PX4自定义Mavlink消息(二)qgc接收

    这里补充一些 xff0c 我的px4版本是1 11 0dev xff0c 在ubuntu18 04上开发 xff0c qgc为目前官网最新的版本 xff0c 在windows上上开发 xff0c 大家的源码会因为版本差异而有少许区别 xff
  • OpenWRT无线配置

    默认开启无线网络 修改 xff08 package kernel mac80211 files lib wifi mac80211 sh xff09 vi span class hljs built in package span kern
  • cmake自动添加所有源文件和头文件

    cmake自动添加源文件和头文件 一 背景 项目中需要不断新建源文件和头文件 xff0c 每添加一个文件CMakeLists txt中需要手动加入源文件和指定头文件路径 xff0c 不胜其烦 突发奇想cmake能不能像IDE一样 xff0c
  • github在线修改文章

    github在线添加文件夹 输入文件名字后 xff0c 再输入英文模式下的 即可 修改fork后自己的 xff0c 直接提交 Github 网页上 更新 Fork别人的 Repository https blog csdn net huut
  • GPS 0183协议GGA、GLL、GSA、GSV、RMC、VTG解释 + 数据解析

    每个时区跨15 经度 以0 经线为界向东向西各划出7 5 经度 xff0c 作为0时区 即0时区的经度范围是7 5 W 7 5 E 从7 5 E与7 5 W分别向东 向西每15 经度划分为一个时区 xff0c 直到东11区和西11区 东11
  • selenium借助AutoIt识别上传文件Java篇

    https www cnblogs com testlc p 6069460 html 官方网站 xff1a https www autoitscript com site 从网站上下载AutoIt并安装 xff0c 安装完成在菜单中会看到
  • 【学习记录】贝叶斯滤波详解

    贝叶斯滤波详解 贝叶斯滤波的用途 xff08 Bayesian Filtering xff09 xff1a 贝叶斯滤波理论的应用可谓十分广泛 我们知道 xff0c 在机器人运动过程中 xff0c 有两个方面的信息来源 xff0c 一个是通过