《视觉SLAM十四讲》学习笔记-状态估计问题

2023-05-16

最大后验与似然

经典slam模型可表示为:

{x⃗ k=f(x⃗ k1,u⃗ k)+w⃗ kz⃗ k,j=h(y⃗ j,x⃗ k)+v⃗ k,j { x → k = f ( x → k − 1 , u → k ) + w → k z → k , j = h ( y → j , x → k ) + v → k , j

注意这里的 x⃗  x → 为相机的位姿,可以用 李群 Tk T k 李代数 exp(ξk) exp ⁡ ( ξ k ∧ ) 表示。假设在 x⃗ k x → k 对路标 y⃗ j y → j 进行一次观测,对应到图像的位置为 z⃗ k,j z → k , j ,则观测方程为:
sz⃗ k,j=Kexp(ξk)y⃗ j s z → k , j = K exp ⁡ ( ξ k ∧ ) y → j

式中 s s 为像素点的距离。式中zk,j y⃗ j y → j 皆为齐次坐标.
不妨假设噪声项 w⃗ k w → k v⃗ k,j v → k , j 满足零均值高斯分布:
w⃗ kN(0,Rk),  v⃗ k,jN(0,Qk,j) w → k ∼ N ( 0 , R k ) ,     v → k , j ∼ N ( 0 , Q k , j )

先把所有的待估计变量放在一个 状态变量中:
x⃗ =x⃗ 1,,x⃗ N,y⃗ 1,,y⃗ M x → = x → 1 , ⋯ , x → N , y → 1 , ⋯ , y → M

对机器人状态的估计,转变为求已知输入数据 u⃗  u → 和观测数据 z⃗  z → 和条件下,计算状态 x⃗  x → 的条件概率: P(x⃗ |z⃗ ,u⃗ ) P ( x → | z → , u → ) .

当没有运动测量的传感器,即不存在 u⃗  u → 时,上述问题转变为Structure from Motion(SfM)问题。此时,利用贝叶斯法则有:

P(x⃗ |z⃗ )=P(z⃗ |x⃗ )P(x⃗ )P(z⃗ )P(z⃗ |x⃗ )P(x⃗ ) P ( x → | z → ) = P ( z → | x → ) P ( x → ) P ( z → ) ∝ P ( z → | x → ) P ( x → )

上式中, P(z⃗ |x⃗ ) P ( z → | x → ) 似然, P(x⃗ ) P ( x → ) 先验。此时可用 MAP(Maximize a Posterior, MAP)求解:
x⃗ MAP=argmax P(x⃗ |z⃗ )=argmax P(z⃗ |x⃗ )P(x⃗ ) x → ∗ M A P = arg ⁡ max   P ( x → | z → ) = arg ⁡ max   P ( z → | x → ) P ( x → )

进一步地,假设机器人无法获得自己的位置,即 x⃗  x → 没有,则可求解 x⃗  x → 最大似然估计(Maximize Likelihood Estimation, MLE):
x⃗ MLE=argmax P(z⃗ |x⃗ ) x → ∗ M L E = arg ⁡ max   P ( z → | x → )

上式可理解为”在什么样的状态下,最可能产生现在观测到的数据”.

最小二乘问题:

对一次观测:

z⃗ k,j=h(y⃗ j,x⃗ k)+v⃗ k,j z → k , j = h ( y → j , x → k ) + v → k , j

并且有假设 v⃗ k,jN(0,Qk,j) v → k , j ∼ N ( 0 , Q k , j ) ,条件概率为:
P(z⃗ k,j|x⃗ k,y⃗ j)=N(h(y⃗ j,x⃗ k),Qk,j)) P ( z → k , j | x → k , y → j ) = N ( h ( y → j , x → k ) , Q k , j ) )

为求解该问题,回忆一个任意的高维高斯分布 x⃗ N(u⃗ ,Σ) x → ∼ N ( u → , Σ ) ,其概率密度函数为:
P(x⃗ )=1(2π)Ndet(Σ)exp(12(x⃗ u⃗ Σ1(x⃗ u⃗ ))) P ( x → ) = 1 ( 2 π ) N det ( Σ ) exp ⁡ ( − 1 2 ( x → − u → ⊤ Σ − 1 ( x → − u → ) ) )

两边取负对数后变为:
ln(P(x⃗ ))=12ln((2π)Ndet(Σ))+12(x⃗ u⃗ Σ1(x⃗ u⃗ )) − ln ⁡ ( P ( x → ) ) = 1 2 ln ⁡ ( ( 2 π ) N det ( Σ ) ) + 1 2 ( x → − u → ⊤ Σ − 1 ( x → − u → ) )

应用上述公式,第一项与 x⃗  x → 无关可移除,代入slam观测模型结果为:
x⃗ =argmin((z⃗ k,jh(x⃗ k,y⃗ i))Q1k,j(z⃗ k,jh(x⃗ k,y⃗ i))) x → ∗ = arg ⁡ min ( ( z → k , j − h ( x → k , y → i ) ) ⊤ Q k , j − 1 ( z → k , j − h ( x → k , y → i ) ) )

定义数据与误差之间误差为:
{e⃗ v,k=x⃗ kf(x⃗ k1,u⃗ k)e⃗ y,j,k=z⃗ k,jh(x⃗ k,y⃗ j) { e → v , k = x → k − f ( x → k − 1 , u → k ) e → y , j , k = z → k , j − h ( x → k , y → j )

则误差平方项之和为:

J(x⃗ )=ke⃗ v,kR1ke⃗ v,k+kjey,k,jQ1k,jey,k,j J ( x → ) = ∑ k e → v , k ⊤ R k − 1 e → v , k + ∑ k ∑ j e y , k , j ⊤ Q k , j − 1 e y , k , j

此式即为总体意义下的 最小二乘问题(Least Square Problem).

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

《视觉SLAM十四讲》学习笔记-状态估计问题 的相关文章

  • sql 语句 将查询结果中数字等标示转成汉字

    使用case 语句 将sex 字段进行转换 0 1 2 男 xff0c 女 xff0c 未知 SELECT u userid u username CASE u sex WHEN 0 THEN 39 女 39 WHEN 1 THEN 39
  • linux的more命令

    more命令 xff0c 功能类似 cat xff0c cat命令是整个文件的内容从上到下显示在屏幕上 more会以一页一页的显 示方便使用者逐页阅读 xff0c 而最基本的指令就是按空白键 xff08 space xff09 就往下一页
  • docker入门实例

    1 image文件 Docker 把应用程序及其依赖 xff0c 打包在 image 文件里面 只有通过这个文件 xff0c 才能生成 Docker 容器 image 文件可以看作是容器的模板 Docker 根据 image 文件生成容器的
  • vim批量替换&行首尾增加&删除列

    删除列 删除列的方法 xff1a 1 ctrl 43 v 这样会启动可视模式 xff0c 按 j k 可以发现它能够在一列上面选中字符 2 按下 G 这样可以从文本的第一行选中到最后一行 3 按下 x 就会把这一列删掉 行首尾替换 xff1
  • vim 支持 python

    https www jianshu com p 3e606e31da5f 前段时间刚玩linux时为了图个简单打算直接用vim来写python代码省得再下个软件 xff08 好吧 xff0c 其实是自己下了好多次都失败了 xff0c 一气之
  • 用户态和核心态的概念以及为什么要区别?以及两者之间的切换

    一 用户态和核心态的概念 用户态 xff1a 内核态与用户态是操作系统的两种运行级别 当程序运行在3级特权级上时 xff0c 就可以称之为运行在用户态 xff0c 因为这是最低特权级 xff0c 是普通的用户进程运行的特权级 xff0c 大
  • strstr(str1,str2)函数使用时注意事项

    可能有的人还没听过strstr函数 xff0c 个人认为这个一个很实用的函数 xff0c strstr str1 str2 函数是字符串处理函数之一 xff0c 位于头文件 string h 中 对于处理字符串的一些问题有很大的帮助 定义
  • Java This 的用法

    JAVA This的用法 先写一个要调用的类 都放在名为test的包下面 在这里插入代码片package test span class token keyword public span span class token keyword
  • 关于松耦合和紧耦合的理解

    松耦合系统通常是基于消息的系统 xff0c 此时客户端和远程服务并不知道对方是如何实现的 客户端和服务之间的通讯由消息的架构支配 只要消息符合协商的架构 xff0c 则客户端或服务的实现就可以根据需要进行更改 xff0c 而不必担心会破坏对
  • 第六篇 键盘中断与应用程序读取键盘缓冲区

    这篇博文主要介绍在X86下键盘的中断过程 xff0c 以及应用程序如何利用中断读取键盘缓冲区内容 一 撰写该篇博文的背景介绍 在我们全屏看视频时 xff0c 按下Esc键 xff0c 播放器还原或者最小化 xff1b 在利用其他软件的时候
  • 发现一个aruco在线生成器,可以在线生成aruco CharucoBoard GridBoard AprilTag 图片, 真香

    最近在研究 opencv 检测 aruco标记项目 xff0c 想弄点aruco标记码来测试 xff0c 发现网上很少在线生成aruco标记码的工具 xff0c 导致在做测试时候浪费了很多时间去搞这个码 xff0c 基本上大家都用 xff0
  • FreeRTOS基础六:中断管理1

    嵌入式实时系统需要对外界的某个事件做出及时的响应动作 例如串口外设收到了一帧数据后 xff0c 需要通知数据解析任务 xff0c 同时还要将数据帧传递给解析任务 xff0c 完成数据的处理 设计出一种好的策略来完成这个过程时需要考虑以下几个
  • FreeRTOS基础四:队列

    简介 FreeRTOS中的队列是一种用于实现 任务与任务 xff0c 任务与中断 以及 中断与任务 之间的通信 机制 此外 xff0c 任务从队列读数据或者写入数据到队列时 xff0c 都可能被阻塞 这个特性使得任务可以被设计成基于事件驱动
  • FreeRTOS基础二:堆内存管理之heap_4方案

    背景知识 从FreeRTOS V9 0 0内核版本开始 xff0c 内核对象占用的内存可以在编译期间静态分配 xff0c 也可以在运行期间动态分配 内核对象如 xff1a tasks xff08 任务 xff09 xff0c queues
  • MQ与Webservice的区别

    Webservice 和MQ MessageQueue 都是解决跨平台通信的常用手段 xff0c 两者有哪些区别呢 xff1f 个人认为最本质的区别在于 Webservice近乎实时通信 xff0c 而MQ却通常是延时通信 什么意思呢 xf
  • uORB通信机制和添加自己的topics学习笔记

    本文参考 Ubuntu16 04下PX4环境快速搭建及uORB通信机制进行操作 结合网上一篇uROB的介绍PX4 Pixhawk uORB深入理解和应用进行深入的了解 1 简介 uORB Micro Object Request Broke
  • 看到一篇很好的介绍磁力计原理的博客

    详细内容戳这里http blog sina com cn s blog 402c071e0102v8ig html
  • QT工程转换为VS2013项目文件

    xff08 win7系统 xff09 1 点击开始 xff0c 输入cmd xff0c 打开cmd 2 输入cd c apm点击回车键 注 xff1a apm是我的qt的工程文件夹 xff0c 最好放在c盘 xff0c 其他盘转换都不成功
  • C语言:函数返回字符串的四种方法

    转载连接 xff1a 1 https blog csdn net turkeyzhou article details 6104135 comments 2 https www cnblogs com qingergege p 649668
  • C语言:字符串中查找指定字符——strchr()和strrchr()

    参考文章连接 xff1a 1 http c biancheng net cpp html 161 html 2 http c biancheng net cpp html 172 html 1 头文件 xff1a include lt st

随机推荐

  • C语言:整型、浮点型和字符串间转换

    参考文章链接 xff1a 1 http c biancheng net cpp html 1573 html 2 http c biancheng net cpp html 1574 html 1 整型 浮点型 gt 字符串 整数转换为字符
  • 学习贵在坚持!

    最近学习颇为不顺 xff0c 周围都是一些不利的消息 xff0c 有些心灰意冷 可是这不是与我写本文的初衷相悖了么 xff1f 看到了比自己优秀的人干出来辉煌的事情 xff0c 写出来文字优美的文章 xff0c 自己就有相形见绌的自卑感 可
  • Qt中 QString 和int, char等的“相互”转换

    原文链接 xff1a https blog csdn net ei nino article details 7297791 Qt中 int float double转换为QString 有两种方法 1 使用QString number 如
  • 计算器第二版:C语言,VC++6.0

    使用栈实现 xff0c 前缀表达式变后缀表达式的原理 xff0c 但是没有转换 xff0c 是边转换边实现 xff1a include lt stdio h gt include lt stdlib h gt include lt coni
  • 计算器第三版:C语言,递归,VC++6.0

    参考文章 xff1a https blog csdn net u011692041 article details 49796343 https blog csdn net u011692041 article details 497991
  • 计算器第四版:C++,QT

    核心算法和第二版一样 xff1a 头文件 xff1a calculate h ifndef CALCULATE H define CALCULATE H include lt QMainWindow gt include lt QPushB
  • USB协议概念学习

    1 USB总线结构 usb的总线拓扑结构如下所示 xff1a 从USB总线结构可以看出 xff0c 主要由3部分组成 xff1a USB主机 Host USB线缆 USB设备 hub Func等 USB主机 xff1a 一般成为USB Ho
  • 创新工场两道笔试题0919

    题目1 字符串去重 xff0c 老题目 xff0c 只是要求不能开辟新空间用来复制原字符串 思路 xff1a 使用布尔型的简单hash表可以节省空间 xff0c 用来存储字符是否出现的信息 xff0c 刚开始hash表里面都是false x
  • ROS仿真机器人学习笔记二:创建4轮小车模型及相关xraco文件修改

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 例如 xff1a 第一章 Python 机器学习入门之pandas的使用 提示 xff1a 写完文章后 xff0c 目录可以自动生成 x
  • 旧电脑升级Windows11时检查CPU和TPM2.0不满足的解决方案(慎重)

    上个月微软发布了Windows11 22H2正式版 xff0c 不少新电脑也接收到了推送 xff0c 楼主的台式 xff08 i3 8100 军规星H310M xff09 也接收到了推送 xff0c 但是碍于Win11蛋疼的右键和状态栏消息
  • windows下安装docker

    windows下安装docker 0 前置条件 环境说明 xff1a windows11 家庭中文版 开启Hyper V xff08 可以百度如何开启 xff09 如何添加Hyper V 创建hyper txt xff0c 复制如下内容 x
  • STM32CubeMX配置生成FreeRTOS项目

    文章目录 1 安装STM32CubeMX软件1 1 下载安装1 2 安装要用到的芯片软件包 2 配置FreeRTOS项目2 1 创建工程2 2 配置SYS2 3 配置RCC2 4 配置系统运行时钟2 5 配置UART1串口作为调试代码2 6
  • ScrumMaster的教练职责

    ScrumMaster是Scrum团队的敏捷教练 Ken Rubin说 xff0c 类似于运动团队的教练 xff0c ScrumMaster观察团队使用Scrum的过程 xff0c 帮助团队提高工作绩效 教练不是顾问 xff0c 不提供解决
  • Autoware.Auto avp仿真详解

    1 定位 定位节点启动的是 ndt localizer 61 Node package 61 39 ndt nodes 39 executable 61 39 p2d ndt localizer exe 39 namespace 61 39
  • VMware + ubuntu16.04 + ROS kinetic 下配置realsense D435i 遇到的问题

    在配置Realsense D435i 的过程中 xff0c 遇到一个问题 执行 scripts patcg realsebse ubuntu lts sh 下载速度奇慢 10K s左右 而且会在接受到36 的时候不动了 xff0c 等了一晚
  • 白话tensorflow分布式部署和开发

    关于tensorflow的分布式训练和部署 xff0c 官方有个英文的文档介绍 xff0c 但是写的比较简单 xff0c 给的例子也比较简单 xff0c 刚接触分布式深度学习的可能不太容易理解 在网上看到一些资料 xff0c 总感觉说的不够
  • 全息投影技术

    1 概念 全息投影技术 xff08 front projectedholographic display xff09 也称 虚拟成像 技术是利用干涉和衍射原理记录并再现物体真实的 三维 图像的技术 全息投影技术不仅可以产生立体的空中幻像 x
  • Ardupilot飞控添加使用诺瓦泰GPS

    Ardupilot飞控添加使用诺瓦泰双天线GPS航向角的设置 一 添加诺瓦泰GPS heading角数据包解析代码 1 打开libraries AP GPS AP GPS NOVA h xff0c 添加如下代码 xff1a struct P
  • SD标准以及规范

    SD标准及规范 SD应用 SD标准让制造商能生产高性能之产品来提升数百万计消费者的体验 xff0c 包含听音乐 录制视频 摄影 数据储存以及使用移动电话 身为一个产业的标准 xff0c SD标准被用于行动存储产业的多个市场领域中 xff0c
  • 《视觉SLAM十四讲》学习笔记-状态估计问题

    最大后验与似然 经典slam模型可表示为 xff1a x k 61 f x k 1 u k 43 w k z k j 61 h y j x k 43 v