滤波算法与SLAM:从概率角度理解SLAM问题

news2024/10/22 5:00:55

滤波算法与SLAM

第三章:MAP/MLE问题和贝叶斯网络


文章目录

  • 滤波算法与SLAM
  • 前言
  • 一、最大后验问题(MAP)与最大似然问题(MLE)
  • 二、贝叶斯网络与SLAM问题
  • 三、因子图与SLAM问题
  • 四、从概率角度理解Kalman Filter与SLAM


前言

考虑到滤波与优化不分家,都是基于贝叶斯理论发展出来的,后续章节中必然会介绍因子图
所以本章大致介绍如何从概率角度理解SLAM问题
以及贝叶斯网络、因子图、Kalman Filter之间的关联


一、最大后验问题(MAP)与最大似然问题(MLE)

(本项目不面向完全的小白,所以会默认读者至少接触过本科的概率学,了解分布和协方差等内容)

正如第二章中提到过的,后验概率由似然概率与先验概率所决定,而在SLAM问题中可以理解为:

当我们有机器人的观测: Z n Z_n Zn,以及机器人的先验: X n − 1 X_{n-1} Xn1
那么在n时刻,机器人的位姿就应该使最大后验 P ( X n ∣ Z n ) P(X_n|Z_n) P(XnZn)最大
也就是 X n = a r g m a x    P ( X n ∣ Z n ) = a r g m a x    P ( Z n ∣ X n ) P ( X n − 1 ) X_n=argmax\; P(X_n|Z_n) = argmax\;P(Z_n|X_n)P(X_{n-1}) Xn=argmaxP(XnZn)=argmaxP(ZnXn)P(Xn1)

此时SLAM问题就变成了求某个 X X X使得后验概率 P ( X n ∣ Z n ) P(X_n|Z_n) P(XnZn)最大
即最大后验概率问题(Maximum A Posteriori, MAP)

那么最大似然问题呢(Maximum Likelihood Estimation, MLE)
注意最大后验概率中存在一个先验项 P ( X n − 1 ) P(X_{n-1}) P(Xn1)
如果这个先验项无法获得,或者属于均匀分布时,最大后验概率问题就退化成最大似然问题

简单解释为,最大似然问题不考虑先验概率,而最大后验问题会考虑

这里只需要理解最大后验概率问题是似然和先验的共同结果即可

(但是最好不要认为两者是一个东西,MLE更像频率派的想法,MAP更像贝叶斯派的想法,即便是当数据量极大时两者的结果差不多,但是为了不发生争吵,还是分开讲比较好,以和为贵)

在这里插入图片描述

二、贝叶斯网络与SLAM问题

想要深入理解的话,参考:贝叶斯网络介绍,这里只需要理解:

贝叶斯网络是一个有向图,用于表述概率分布之间的联系

比如一个概率分布满足: P ( a , b , c ) = P ( c ∣ a , b ) P ( c ∣ a ) p ( a ) P(a,b,c)=P(c|a,b)P(c|a)p(a) P(a,b,c)=P(ca,b)P(ca)p(a)
那么就可以用贝叶斯网络表述为:
在这里插入图片描述

回到SLAM问题中:

机器人的状态记为 X 0 : n = ( x 0 , x 1 , ⋯   , x n ) X_{0:n}=(x_0, x_1,\cdots,x_n) X0:n=(x0,x1,,xn)
机器人的观测记为 Z 0 : n = ( z 0 , z 1 , ⋯   , z n ) Z_{0:n}=(z_0, z_1,\cdots,z_n) Z0:n=(z0,z1,,zn)
那么最大后验概率问题就是令 P ( X 0 : n ∣ Z 0 : n ) P(X_{0:n}|Z_{0:n}) P(X0:nZ0:n)最大,换言之,令 P ( Z 0 : n ∣ X 0 : n ) P ( X 0 : n ) P(Z_{0:n}|X_{0:n})P(X_{0:n}) P(Z0:nX0:n)P(X0:n)最大

但是考虑到一般只需要求当前时刻的位姿,所以上述问题可以简化为
x ∗ = arg ⁡ max ⁡ x n P ( Z 0 : n ∣ x k ) P ( x k ) x^*=\arg \mathop{\max}\limits_{x_n}P(Z_{0:n}|x_k)P(x_k) x=argxnmaxP(Z0:nxk)P(xk)

假设观测都是独立的,那么上述公式可以写成
x ∗ = arg ⁡ max ⁡ x n ∏ i = 0 n P ( z i ∣ x k ) P ( x k ) x^*=\arg \mathop{\max}\limits_{x_n}\prod_{i=0}^nP(z_{i}|x_k)P(x_k) x=argxnmaxi=0nP(zixk)P(xk)
画成贝叶斯网络如下
在这里插入图片描述
再进一步的,考虑多个时刻的状态进来,就可以将贝叶斯网络画成:
在这里插入图片描述
理解了贝叶斯网络与SLAM最大后验概率问题的关系后,就可以介绍因子图了

三、因子图与SLAM问题

因子图的原理是对概率图进行因式分解
比如这里的贝叶斯网络中, P ( ∗ ) P(*) P()代表的是概率密度函数

那么因子图就使用一个通用的公式来表示这些关系
∏ i = 0 n P ( z i ∣ x k ) P ( x k ) → ∏ i = 0 n f i ( z i , x k ) f x ( x k ) \prod_{i=0}^nP(z_{i}|x_k)P(x_k)\rightarrow\prod_{i=0}^nf_i(z_i,x_k)f_x(x_k) i=0nP(zixk)P(xk)i=0nfi(zi,xk)fx(xk)
这样就可以基于这个公式画一个无向图
在这里插入图片描述
圆形是状态量,不可观测,只能计算,方形是观测变量

用因子图就可以很直观地看出来每个变量之间的关系

再进阶一些,看LIO-SAM的因子图表示
在这里插入图片描述
雷达观测需要比较前后帧点云来得出轨迹变化,所以绿色部分会链接两个状态,IMU的预积分同理

而GPS与上下文均无关系,是直接获得的,所以用起来也不需要和谁链接取先验

至于因子图的求解与使用,参考GTSAM使用教程即可

四、从概率角度理解Kalman Filter与SLAM

这里就是贝叶斯滤波公式的推导了,能够参考的内容很多,推荐这里

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

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

相关文章

我谈傅里叶变换幅值谱的显示

在图像处理和分析中通常需要可视化图像傅里叶变换的幅值谱。通过幅值谱,可以直观地观察频率成分的分布,帮助理解图像的结构和特征。 很多刊物中直接显示傅里叶变换的幅值谱。 FFT fftshift(fft2(double(Img))); FFT_mag mat2gray(log(1abs(FFT)));由…

【Linux】线程基本概念,线程控制

目录 基本概念 重新理解进程 线程真实存在吗? 问题解答 线程资源 线程控制 线程创建 如何全面看待线程函数传参 如何看到线程函数返回 线程查询 线程等待 线程终止 线程分离 基本概念 线程(thread)是指在单个进程内,多…

探索前端与 AI 的结合:如何用 GPT-4 助力开发效率

前言:开发者的“神队友” GPT-4 还记得那些深夜奋战,紧盯着屏幕敲代码的日子吗?表单不验证、布局乱飞、BUG 根本找不到,这些时刻简直能让人抓狂。你可能会想:“要是有个智能助手能帮我搞定这些多好!” 那么…

#HarmonyOS:页面和自定义组件生命周期

页面生命周期 即被Entry装饰的组件生命周期 onPageShow:页面每次显示时触发一次,包括路由过程、应用进入前台等场景。onPageHide: 页面每次隐藏时触发一次,包括路由过程、应用进入后台等场景。onBackPress: 当用户点击返回按钮是触发 组件…

全面了解 NGINX 的负载均衡算法

NGINX 提供多种负载均衡方法,以应对不同的流量分发需求。常用的算法包括:最少连接、最短时间、通用哈希、随机算法和 IP 哈希。这些负载均衡算法都通过独立指令来定义,每种算法都有其独特的应用场景。 以下负载均衡方法(IP 哈希除…

如何让自己的网站,被更多的人搜索到(免费方案)

文章目录 一、要做时间的朋友二、需要独立IP的服务器三、SEO信息如何设置设置网站TDK生成网站地图设置搜索引擎自动提交部署SSL证书加分项:定期更新文章 引言: 许多人都有这样一个问题:做好自己的网站,如何让这个网站被更多的人浏…

WPF实现类似网易云音乐的菜单切换

这里是借助三方UI框架实现了,感兴趣的小伙伴可以看一下。 深色模式:​ 浅色模式: ​这里主要使用了以下三个包: MahApps.Metro:UI库,提供菜单导航和其它控件​​​​​​​ 实现步骤:1、使用B…

SSRF-利用dict协议-攻击redis

1.靶场准备: CTFHub-技能树-Web-SSRF-Redis协议 蚁剑AntSword 2.简述: 2.1 SSRF 服务器端请求伪造,存在一个url参数,一般用于图片上传、网页重定向等,我们可以控制url参数,去访问内网服务器的敏感内容…

前端vue框架配置基础信息详解分析

前端vue2、vue3框架是我们最近常用的框架,今天我们分析一下配置基础信息、详解其中的功能含义。 1、vue.config.js 文件分析 这个 vue.config.js 文件是 Vue CLI 项目中用于配置项目构建行为和开发环境设置的文件。它能够让开发者定制打包、代理、路径、样式等方面…

干货:落地企业级RAG的实践指南

1. 什么是RAG? 检索增强生成(Retrieval-Augmented Generation,简称 RAG)通过结合大型语言模型(LLM)和信息检索系统来提高生成文本的准确性和相关性.这种方法允许模型在生成回答之前,先从权威知…

spdlog学习记录

spdlog Loggers:是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlog 中,一个 Logger 对象代表着一个日志记录器,应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks:决定了日志消息的输出位置。在 Spdlog 中&…

深入拆解TomcatJetty(三)

深入拆解Tomcat&Jetty(三) 专栏地址:https://time.geekbang.org/column/intro/100027701 1 Tomcat组件生命周期 Tomcat如何如何实现一键式启停 Tomcat 架构图和请求处理流程如图所示: 对组件之间的关系进行分析,…

MySQL(python开发)——(3)表数据的基本操作,增删改查

MySQL(python开发)——(1)数据库概述及其MySQL介绍 MySQL(python开发)——(2)数据库基本操作及数据类型 MySQL—— 表数据基本操作 一、表中插入(insert)数据——增 insert into 表名 values (值1&#…

人工智能正在扼杀云计算的可持续性

可持续性曾是公共云计算中备受推崇的优势。企业和云提供商大肆宣扬他们的绿色计划,推广采用可再生能源的数据中心,以减少碳足迹。 近几个月来,这个话题已悄然淡出人们的视线。罪魁祸首是什么?对人工智能功能的无限需求正在推动云…

大数据-180 Elasticsearch - 原理剖析 索引写入与近实时搜索

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

Django配置路由后,为什么输入http://127.0.0.1:8000/ 网址后报错了?

问题探讨:为什么输入http://127.0.0.1:8000/ 网址后报错了? 翻译一下: 屏蔽一下新加的路由 发现界面正常了 现在翻译一下: 是不是比较理解了,admin 属于默认配置的URL,所以urlpatterns为空列表或仅配置admin路由时&…

【算法篇】贪心类(1)(笔记)

目录 一、理论基础 1. 大纲 2. 求解步骤 二、Leetcode 题目 1. 分发饼干 2. 摆动序列 3. 最大子序和 4. 买卖股票的最佳时机 II 5. 跳跃游戏 6. 跳跃游戏 II 7. K 次取反后最大化的数组和 8. 加油站 9. 分发糖果 一、理论基础 1. 大纲 2. 求解步骤 将问题分解为…

人工智能:塑造未来生活与工作的力量

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《热点时事》 期待您的关注 引言 随着人工智能技术的不断发展,我们已经看到了它在各行业带来的巨大变革。 在医疗行业中…

【wpf】08 xml文件的存取操作

在使用wpf编程过程中,会用到xml的配置文件,实现对其读取和存储的操作是必须的。 1 xml说明 可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许…

git clone报错fatal: pack has bad object at offset 186137397: inflate returned 1

逐步拷贝 https://stackoverflow.com/questions/27653116/git-fatal-pack-has-bad-object-at-offset-x-inflate-returned-5 https://www.cnblogs.com/Lenbrother/p/17726195.html https://cloud.tencent.com/developer/ask/sof/107092182 git clone --depth 1 <repository…