关于因子图在SLAM中的应用基础理论总结

2023-05-16

参考文章:
1.张兴学. 基于因子图的多传感器信息融合导航算法研究[D].哈尔滨工业大学,2018.
2.SLAM 中的位姿图优化,BA优化,因子图优化,非线性优化之间的区别
3.因子图的理论基础
4.机器人感知:因子图在SLAM中的应用(读书笔记)第一至三章

SLAM中的定位问题,是根据先验信息(上一时刻的位姿和已知路标点信息)以及传感器的观测值(当前时刻测到的路标点信息),推断出该时刻的位姿以及未知路标点位置。对于这样一个概率推理问题,可通过因子图简化。

因子图是概率图模型的一种表示方式,表示了全局函数和局部函数之间的关系,同时也表示了各个变量与局部函数之间的关系。通过因子图可以将复杂系统进行简化,有利于处理复杂的概率问题。

例如对于一个函数 f ( x 1 , x 2 , x 3 , x 4 ) = f 1 ( x 1 , x 2 ) f 2 ( x 2 , x 3 , x 4 ) f 3 ( x 4 ) f(x_1,x_2,x_3,x_4)=f_1(x_1,x_2)f_2(x_2,x_3,x_4)f_3(x_4) f(x1,x2,x3,x4)=f1(x1,x2)f2(x2,x3,x4)f3(x4)与其对应的因子图可以表示为:
在这里插入图片描述
如上图所示, x x x代表变量, f f f代表因子,当且仅当 f f f是关于 x x x的函数时,才会相连。并且每个因子对应唯一结点,每个变量对应唯一的边缘或半边缘(只与一个因子相连)。所以每个变量最多同时连接2个因子!

如果一个变量出现在多个因子中时,例如𝑋是一个实数随机变量, 𝑌 1 𝑌_1 Y1 𝑌 2 𝑌_2 Y2是关于 𝑋 𝑋 X的两个独立实数带噪声观测量。则这些变量的联合概率密度是: f ( x 1 , y 1 , y 2 ) = f ( x ) f ( y 1 ∣ x ) f ( y 2 ∣ x ) f(x_1,y_1,y_2)=f(x)f(y_1|x)f(y_2|x) f(x1,y1,y2)=f(x)f(y1x)f(y2x)与其对应的因子图可以表示为:
在这里插入图片描述
其联合概率密度是: f ( x , x ′ , x ′ ′ , y 1 , y 2 ) = f ( x ) f ( y 1 ∣ x ′ ) f ( y 2 ∣ x ′ ′ ) f = ( x , x ′ , x ′ ′ ) f(x,x',x'',y_1,y_2)=f(x)f(y_1|x')f(y_2|x'')f_=(x,x',x'') f(x,x,x,y1,y2)=f(x)f(y1x)f(y2x)f=(x,x,x)这里的等式约束函数: f = ( x , x ′ , x ′ ′ ) ≜ δ ( x − x ′ ) ( x − x ′ ′ ) f_=(x,x',x'')≜\delta(x-x')(x-x'') f=(x,x,x)δ(xx)(xx)等式约束因子可以看做是一个分支,它允许超过两个以上的因子去使用同一个变量。


消息传递算法
和—积算法规则:沿着边缘𝑥从结点(因子)𝑔传递出的信息是𝑔和沿着除𝑥以外其余所有边缘传入的信息的乘积,然后对除𝑥以外其余所有相关变量进行求和的结果。
在这里插入图片描述
例如上图,对于输出 μ 3 \mu_3 μ3,等于除 x x x以外的边缘传入信息+相关变量求和: μ 3 ≜ f 3 ( x 1 , x 2 , x 3 , x 4 ) μ 1 μ 2 ∑ x 1 , x 2 , x 3 \mu_3≜f_3(x_1,x_2,x_3,x_4)\mu_1\mu_2∑_ {x_1,x_2,x_3} μ3f3(x1,x2,x3,x4)μ1μ2x1,x2,x3


以下为知乎上一些回答的总结:
因子图优化,可以在问题的拓扑结构上进行一些顶层抽象和简化,而不是直接硬解,相当于多了一步简化过程。如果只有路标和位姿之间的因子,和BA优化完全一样。因子图优化的优化落脚点不再是最小二乘理论了,而是最大后验概率理论了。相比较卡尔曼滤波,因子图的优势是,无论是数据压入多少维度,解法是一样的。

综上,我理解因为因子图的消息传递算法,在接收到新的观测信息后,根据传感器的观测方程以及相应的代价函数进行变量边缘的状态更新,实现多传感器的数据融合。所以无论有多少传感器数据,计算方法都是一样的。

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

关于因子图在SLAM中的应用基础理论总结 的相关文章

  • FMT-模型在环仿真(MIL)

    前提条件 matlab版本是2018B及以上版本下载好了FMT Model工程 设置MIL仿真 打开matlab xff0c 进入到FMT Model目录 xff0c 左键双击打开FMT Model prj 打开过程它自己会初始化工程 xf
  • 【移植Ardupilot的日志记录方法到linux上】

    移植Ardupilot的日志记录方法到linux上 说明日志结构组成日志写入操作预定义日志项运行时添加日志项的方法 单例测试编译方法查看数据其他 说明 采用二进制文件记录 xff0c 可在mission planer查看 支持所有数据类型记
  • 一、linux内核源码分析(内核源码结构组成)

    应该说是把linux内核这部分知识提前了 xff0c 因为坐公交需要点视频来打发一下时间 xff0c 感觉linux内核的视频就不错 xff0c 就顺便把linux内核提前了 这一次也是打算视频和书一起看 xff0c 然后总结 书的话还是推
  • Android开发:使用Lambda表达式高效开发

    简介 xff1a JDK1 8后java开始支持Lambda表达式 xff0c 使用Lambda表达式我们就可以在Android中替换匿名类的写法 本来一个Button点击事件监听要写6行代码 xff0c 我们1行就可以搞定 1 引入依赖
  • ros开发与室内定位(一)

    ROS下搭建 UWB 下行数据解析驱动 Linux内核版本 xff1a ubuntu 15 05 ROS版本 xff1a indigo 搭建局域网 xff0c 向网内的主机提供室内标签实时的定位信息 xff0c 该Demo可以利用UDP协议
  • ubuntu1604 ROS下实时双目ORB-SLAM的环境搭建

    本文主要记录本萌新从零开始搭建ORB SLAM环境的一个过程 xff0c 因为第一次装双系统 xff0c 本来就遇到了很多的问题 来来回回装了好多天才弄好 xff0c 中间遇到的主要问题和步骤参考放在下边 xff0c 可能帮助到别人的话就倍
  • 机器学习题目汇总

    1 深度学习中的激活函数需要具有哪些属性 xff1f 计算简单非线性具有饱和区几乎处处可微 ABD 解析 xff1a xff08 1 xff09 非线性 xff1a 导数不能是常数 xff08 2 xff09 几乎处处可微 xff1a si
  • 天猫精灵云云对接

    天猫精灵云云对接 一 技能开发二 产品开发 接入过程出现了一些问题 xff0c 特此记录 xff0c 用来给朋友们参考 xff0c 随意记录 xff0c 不接受批评 前情提要 xff1a 注册并认证 天猫精灵开放平台 AliGenie 一
  • 关于Altium Designe中元器件添加PDF的简述

    一 缘由 xff1a 今天无意之间在书本上看到关于元器件的Datasheet添加 xff0c 也想起自己曾经为了查询元器件datasheet xff0c 费了不少时间 xff0c 所以写下了此篇博文 二 关于添加步骤 xff1a 1 打开自
  • opencv面试知识点

    文章目录 一 opencv基础1 OpenCV中cv Mat的深拷贝和浅拷贝问题2 opencv常用数据结构和函数2 1 QImage和Mat之间的转换 3 颜色空间 RGB HSV4 基本图形的绘制 二 opencv xff08 core
  • VSCode 整理格式快捷键

    Shift 43 Alt 43 f
  • 【情人节特辑】相机也成双——直观理解对极几何中的四个重要矩阵(外参矩阵、内参矩阵、基本矩阵、本质矩阵)

    祁子禹 引言 在奔逸不羁的童年 xff0c 笔者对理科知识的好奇无际无边 某天曾在外婆家的煤棚子里一通乱翻 xff0c 缴获了大舅学生时代的几何光学课本 xff0c 不料遭遇开幕雷击 xff1a 人的眼球好比照相机 xff0c 我们要为革命
  • 【2022小米秋招(2023校招)】软件开发方向 笔试题1——链表反转

    题目 xff1a 给你单链表的头指针 head 和两个整数 left 和 right xff0c 其中 left lt 61 right 请你反转从位置 left 到位置 right 的链表节点 xff0c 返回反转后的链表 输入描述 xf
  • 使用stm32裸机或者rtt系统遇到的坑

    目录 一 rt thread使用 16 LSE晶振初始化会出现一定的失败几率 15 串口队列溢出的问题 14 升级失败问题 13 rt thread PWM1 CH1 CH1N 无法同时使用问题 12 使用换用c8芯片不能进入main函数
  • k8s网络通信原理

    https blog csdn net qq 41688840 article details 108708415 要了解和分析Pod中的container容器网络 xff0c 那么首先肯定是要了解docker容器网络的几种模式以及常见用法
  • 修改mavros中话题的发布频率

    修改mavros中话题的发布频率 参考链接及命令分析 参考了以下文章的提高mavros中提高IMU话题频率的方法 xff0c 再通过其介绍推出其他话题的频率修改方法 提高mavros中IMU话题的发布频率 修改命令的含义分析 作者提到了以下
  • Docker入门到实践 (五) docker数据的备份、恢复与迁移

    文章目录 一 前言二 docker数据的备份 恢复与迁移方式一 xff1a docker容器的备份 恢复与迁移1 docker容器的备份 导出 2 docker容器的迁移与恢复 导入 方式二 xff1a docker镜像的备份 恢复与迁移1
  • Telnet协议和SSH协议

    1 Telnet协议定义 远程登陆协议 xff0c 用于对设备进行远程管理 xff0c 基于明文 目前不建议使用 xff0c 建议采用SSH协议 xff0c 采用TCP 23号端口 2 原理 xff1a Telnet12 0 1 28 te
  • js中数组和set的相互转化

    1 array gt set xff08 数组转set xff09 例子 xff1a span class token keyword let span array span class token operator 61 span spa
  • 驼峰命名规则

    驼峰规则 1 小驼峰式命名法 xff08 lower camel case xff09 xff1a 第一个单字以小写字母开始 xff0c 第二个单字的首字母大写 例如 xff1a firstName lastName 2 大驼峰式命名法 x

随机推荐

  • 机器人巡线算法优化方案

    引言 大赛机器人的运行环境是大赛的场地 比赛时场地的情况将非常复杂 因此 机器人必须知道自己当前的位置才能决定要执行怎样的动作 定位是大赛机器人各种性能发挥的基础 也是机器人全场路径自动规划的基础 目前 比较先进的机器人定位方法为陀螺导航
  • 如何在评论中以超链接的方式放置链接

    如何在评论中以超链接的方式放置链接 格式 xff1a url 61 链接 显示的内容 url 例子1 xff1a url 61 http blog csdn net qq 39189509 article details 73716422
  • STM32唯一ID(Unique Device ID)的读取方法

    每一个STM32微控制器都自带一个96位的唯一ID xff0c 也就是Unique Device ID或称为UID xff0c 这个唯一ID在任何情况下都是唯一的且不允许修改 在开发过程中 xff0c 可能需要用到这个UID xff0c 比
  • 设计算法以判断集合A是否是集合B的子集

    一 题目 xff1a 假设递增有序的带头结点的链表A B分别表示一个集合 xff0c 试设计算法以判断集合A是否是集合B的子集 xff0c 如是返回1 xff0c 否则返回0 二 思路 xff1a 1 A的值大于B的值 xff0c 那就A的
  • 将两个递增有序的带头结点的单链表A、B合并成为一个递增有序的带头结点的单链表

    一 题目 将两个递增有序的带头结点的单链表A B合并成为一个递增有序的带头结点的单链表 二 思路 将单链表A B遍历 xff0c 比较两个链表中元素的值 xff0c 分为下列情况 xff1a A lt B 则A的指针向后移一位 xff0c
  • 将链表L就地逆置,即利用原表各结点的空间实现逆置

    一 题目 将链表L就地逆置 xff0c 即利用原表各结点的空间实现逆置 二 思路 在链表的第二个元素开始执行逆置 xff0c 因为如果链表只有一个元素 xff0c 那么逆置就没有意义了 步骤 xff1a 假设原链表如下 xff1a 将结点1
  • Android| failed to connect to /10.0.2.2 (port 80) after 10000ms

    关于使用android模拟器访问本地服务器失败 第一种 xff1a 使用Google自带的模拟器 用http 127 0 1 1访问失败 描述 xff1a 明明在浏览器中使用http 127 0 1 1可以访问Apache本地服务器 xff
  • you-get【视频下载】

    如何安装you get 在目录C Users jia AppData Local Programs Python Python36 Scripts中shift 43 右键 xff0c 唤出命令行窗口 xff08 如果配置好了环境变量 xff
  • python中调用adb命令来控制手机

    前言 如今python是非常多人学习的 xff0c 而手机也几乎人手一部 对于很多Python学习者 xff0c 想用python来完成android手机中各种炫酷的的控制 xff0c adb是必不可缺少的工具之一 比如17年末大热的微信
  • 中断和中断Handlers

    任意一个操作系统的核心responsibility都是管理连接到机器上面的硬件 包括硬盘 键盘 鼠标 3D处理器等 为了满足这项responsibility xff0c 内核需要和机器本身通信 xff0c 假如说处理器在维度上比他访问的硬件
  • 从github下载项目(clone)

    1 首先去官网下载git xff0c 安装 xff08 基本都是默认 xff09 2 本地创建文件夹用来存放下载的项目 3 在第二个文件夹下打开 git bash here 4 复制地址 5 在bash下面输入 git clone 43 地
  • 结构体中有指针成员的逐层malloc 与 free

    1 malloc的时候注意 xff0c 如果结构体有结构体指针成员 xff0c malloc的时候需要逐层都进行malloc 先malloc最外面的event nodeP xff0c 才能访问到event nodeP gt dataP 和
  • 摄像头云台的设计,组装与使用方法

    摄像头云台的设计 xff0c 组装与使用方法 简介三维模型的设计实物组装接线配置环境编写程序实物效果 简介 本篇是摄像头云台的设计与使用方法 xff0c 用树莓派进行控制 xff0c 具体应用于我自制的多功能小车上边 xff0c 目前整个小
  • map文件查看

    map文件里面内容大致分为五大类 xff08 按照map文件分类的顺序 xff09 xff1a 1 Section Cross References xff1a 模块 段 入口 交叉引用 xff1b 2 Removing Unused in
  • AuthenticationProvider AuthenticationManager

    1 AuthenticationManager AuthenticationProvider UserDetailsService 2 多重认证 3 实现
  • docker之dockerFile

    在Dockerfile中用到的命令有 FROM FROM指定一个基础镜像 xff0c 一般情况下一个可用的 Dockerfile一定是 FROM 为第一个指令 至于image则可以是任何合理存在的image镜像 FROM 一定是首个非注释指
  • ubuntu如何安装最新版的npm

    使用 apt安装的npm总是因为版本过低报错 xff0c span class token function npm span ERR span class token operator span Linux 4 15 0 136 gene
  • C语言之__attribute__

    公众号 xff1a 嵌入式不难 attribute 声明函数属性 可以使用 attribute 来声明函数的属性 xff0c 这些属性可以帮助编译器优化调用或更仔细地检查代码的正确性 例如 xff0c 属性 noreturn 用来指定函数从
  • 树莓派3B 2.0 通用联网篇

    文章目录 前言一 开篇说明二 使用步骤用无线免驱网卡 xff08 推荐 xff09 用下载器来控制ssh终端手机USB共享网络ENC28J60共享网络查询IP 针对于用手机usb共享的方法 使用SSH开启VNC 总结 前言 继上篇文章更新一
  • 关于因子图在SLAM中的应用基础理论总结

    参考文章 xff1a 1 张兴学 基于因子图的多传感器信息融合导航算法研究 D 哈尔滨工业大学 2018 2 SLAM 中的位姿图优化 xff0c BA优化 xff0c 因子图优化 xff0c 非线性优化之间的区别 3 因子图的理论基础 4