概率机器人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

相关文章

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征

AI学习指南机器学习篇-朴素贝叶斯处理连续特征和离散特征 在机器学习领域,朴素贝叶斯是一种常用的分类算法,它的简单性和高效性使得它在实际应用中得到了广泛的应用。然而,在使用朴素贝叶斯算法进行分类时,我们通常会面临一个重要的问题,就是如何处理连续特征和离散特征。因为朴素贝叶斯算法基于特征的条件独立性假设,所以对于不同类型的特征,我们需要采取不同的处理方式。 在本篇博客中,我们将探讨如何有效地处理

青龙面板2.9之Cdle傻妞机器人编译教程

看到有的朋友对傻妞机器人感兴趣,这里写一下傻妞机器人的编译教程。 第一步,这里以linux amd64为例,去官网下载安装go语言安装包: 第二步,输入下方指令 cd /usr/local && wget https://golang.google.cn/dl/go1.16.7.linux-amd64.tar.gz -O go1.16.7.linux-amd64.tar.gz

HTTP状态码中301与302的区别

一.官方说法  301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于:  301 redirect: 301 代表永久性转移(Permanently Moved)。  302 redirect: 302 代表暂时性转移(Temporarily Moved )。  这是很官方的说法,那么它们的区别到底是什么呢?  1.1、什么是301转向?什么是301重定向?

群体优化算法---电磁共振优化算法(EROA)介绍包含示例滤波器设计

介绍 电磁共振优化算法(Electromagnetic Resonance Optimization Algorithm, EROA)是一种新型的元启发式优化算法,其灵感来源于电磁共振现象。电磁共振是一种物理现象,当一个系统在特定频率下响应最大时,这个频率被称为共振频率。在优化算法中,共振频率可以用来引导搜索过程,提高优化效率 EROA 算法的基本原理 种群初始化: 在搜索空间内随机生成一定

Zustand 状态管理库简介

1. Zustand 简介 Zustand(德语中意为“状态”)是一个使用简单 API 的 React 状态管理库。它的核心思想是以状态切片(slices)的方式组织应用状态,从而实现高效的状态管理。Zustand 提供了比 Redux 更加简洁和直接的用法,同时支持异步操作和中间件。 在React开发中,状态管理是一个非常重要的概念。虽然 React 提供了 useState 和 useRe

基于动力学的六自由度机器人阻抗恒力跟踪控制

1.整个代码的控制流程图如下: 2.正逆运动学计算 略 3.动力学模型 采用拉格朗日法计算机械臂的动力学模型,其输入的是机械臂的关节角度、角速度和角加速度;其中M、C、G本别是计算的惯性力、科式力和重力项,相关部分如下: 4.RBF神经网络自适应参数调节 采用RBF自适应调节阻抗控制器参数,末端每个方向单独进行参数的调整,其中rbf的输入的是力和位置,输出的是阻抗控制器的参数,rb

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览(一)问题的提出(二)文章工作 二、理论背景(一)密度比估计DRE(二)去噪扩散模型 三、方法(一)推导分类和去噪之间的关系(二)组合训练方法(三)一步精确的似然计算 四、实验(一)使用两种损失对于实现最佳分类器的重要性(二)去噪结果、图像质量和负对数似然 论文:Classification Diffusion Models: Revitalizing

基于协方差信息的Massive MIMO信道估计算法性能研究

1. 引言 随着移动互联网不断发展,人们对通信的速率和可靠性的要求越来越高[1]。目前第四代移动通信系统已经逐渐商用,研究人员开始着手研究下一代移动通信系统相关技术[2][3]。在下一代移动通信系统中要求下行速率达到10Gbps,这就要求我们使用更先进的技术和更宽的系统带宽。MIMO技术由于可以在不增加系统带宽和功率的前提下,成倍的提升系统容量和可靠性,已经广泛应用于各种无线通信系统中,但仅采用

基于RAG的知识库AI代理机器人,问题思考

基于RAG的知识库AI代理机器人,问题思考 知识库内容分类 对于普通非qa问答格式的知识内容 在分段存储时,需要手动调整,保证每个分段的内容意思完整,不被分割,当然段落也不宜过长,保证内容表达的意思到不可分割为止就行 对于qa问答格式的知识内容 通常需要对问题增加格外索引,因为fastgpt的模式是将问题和回答,作为完整的文本作为向量化的坐标,当问题和回答的内容过长时,使用问题向量化匹配

ESP32使用按键配网并通过LED指示网络状态

前言 上面我们已经可以通过 ESPTOUCH 和 Airkiss 给模块配网,并且存储在 nvs 中,重启后仍然可以联网,只是这样仍然不能满足我们实际的应用,这次我们增加按键作为输入,LED作为输出,实现长按按键配网,并可以通过LED指示网络状态。 添加自己的组件 为了让程序结构更加清晰,所以我们在smart_config例程的基础上做了修改,在main文件夹里新建了main.c 、smar