VINS-Mono-后端优化 (四:边缘化原理)

滑窗中固定只能有11帧,当来了新的帧的时候旧的帧就需要抹掉,但是不能直接把旧的帧的全部信息抹掉,因为旧的帧的经历过11次优化,其地图点中的优化信息是有用,边缘化的操作就是为了只把最旧帧的变量去掉,但是保留其对应的优化信息留在窗口里面,因为那些信息仍然具有约束作用

边缘化舒尔补

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时公式已经没有 δ x a \delta x_{a} δxa 了,但是保留了 δ x a \delta x_{a} δxa 带来的约束
δ x b \delta x_{b} δxb 左边的矩阵当作新的 H H H,并分解为 J T J J^{T}J JTJ,右边则分解为 J T e J^{T}e JTe

边缘化更详细的讲解看这篇文章 SLAM中的marginalization 和 Schur complement

H 矩阵的构造

由于这个 H H H 矩阵是在ceres中计算的,不会暴露出来,由于这里需要进行边缘化,所以只能自己计算 H H H 矩阵,这基本算是一个手写后端的部分了
有了 H H H 矩阵就可以迭代优化了, H Δ x = g H\Delta x=g HΔx=g

讲一下如何构建这个 H H H 矩阵,现在存在预积分约束和重投影约束,每个约束都存在 H = J T J H=J^{T}J H=JTJ,但是现在需要一个大的 H H H 矩阵

通过把累加的方式构成这个大的矩阵 H = Σ J T J H=\Sigma J^{T}J H=ΣJTJ
J = ∂ e ∂ x J=\frac{\partial e }{\partial x} J=xe

状态向量有, λ \lambda λ 是地图点
在这里插入图片描述
就是把每个 J J J都累加起来构成这个大 H H H

J T J J^{T}J JTJ 的形式如这张图
在这里插入图片描述
代码中要关注一下是怎么累加的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
m m m 是地图点, p p p 是位姿,可以看到 p 1 p1 p1 的量被边缘化掉了,然后对 m 1 m1 m1 p 2 p2 p2 建立了关系,原本 m 1 m1 m1,和 p 2 p2 p2 是没有关系的,边缘化后就建立了约束,关系图可以看下面
在这里插入图片描述
这里可以看出,边缘化会带来 fill-in 现象,把原先的稀疏矩阵变成了稠密矩阵,因为会不停地带来额外的约束

VINS中会把地图点也边缘化掉,只剩位姿,速度和零偏这些状态量的约束保留,因为地图点的数量太多了,这样可以减少矩阵的维数

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iManager云套件支持配置kingbase

作者 yangjunlin 前言 越来越多的涉密单位对于信创环境的要求逐渐升高,服务应用对国产数据库的依赖性也在提高,针对超图iManager for k8s产品中的开源数据库替换为kingbase等国产化数据库的客户需求和场景也就随之而来,因此本文将带着读者一步…

【springboot】Failed to start bean ‘webServerStartStop‘;

新同事新建了一个项目springboot项目,启动时候报错。 具体错误如下: Failed to start bean webServerStartStop; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat server 未能启动bea…

离散时间系统模型

离散时间系统模型 离散时间系统模型是表示数字滤波器的方案。MATLAB 科学计算环境支持若干种离散时间系统模型,这些模型将在以下章节中介绍: ​传递函数零极点增益状态空间部分分式展开式(残差形式)二阶节 (SOS)格型结构体卷积矩…

SpringBoot配置文件 —— 超详细全方位教程

🧸欢迎来到dream_ready的博客,📜相信您也对这篇博客也感兴趣o (ˉ▽ˉ;) 🧸祝诸君前程似锦,归来仍初心不忘! 📜Spring,SpringBoot和SpringMVC的关系以及区别 —— 超准确…

Windows电脑训练 RT-DETR 改进算法 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Windows服务器为例:从零开始使用Windows训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇…

MySQL:语法速查手册【更新中...】

一、定义基本表 1、常用的完整性约束 主码约束 primary key外键约束 foreign key唯一性约束 unique非空性约束 not null取值约束 check2、例题 【例1】建立一个“学生”表Student,由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中…

8个月过去了,中国大模型落地进展如何?

就目前来看,大模型落地金融、能源行业先行,智能客服等生成类应用大于决策类应用,落地价值不及预期。然而随着行业定制化、模型轻量级化和数据安全化等技术的发展,AI大模型的落地应用将迎来更加广阔的发展空间。 作者|斗斗 编辑…

CPS:实现销售和广告的完美结合

随着互联网的快速发展,电商行业呈现出爆炸性的增长。在这个充满竞争的市场中,如何有效地吸引和引导消费者购买产品,成为电商企业成功的关键。而CPS(Cost Per Sales)作为一种创新的广告模式,正逐渐成为电商行…

关于pip basicsr,facexlib,realesrgan et al.安装报错。

首先basicsr是一个超分的库,在ubuntu系统上pip时会报错。 上图这种错误,或者其他的错误,有的方法让去github上安装,那种方法到setup.py的时候也会报错。 问题在于首先 -i的源要换成阿里的源,然后要安装他要求的库&…

ds前后台博客系统

源码私信或者公众号java大师获取 博客简介:本博客采用Spring Boot LayUI做为基础,进行的博客系统开发,与bootvue相比,更为适合开发简单的系统,并且更容易上手,简单!高效!更易上手&a…

【Java】集合(一)单列集合List

1.集合 可以动态保存任意多个对象,并提供了一系列的操作对象的方法:add、remove、set、get等。 2.集合框架体系 分为两大类: 单列集合和双列集合 3.List接口基本介绍 List接口是Collection接口的子接口 List集合类中元素有序&#xff0…

使用 `open-uri.with_proxy` 方法打开网页

Ruby 爬虫程序如下: require open-uri require nokogiri# 定义代理信息 proxy_host jshk.com.cn# 定义要爬取的网页 URL url http://www.example.com# 使用代理信息打开网页 open-uri.with_proxy(proxy_host, proxy_port) do |proxy|# 使用 Nokogiri 库解析网页内…

mysql主从复制和读写分离

什么叫主从复制? 主从复制架构图和数据流向 主MySQL上的数据、新增、修改库、表、表里的数据。都会同步到从MySQL上 面试题:MySQL的主从复制模式 1、 异步复制:MySQL的默认复制就是异步复制。工作中也一般使用异步复制。只要执行完之后&am…

excel记录wFm数值(推理过程)

1 导入计算wfm库2 实例化具体的指标 3 列表循环之前,设置空list 4 单图评测-将图号、图片名、数值记录 列表里面存储dict 5 将excel列表结果逐个存入excel.xlsx文件 完整代码 test_CPD.py ### test_CPD.py ### import torch import torch.nn.functional as Fimpor…

Autosar模块介绍:FEE(Flash模拟EEPROM)

上一篇 | 返回主目录 | 下一篇 Autosar模块介绍:FEE(Flash模拟EEPROM 1 基本术语解释2 Ea组成结构图3 Ea基本操作3.1 通用操作3.2 作业的进程(通用需求)3.3 读操作过程3.4 写操作过程3.5 擦除过程3.6 比较过程 4 Ea常用操作时序4.1 初始化4.…

SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......

🧸欢迎来到dream_ready的博客,📜相信您对这篇博客也感兴趣o (ˉ▽ˉ;) 📜SpringIOC和DI的代码实现,Spring如何存取对象?Controller、Service、Repository、Component、Configuration、Bean DI详…

【沐风老师】3dMax使用克隆修改器插件创建旋转楼梯教程

3DMAX克隆修改器插件,它通过增量平移、旋转和缩放输入几何体来创建对象的副本。在某些方面,它类似于 3dMax 的内置“阵列”工具,但有一个主要优点 -克隆修改器是完全参数化的,因此您可以随时更改重复项的数量及其分布。其他功能包…

LeetCode-剑指 Offer 22. 链表中倒数第k个节点(C语言 )

目录捏 一、题目描述二、示例与提示三、思路四、代码 一、题目描述 给定一个头节点为 head 的链表用于记录一系列核心肌群训练项目编号,请查找并返回倒数第 cnt 个训练项目编号。 二、示例与提示 示例 1: 输入: head [2,4,7,8], cnt 1 输…

北大Cobot V4.3换新登场

库博SAST V4.3焕然一新,重装上市。作为国内最早的研究并成功开发SAST产品的团队,北大软件下属与北京大学国家工程与软件工程研究中心组成的库博团队,从2012年就起步研发静态应用安全测试产品—Cobot。历经10余年迭代升级,目前已经…

JAVA数据代码示例

首先,我们需要导入一些必要的Java库 java import java.net.URL; import java.net.HttpURLConnection; import java.io.BufferedReader; import java.io.InputStreamReader; 然后,我们可以创建一个URL对象,表示我们要爬取的网页的URL。 jav…