视觉SLAM:滑动窗口
1.SLAM问题
1.1建模
考虑某个状态 \(\xi\),以及一次与该变量相关的观测 \(r_{i}\)。由于噪声存在,观测服从概率分布 \(p(r_{i}|\xi)\)。多个观测时,各个测量值相互独立,则多个测量 \(r = (r_{1}, ..., r_{n})^{T}\)构成的似然概率为:
如果知道机器人状态的先验信息 \(p(\xi)\),如GPS,码盘信息等,则由贝叶斯法则,有后验概率:

通过最大后验估计,获得系统状态的最优估计:

意为在当前的观测下,什么样的系统状态出现的概率最大。
分母跟状态量无关,舍弃取log。即:

如果观测服从多元高斯分布:

则有:

该问题可由最小二乘求解:

零均值的多元高斯分布概率为:\(p(x) = \frac{1}{Z}exp(-\frac{1}{2}x^{T}\Sigma^{-1}x)\)
其中\(\Sigma\)是协方差矩阵。\(\Sigma^{-1}\)为协方差矩阵的逆,即信息矩阵。
2.边缘化信息矩阵
使用滑动窗口不可避免的要移除掉变量,当移除变量的时候,之前与之不相关的变量,有可能变得相关,所以要对信息矩阵进行维护。
这里使用舒尔补来对信息矩阵进行边缘化处理。
2.1舒尔补的定义:
给定任意的矩阵块M,如下所示:

如果,矩阵块D是可逆的,则 \(A-BD^{-1}C\)称之为D关于M的舒尔补
如果。矩阵块A是可你的,则 \(D-CA^{-1}B\)称之为A关于M的舒尔补
2.2使用舒尔补来去除变量:
假如一个系统三个变量x1,x2,x3。其信息矩阵为:

那么把x3去掉,也就是把蓝色部分去掉,利用舒尔补。

则去掉后的信息矩阵为:

3.滑动窗口算法

上述最小二乘问题,对应的高斯牛顿求解为:

注意:这里的H反应的是求解的方差,而\(\Sigma^{-1}\)反应的是残差的方差
公式中的雅可比矩阵为:

矩阵乘法公式可以写成连加:



使用边际概率移除变量\(\xi_{1}\),信息矩阵的变化过程:

视觉SLAM:滑动窗口的更多相关文章
- 视觉SLAM算法框架解析(1) PTAM
版权声明:本文为博主原创文章,未经博主允许不得转载. 本系列文章旨在总结主流视觉SLAM算法的框架,对比各个算法在子模块的差异,最终提炼出融合各个算法优点的架构. PTAM[1]是视觉SLAM领域里程 ...
- [LeetCode] Sliding Window Maximum 滑动窗口最大值
Given an array nums, there is a sliding window of size k which is moving from the very left of the a ...
- TCP/IP 协议中的滑动窗口
一个例子明白发送缓冲区.接受缓冲区.滑动窗口协议之间的关系. 在上面的几篇文章中简单介绍了上述几个概念在TCP网络编程中的关系,也对应了几个基本socket系统调用的几个行为,这里再列举一个例子,由于 ...
- Storm Windowing storm滑动窗口简介
Storm Windowing 简介 Storm可同时处理窗口内的所有tuple.窗口可以从时间或数量上来划分,由如下两个因素决定: 窗口的长度,可以是时间间隔或Tuple数量: 滑动间隔(slidi ...
- lintcode 滑动窗口的最大值(双端队列)
题目链接:http://www.lintcode.com/zh-cn/problem/sliding-window-maximum/# 滑动窗口的最大值 给出一个可能包含重复的整数数组,和一个大小为 ...
- TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释
一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...
- tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 & 慢启动 快恢复 拥塞避免 http://b ...
- CodeForces 701C They Are Everywhere (滑动窗口)
题目链接:http://codeforces.com/problemset/problem/701/C 题意:找到字符串中能包含所有元素的最短字符串长度. 利用“滑动窗口”解题 解题思路: 1. 遍历 ...
- TCP协议总结--停止等待协议,连续ARQ协议,滑动窗口协议
前言:在学习tcp三次握手的过程之中,由于一直无法解释tcpdump命令抓的包中seq和ack的含义,就将tcp协议往深入的了解了一下,了解到了几个协议,做一个小结. 先来看看我的问题: 这是用tcp ...
- uva 1606 amphiphilic carbon molecules【把缩写写出来,有惊喜】(滑动窗口)——yhx
Shanghai Hypercomputers, the world's largest computer chip manufacturer, has invented a new classof ...
随机推荐
- ThinkPHP 6.0 RC2 版本发布——架构升级、精简核心
自从5.2版本变更为6.0以来,官方一直致力于优化架构和精简核心,同时也在准备手册和测试工作,在经过近1个月的开发迭代后,官方宣布发布ThinkPHP6.0RC2版本. 主要更新 相比较RC1版本更新 ...
- 树莓派(香橙派)通过.NET IoT 操作SPI编写屏幕驱动 顺手做个四足机器人(一)
摘要 这片文章主要是记录自己的整活过程,涉及到的技术包括.NET IoT, .NET Web, .NET MAUI,框架采用的也是最新的.NET 7. 本人是用的树莓派Zero 2 W(ubuntu- ...
- Devexpress控件searchLookUpEdit获得选中行的其他列数据
使用searchLookUpEdit控件获得选中行的其他列的数据.比如有一列代码列和一列描述.那么我们选中一行后想获得选中的代码和描述.可以在searchLookUpEdit1_EditValueCh ...
- 解决redmi airdots 2右耳充不进电,灯不亮
解决方案 在放入充电盒并插入数据线充电状态下,长按按钮
- mybatis中xml的sql之test中文报错
在mybatis中sql,test中文报错( java.lang.NumberFormatException 这句话明确告诉了我们是数字格式异常).需加.tostring(). <if test ...
- JS笔记合集之对象
对象 对象基本使用 对象是JS中的一种复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据 而基本数据类型(原始值)只能存储一些简单的数据,如: 语法: 原始创建对象: let obj ...
- WeetCode3 暴力递归->记忆化搜索->动态规划
笔者这里总结的是一种套路,这种套路笔者最先是从左程云的b站视频学习到的 本文进行简单总结 系列文章目录和关于我 一丶动态规划的思想 使用dp数组记录之前状态计算的最佳结果,找出当前状态和之前状态的关系 ...
- Golang反射修改变量值
1. 前言 前面的随笔Golang反射获取变量类型和值分享了如何通过反射获取变量的类型和值, 也就是Golang反射三大定律中的前两个,即从interface{}到反射对象和从反射对象到interfa ...
- PostgreSQL函数:查询包含时间分区字段的表,并更新dt分区为最新分区
一.需求 1.背景 提出新需求后,需要在www环境下进行验收.故需要将www环境脚本每天正常调度 但由于客户库无法连接,ods数据无法每日取,且连不上客户库任务直接报错,不会跑ods之后的任务 故需要 ...
- TabControl控件的简单使用-添加tab
1.首先创建一个MFC对话框框架,在对话框资源上从工具箱中添加上一个Tab Control 控件,根据需要修改一下属性,然后右击控件,为这个控件添加一个变量,将此控件跟一个CTabCtrl类变量绑定在 ...