【深蓝学院】手写VIO第4章--基于滑动窗口算法的 VIO 系统:可观性和 一致性--笔记

news2024/11/26 4:27:28

0. 内容

在这里插入图片描述
由于我们是要做一个实时的定位系统,而不是SfM那种离线的三维重建的工作,所以需要在滑动窗口中不断地添加新数据以及删除旧数据,而前者可以把所有数据放在一个BA中求解。

1. 从高斯分布到信息矩阵

在这里插入图片描述
SLAM问题的建模,MAP->MLE->LSP,我们只关心最大后验分布的那个点
在这里插入图片描述
在这里插入图片描述
这个 Σ − 1 \Sigma^{-1} Σ1表示的是每次观测所占的权重,可调,也有方法可以动态地估计出。 Σ − 1 \Sigma^{-1} Σ1,可以看论文。
之前的正规矩阵中没有写 Σ − 1 \Sigma^{-1} Σ1是因为当时设为单位阵,实际上中间是有个权重矩阵 Σ − 1 \Sigma^{-1} Σ1
在这里插入图片描述
如图中的绿框
在这里插入图片描述

在这里插入图片描述
协方差对角线元素为对应下标的元素的协方差,由于是零均值,所以 μ = 0 \mu=0 μ=0
右边表示x和y之间的相关性情况,如果是严格线性的,那点的分布就是一条直线,但是明显不是严格线性的,即协方差矩阵非对角元素不为0。
计算方法参考下图:
在这里插入图片描述
在这里插入图片描述
所以零均值的分布, C o v ( x i x j ) = E ( x i x j ) − E ( x i ) E ( x j ) = E ( x i x j ) Cov(x_ix_j)=E(x_ix_j)-E(x_i)E(x_j)=E(x_ix_j) Cov(xixj)=E(xixj)E(xi)E(xj)=E(xixj)(下面式(11)用到)

本节课主题:如何往窗口中加新的变量以及把旧的变量删掉。

下面的例子有助于我们理解SLAM问题中的信息矩阵 H H H的组成。

1.1 例子1

在这里插入图片描述

在这里插入图片描述

对于(11),此处是写为了标量形式,回顾第3章3.3节的结论:
在这里插入图片描述

(11)的结果写成矩阵形式就是 ω 1 σ 2 2 ω 1 T + σ 1 2 \omega_1\sigma_2^2\omega_1^T+\sigma_1^2 ω1σ22ω1T+σ12

求协方差矩阵的逆,可以直接对(13)求逆,但是麻烦,还可以通过计算联合高斯分布来得到协方差矩阵的逆:

在这里插入图片描述
条件 = 联合 边缘 ,上述有向无环图箭头的起点表示条件,终点表示结果。故 条件=\frac{联合}{边缘},上述有向无环图箭头的起点表示条件,终点表示结果。故 条件=边缘联合,上述有向无环图箭头的起点表示条件,终点表示结果。故(14)由来: p ( x 1 , x 2 , x 3 ) = p ( x 1 , x 3 ∣ x 2 ) ∗ p ( x 2 ) = p ( x 1 ∣ x 2 ) ∗ p ( x 3 ∣ x 2 ) ∗ p ( x 2 ) p(x_1,x_2,x_3)=p(x_1,x_3|x_2)*p(x_2)=p(x_1|x_2)*p(x_3|x_2)*p(x_2) p(x1,x2,x3)=p(x1,x3x2)p(x2)=p(x1x2)p(x3x2)p(x2)
不清楚为什么(14)可以这样写,本来从协方差矩阵中可以看出 x 1 , x 3 x_1,x_3 x1,x3不是相互独立的,但是写出来的感觉好像是独立的。(这个问题在下面有解释)
然后就是通分,结合高斯分布的形式:
在这里插入图片描述

可以看出协方差矩阵的逆就是中间的那个矩阵。

回答上面的问题,从 Σ − 1 \Sigma^{-1} Σ1可以看出, Σ 13 = Σ 31 = 0 \Sigma_{13}=\Sigma_{31}=0 Σ13=Σ31=0,代表在变量 x 2 x_2 x2的条件下, x 1 , x 3 x_1, x_3 x1,x3是相互独立的。即当房间2的温度( x 2 x_2 x2)确定时,房间1,3的温度( x 1 , x 3 ) x_1, x_3) x1,x3)互不影响,相互独立。所以其实上面推导(14)时已经是使用了“ x 2 x_2 x2的条件下, x 1 , x 3 x_1, x_3 x1,x3相互独立”这个结论。

协方差矩阵和信息矩阵的符号所代表的含义不同。
在这里插入图片描述

1.2 例子2

在这里插入图片描述

在这里插入图片描述

同样地, 联合 = 条件 ∗ 边缘 联合=条件*边缘 联合=条件边缘 x 1 , x 3 x_1, x_3 x1,x3独立,(18)推导:
p ( x 1 , x 2 , x 3 ) = p ( x 2 ∣ x 1 , x 3 ) ∗ p ( x 1 , x 3 ) = p ( x 2 ∣ x 1 , x 3 ) ∗ p ( x 1 ) ∗ p ( x 3 ) p(x_1,x_2,x_3)=p(x_2|x_1,x_3)*p(x_1,x_3)=p(x_2|x_1,x_3)*p(x_1)*p(x_3) p(x1,x2,x3)=p(x2x1,x3)p(x1,x3)=p(x2x1,x3)p(x1)p(x3)

在这里插入图片描述
Σ 13 = 0 \Sigma_{13}=0 Σ13=0但是 ( Σ − 1 ) 13 > 0 (\Sigma^{-1})_{13}>0 (Σ1)13>0,表示当 x 2 x_2 x2确定时, x 1 , x 3 x_1, x_3 x1,x3呈负相关,对应实际问题就是:房间2中的温度一定时,房间1温度高点的话,房间3温度就要低一点才能保证房间2中温度一定。

上面的节点和边是一个有向无环图,是贝叶斯图论中的东西(之前有博士师姐研究这个的,每次听她汇报都一脸问号,压根听不懂)。

1.3 例子1的拓展

如果例子1中没有 x 3 x_3 x3,那么在 Σ , Σ − 1 \Sigma, \Sigma^{-1} Σ,Σ1中直接把有关 x 3 x_3 x3的变量置为0即可:
在这里插入图片描述
在这里插入图片描述

但是实际中我们不知道 Σ , Σ − 1 \Sigma, \Sigma^{-1} Σ,Σ1由哪几项构成,也就无法去掉为0的项,这时需要引入其他的方法来帮助我们找出这些项:marginalization(边缘化)和Schur’s complement(舒尔补)。

1.4协方差矩阵和信息矩阵小结

  1. 协方差矩阵 Σ \Sigma Σ非对角元素>0则代表对应元素正相关,信息矩阵 Σ − 1 \Sigma^{-1} Σ1中非对角线元素<0代表两元素正相关,>0则是负相关(毕竟是求逆)。
  2. 协方差矩阵表示两个变量之间的关系,而信息矩阵则表示两个变量在某种特定条件下的关系。

2. 舒尔补应用

在这里插入图片描述

将矩阵M变为上三角或者下三角矩阵,得到的 Δ A \Delta A ΔA叫做舒尔补
在这里插入图片描述

在这里插入图片描述

舒尔消元便于求解方程 H Δ x = b H\Delta x=b HΔx=b H = J T J H=J^TJ H=JTJ是稀疏的,把路标点信息边缘化到相机位姿中,求解出相机位姿后再求解位姿。

这部分内容可以复习14讲后端1中关于稀疏化和边缘化的部分,看完例子之后再来理解这里的内容会比较容易。
如果是VSlam,下面的 x x x可以看做是由相机位姿(a,se(3))和路标点(b, R 3 R^3 R3)组成,K就是 J T J J^TJ JTJ(可能VIO会有些差别)

2.1 边缘概率P(a), 条件概率P(a|b)的协方差矩阵

在这里插入图片描述
(31)严格来说应该减去 [ a , b ] T [a, b]^T [a,b]T的期望,但是这里不怎么关注期望

将式(29)带入得,可以整理为只与a,b有关的部分,就分解为边缘概率和条件概率:
在这里插入图片描述

(33)是全概公式

在这里插入图片描述

但是实际上信息矩阵的左上角的块不一定好求,因为 A − 1 A^{-1} A1不一定好求,左上角的块不仅仅跟 A − 1 A^{-1} A1有关,见(36)

边缘概率实际中是相机位姿的概率,条件概率是在相机位姿的条件下看到的路标点的概率。

2.2 P(a), P(a|b)的信息矩阵

在这里插入图片描述

已知信息矩阵 Σ − 1 \Sigma^{-1} Σ1,可以看出 Λ a a \Lambda_{aa} Λaa不只是和 A − 1 A^{-1} A1有关,但是边缘分布的协方差就是 A \bm{A} A P ( a ) P(a) P(a)的信息矩阵就是 A − 1 \bm{A}^{-1} A1,给了信息矩阵 Σ − 1 \Sigma^{-1} Σ1,如何求出 A − 1 \bm{A}^{-1} A1呢?(为什么要求呢?)

高斯消元可得 A − 1 \bm{A}^{-1} A1
在这里插入图片描述

对应到1.3的例子,去掉 x 3 x_3 x3时,求 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2)的信息矩阵时,直接套用(38)如下式(39), K 2 − 1 K_2^{-1} K21即为 P ( x 1 , x 2 ) P(x_1, x_2) P(x1,x2)的信息矩阵
在这里插入图片描述

2.1 总结

在这里插入图片描述

信息矩阵本身就能表示出条件概率,如1.1的式(16)中的,信息矩阵 Σ i j = 0 \Sigma_{ij}=0 Σij=0代表i, j关于其他变量条件独立,描述的本身就是条件概率。

在这里插入图片描述

在这里插入图片描述
总结: 在SLAM中,舒尔补主要用在滑动窗口算法中,将旧的信息丢掉,我们是希望通过舒尔补的形式将一部分信息给marg掉,且通常是操作边缘概率的信息矩阵。

3. 滑动窗口算法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【卷积神经网络:Inception模型】

【卷积神经网络&#xff1a;Inception模型】 1 Inception模型的组成2 实现代码3 查看经典的Inceptioon模型 1 Inception模型的组成 Inception模型的组成主要由不同卷积核大小的卷积层拼接而成&#xff0c;其中一种带维度缩减的Inception模型可以减少参数量&#xff0c;引入更多…

javaee SpringMVC中json的使用

jsp <%--Created by IntelliJ IDEA.User: 呆萌老师:QQ:2398779723Date: 2019/12/6Time: 15:55To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-8" language"java" %> <%St…

OSI体系结构和TCP/IP体系结构

在第一章&#xff08; 计网第一章 &#xff09;的时候&#xff0c;曾经提到过OSI体系结构和TCP/IP体系结构&#xff0c;并对它们进行了简单的对比。这篇博客在其基础上进行更深层次的理解。 一.OSI体系结构&#xff1a; 通信子网&#xff1a; 计算机网络在逻辑功能上可以分为…

windows系统查看exe程序的依赖dll并拷贝到指定路径下

脚本 echo off REM windows_copy_depends.bat是脚本文件名&#xff0c;exe_path是exe文件的全路径&#xff0c;dll_folder_path是脚本当前路径下的文件夹名称 REM 如windows_copy_depends.bat E:\git_code\windows_docker_desktop\winget.exe 123 echo Usage: windows_copy_dep…

从零开始的C++(三)

1.引用与指针的相同与不同&#xff1a; 相同&#xff1a;底层逻辑相同&#xff0c;在汇编那层引用和指针是一致的&#xff0c;换句话说&#xff0c;引用就是被装饰后的指针&#xff0c;虽然外表有所差异&#xff0c;但内在是相同的。 不同&#xff1a; 1.定义的时候&#xf…

南京大学【软件分析】08 Pointer Analysis

文章目录 1. Motivation2. Introduction to Pointer Analysis3. Key Factors of Pointer Analysis3.1 Heap Abstraction3.2 Context Sensitivity3.3 Flow sensitivity3.4 Analysis scope 4. Concerned Statements 1. Motivation 指针分析存在不精确的问题。对于下面的例子&…

QT、C++实现地图导航系统(mapSystem)

文章目录 地图导航系统项目应用背景技术栈选择数据处理算法实现界面实现源码展示成果展示源码下载 &#xff08;免费&#xff09; 地图导航系统 项目应用背景 电子地图导航系统的主要目的是为用户提供精确、实时的导航和位置信息&#xff0c;以帮助他们在城市或地区内轻松找到…

C++ - 封装 unordered_set 和 unordered_map - 哈希桶的迭代器实现

前言 unordered_set 和 unordered_map 两个容器的底层是哈希表实现的&#xff0c;此处的封装使用的 上篇博客当中的哈希桶来进行封装&#xff0c;相当于是在 哈希桶之上在套上了 unordered_set 和 unordered_map 。 哈希桶的逻辑实现&#xff1a; C - 开散列的拉链法&…

Java环境配置无效

Java环境配置无效 老是使用1.8版本&#xff0c;象牛皮癣。 查找java来源 where java 打开C:\Windows\System32 删掉java.exe javaaw.exe javaaws.exe 正常

【超强图解Docker常见命令与实战】

目录 一、镜像容器基础&#xff08;一&#xff09;基本概念&#xff08;二&#xff09;镜像&#xff08;三&#xff09;容器&#xff08;四&#xff09;运行的容器&#xff08;五&#xff09; 镜像层(image layer) 二、常用命令&#xff08;一&#xff09;docker create <im…

XWiki Platform 安全漏洞RCE:CVE-2023-37462

2023年7月14日&#xff0c;美国国家标准与技术研究院&#xff08;NIST&#xff09;维护的综合性漏洞数据库&#xff08;NVD&#xff09;第一次记录了这个漏洞&#xff0c;这个漏洞影响版本是从7.0到14.48&#xff08;不包括&#xff09;和从14.5到14.10.4&#xff08;不包括&am…

BGP服务器租用价格表_腾讯云PK阿里云

BGP云服务器像阿里云和腾讯云均是BGP多线网络&#xff0c;速度更快延迟更低&#xff0c;阿里云BGP服务器2核2G3M带宽优惠价格108元一年起&#xff0c;腾讯云BGP服务器2核2G3M带宽95元一年起&#xff0c;阿腾云分享更多云服务器配置如2核4G、4核8G、8核16G等配置价格表如下&…

A*搜索算法(含Java源代码)

前言 本来是想写一块的&#xff0c;但是为了这个国庆的专属勋章就分开写了&#xff0c;这个侧重还是对作业题目要求的实现。 课题目的 理解 A Star 算法设计流程。 理解 A Star 算法的启发式函数的作用。 掌握 A Start 解决搜索问题的过程&#xff0c;能够应用 A Star 算法…

凉鞋的 Godot 笔记 101. Hello Godot!

101. Hello Godot 学习任何一门技术&#xff0c;第一件事就是先完成 Hello World&#xff01;的输出 所以我们也来先完成 Godot 的 Hello World。 我们所使用的 Godot 版本是 4.x 版本。 安装的过程就不给大家展示了&#xff0c;笔者更推荐初学者用 Steam 版本的 Godot&…

Scala第十八章节

Scala第十八章节 scala总目录 文档资料下载 章节目标 掌握Iterable集合相关内容.掌握Seq集合相关内容.掌握Set集合相关内容.掌握Map集合相关内容.掌握统计字符个数案例. 1. Iterable 1.1 概述 Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合…

学习开发一个RISC-V上的操作系统(汪辰老师) — 环境配置

前言 &#xff08;1&#xff09;此系列文章是跟着汪辰老师的RISC-V课程所记录的学习笔记。 &#xff08;2&#xff09;该课程相关代码gitee链接&#xff1b; &#xff08;3&#xff09;PLCT实验室实习生长期招聘&#xff1a;招聘信息链接 &#xff08;4&#xff09;在学习汪辰老…

正则表达式验证和跨域postmessage

1.用正则表达式验证用户名 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

msvcp120.dll放在哪个文件夹?msvcp120.dll丢失解决方法详细分析

Msvcp120.dll 丢失可能会导致一些基于 Microsoft Visual C 编写的程序和游戏无法正常运行。Msvcp120.dll 是 Microsoft Visual C Redistributable 的一个组件&#xff0c;它包含了 C 运行时库&#xff0c;这些库在运行程序时会被加载到内存中。如果该文件丢失或损坏&#xff0c…

多目标平衡黏菌算法(MOEOSMA)求解八个现实世界受约束的工程问题

目录 1 受约束的工程问题 1.1 减速器设计问题(Speed reducer design problem) 1.2 弹簧设计问题(Spring design problem) 1.3 静压推力轴承设计问题(Hydrostatic thrust bearing design problem) 1.4 振动平台设计问题(Vibrating platform design problem) 1.5 汽车侧面碰…

18.示例程序(编码器接口测速)

STM32标准库开发-各章节笔记-查阅传送门_Archie_IT的博客-CSDN博客https://blog.csdn.net/m0_61712829/article/details/132434192?spm1001.2014.3001.5501 main.c #include "stm32f10x.h" // Device header #include "Delay.h" #incl…