概率机器人2_C2 状态估计-贝叶斯滤波器

2023-12-21 19:20

本文主要是介绍概率机器人2_C2 状态估计-贝叶斯滤波器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Abbr:

 TBD

牢记

重点

  • 后验:posterior , 先验:prior
  • 概率密度函数: PDF
  • 一维正态分布表示:
  • 离散时间: 本书中的时间将是离散的, t1,t2,t3,... tn
  • 状态用 x 表示,尽管 x 所包含的具体变量取决于上下文。时间 t的状态表示为 xt 。
  • 在时间 t 的测量数据表示为 zt
  • 控制数据用 ut表示
     
  • pose : 6自由度表示 : (x,y,z)坐标和对应的 三个旋转角 (roll,pitch,yaw)--一阶就是得到速度变化率,只在平面上运动的话,就缩减为(x,y,0),(0,0,yaw=heading angle) 3个自由度。
  • 系统状态等于某一个绝对值(真值)的概率。用bel (xt)表示
  • 运动学状态 =(kinematic state)
  • 地标:环境物体的位置都是静态的。本书将物体假设为地标 (landmarks) 形式
  • 状态 xt,是随机地,由状态 xt-1 产生的。因此,指定生成 xt的概率分布是有意义的 。表示为:  。如果状态 x 是完整的,那么它是所有以前时刻发生的所有状态的充分总结

本节是全书的理论基石


Recursive State Estimation 递归状态估计

核心:就是由传感器数据来进行“状态估计”

状态方程中的状态变量 通常不能被传感器准确,直接测得。---无法只通过一次测量确定位姿 (同一个场景中,如果有相同的门,没法确定是哪一个!)。必须长时间整合数据以确定它的位姿 。 而且还混杂了噪声。因此用概率置信度来估计状态变量。比如定位问题,机器人自己在哪儿?--98%的概率处于坐标(x,y)处。

 

1. 基本概念:

随机变量:传感器测量、控制、机器人的状态及其环境

概率推理: 由其他随机变量和所观测数据推导随机变量的相关定律 的过程
Probability Density Function PDF : p(x)

概率密度函数:的积分总为1,

一维正态分布PDF:

多维正态分布的PDF:

协方差矩阵:

本书假设:连续空间,随机变量的取值连续, 都存在概率密度函数

 联合分布-joint distribution , 独立的事件(随机变量取值为x,y --传感器测量值为z1,z2 ...)的联合分布就是p(z1,z2...)=p(z1)p(z2)...

条件概率:p(zt| zt-1,zt-2,...) 传感器历史测量值zt-1,zt-2 .. 发生的条件下,测量值为zt的概率。Zt 是真值。

一般表达式--p(x,y)/p(y)= p(x|y) ,如果x,y 独立,则,p(x).p(y)/ p(y)= p(x) = p (x|y)

Y 不会有任何关于 X 值的信息。如果对 X 感兴趣则知道 Y 值没有任何帮助
 

全概率公式

事件Y在y 取值空间内,能得到事件(结果)X=x值得可能性,先验过程

贝叶斯公式:表达了条件概率和 "逆"条件概率的关系

 条件y=全概率-对应结果,x某一个原因, x' 表示所有的原因

 

已知:全概率,已知条件概率,求出逆条件概率,就直接运用公式。

x--对应原因(推测的状态变量值),y--结果(表示传感器的测量值zt-1,zt-2,...),已知结果,求原因,后验估计

注:下图中,分子上的x,或等式坐标的x的取值是某一个值,分母下面x'表示x的全部可能取值。这样才能利用全概率公式,求出p(y)

概率 p(ylx) 经常被称为生成模型 (generative model) , 因为在一定的抽象层面上,它表示状态变量 X 如何引起了检测数据

归一化的贝叶斯公式:
 

 

注: Vx-- 某一个任意x值, 下面 求和公式,x-x全部可能取值,为了得到全概率。 

 

因此: 贝叶斯,就是对应,一个条件下的xx事件的概率,比上 全部条件下 的xx事件的概率(全概率)== xx事件下,这一个条件发生的概率。


 

中文page 36

条件独立

咋一看,状态 x, 的出现可能是以所有过去的状态xt-1、测量zt和控制ut为条件的 。表示成: xt-1 和ut 可以表示xt的完整状态空间,和zt无关 和历史的控制量,状态量也无关,所以利用条件独立,得到

同理对于测量来说:只和当前的状态有关。

由上面的定义获得 2个概率定义--

测量概率 xt 表示当前状态,zt是测量值。  测量的结果由环境状态x产生。测量不准确有噪声,所以用概率的形式表示测到这个zt的真值的概率。这就是测量概率法则

状态转移概率state transition probability:

马尔可夫链 (Markov chain) :未来xt+1...可以是随机的,但是没有先于xt, 的历史状态变化可以影响未来状态的随机变化,除非这种依赖通过状态 xt, 起作用。满足这些条件的暂态过程通常称为马尔可夫链 (Markov chain) 。历史状态:xt-1,xt-2,xt-3....  当前状态xt, 未来的状态xt+1,xt+2...  (结合了上面2个概率-构成马尔科夫)

状态转移概率和测量概率一起描述机器人及其环境组成的动态随机系统。时刻t 的状态随机地依赖 t -1 时刻的状态和控制 ut, 。测量 zt, 随机地依赖时刻 t 的状态。

隐马尔可夫模型=动态贝叶斯网络下图时间生成模型也称为隐马尔可夫模型 (Hidden Markov Model , HMM) 或者动态贝叶斯网络 (Dynamic Bayes Network, DBN)

 


置信分布 ≈ 条件概率

我们无法直接测量系统的状态(位姿 -6自由度)。传感器的测量也不能直接测量获得位姿,同时含有噪声干扰的。

我们只能从历史测量数据中推断出 系统的状态(可能概率--置信度)。

因此有必要通过置信度来表达,系统状态等于某一个绝对值(真值)的概率。bel (xt)表示。

已知历史测量值(条件下),后验概率(条件概率)表示为:

考虑了, t 时的测量值Zt, 所有的历史测量和历史控制。

(注意比较前面的公式,想一想,如果xn 不能准确获得,只能通过测量和控制量来预测,就能理解了。  这里和下面贝叶斯滤波器,冲突,感觉公式改成 bel(xt)=p(xt| xt-1,ut) 更make sense.)

概率滤波器-框架

如果只是用t-1之前的测量和,历史控制,获得的bet(xt)为预测阶段:(xt还未发生,还未测量),表示

, (注意算法时间的话,应该用积分(算法求和)来表示1:t的所有历史信息)测得zt之后,,结合预测的, 进行修正,来更新预测( 测量更新阶段):

注:priro --就是贝叶斯公式中右边,条件的 每一个取值的概率。)分布情况,只有已知了。


贝叶斯滤波器:(中文page 38)

利用上面的公式预测和更新公式。

预测:,bel(xt-1),表示t-1时刻的置信度,前面的是状态转移概率。相乘表示同时发生的可能性。积分,表示历史信息的叠加.1到 t-1 时刻

更新;,p(xt|zt)=  ?利用贝叶斯公式, 获得。

初始化:,bel(x0) =xxx(x0,所有取值空间对应的概率,-先验), u0...t  (转移概率分布)已知, z0...t (测量概率分布)已知

这样可以预测下个时刻的bel(xt). 后验估计。(注意积分项,算法中实现就是一个累加的过程。)

这样系统就迭代循环起来了。 推导过程参考:<中文page41>

注: 注意xt-1 的下标。


算法:

TBC:  如何初始化定义这三个概率分布。chapter 5--转移概率, chapter 6-测量概率, 先验概率 bel(x0)  chapter 3&4


举例:

已知:

机器人可以测量(z1...zn, 取值空间为:开,关,对应测量概率分布p(zt|xt)--传感器概率模型),动作:(u1...ut,取值空间为:开门、关门, 对结果的影响,对应状态转移概率,p(xt|xt-1,ut),  系统x状态:开、关,对应的先验概率分布情况

这样可以估计任意时刻的置信度: bel(xt| zt,ut) = ??


总结

  • 假设世界是马尔可夫的,也就是状态是完整的,贝叶斯滤波算法以到时间 t 的测量和控制数据为条件来计算状态 x。是一种后验估计。
  • 2个概率法则:状态转移概率,测量概率 ; 贝叶斯估计(置信度bel(x))依赖有关测量、状态转移概率和初始置信度bel(x0)的假定,概率模型建模的过程肯定需要数学近似。近似过程(概率建模过程)需要考虑 :时间复杂度/效率, 精度,算法实现容易程度。
  • 贝叶斯滤波不是一个实际的算法,不能用数字计算机实现。 基于贝叶斯滤波框架有很多经典的算法,比如卡尔曼滤波、粒子滤波 etc...


 

 

 

 

这篇关于概率机器人2_C2 状态估计-贝叶斯滤波器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521185

相关文章

Flutter监听当前页面可见与隐藏状态的代码详解

《Flutter监听当前页面可见与隐藏状态的代码详解》文章介绍了如何在Flutter中使用路由观察者来监听应用进入前台或后台状态以及页面的显示和隐藏,并通过代码示例讲解的非常详细,需要的朋友可以参考下... flutter 可以监听 app 进入前台还是后台状态,也可以监听当http://www.cppcn

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

hdu1565(状态压缩)

本人第一道ac的状态压缩dp,这题的数据非常水,很容易过 题意:在n*n的矩阵中选数字使得不存在任意两个数字相邻,求最大值 解题思路: 一、因为在1<<20中有很多状态是无效的,所以第一步是选择有效状态,存到cnt[]数组中 二、dp[i][j]表示到第i行的状态cnt[j]所能得到的最大值,状态转移方程dp[i][j] = max(dp[i][j],dp[i-1][k]) ,其中k满足c