边缘化你必须知道的一件事!(FEJ知识点总结)

vins和g2o边缘化的异同:(已经做到ppt里面了,简单回顾一下)

1.《视觉slam14讲》中提及的边缘化(G2O边缘化)是在计算求解过程中,先消去路标点变量,实现先求解相机位姿,然后再利用求解出来的相机位姿反过来计算路标点的过程,目的是为了加速求解,并非真的将路标点给边缘化掉。(补充:G2O是在BA之后提出的,BA就是优化路标点和相机位姿)

2.VINS的边缘化则真正需要边缘化掉滑动窗口中的最老帧和次新帧,目的是希望不再计算这一帧的位姿或者与其相关的路标点,但是希望保留该帧对窗口内其他帧的约束关系。

一个知识点:marg掉以后会使得之后的矩阵失去稀疏性的特点,也即矩阵会变得稠密起来,就是说非零元素的个数会增加。

编辑

添加图片注释,不超过 140 字(可选)

vins的边缘化策略第二点,当次新帧不是关键帧的时候直接丢弃次新帧,但是次新帧的IMU数据需要保留,这是为了保证IMU预积分的连贯性。

单目+imuj系统是4自由度不可观,yaw角+3自由度位置不可观。其中尺度因子由于加速度计的存在而可观。

编辑

添加图片注释,不超过 140 字(可选)

上面四幅图对应能量函数,上面的图告诉我们,能量函数为0的解由以前的一条曲线变成了一个点,不确定性的东西变得确定了,也即不可观的状态变量变得可观了。说明我们人为地引入了错误的信息。在不同的点线性化后,强行加起来,实际上引入了一些人为的约束,或者说引入了人为的错误观测,导致整个系统的崩溃。

编辑

添加图片注释,不超过 140 字(可选)

通过上面能量函数的例子可以说明,在marg的时候,不要在marg之后进行线性化,因为此时的状态和marg之前是不一样的。如果这时候再进行吸纳行话,会引入人为观测,导致整个优化过程崩溃。

因此,marg时,被marg的那些变量的雅可比已经不更新了,而此时留在滑动窗口里的其他变量的雅可比要用和marg时一样的线性点,就是FEJ进行计算,不要用新的线性点了。否则会导致整个问题的零空间被降维,意思即是引入了错误的人为观测约束,使得问题的零空间加入了错误的约束,因此被降维了。

编辑

添加图片注释,不超过 140 字(可选)

根据最后一句话 可能FEJ也不是很必要,但是是一个考点。

在边缘化的过程中,状态变量会被不断更新,计算边缘化相关的雅可比时需要注意固定线性化点,也就是计算雅可比时求导变量的值要固定,而不是用每次迭代更新以后的x去求雅可比,这就是FEJ(First Estimate Jacobians)。同时这样被称为是系统的一致性问题。

系统的不可观的状态维数是这个矩阵零空间的维数。(之所以说零空间维数降低,就是说不可观的状态维数降低了,也即不可观变得可观了。)

编辑

添加图片注释,不超过 140 字(可选)

就是说计算雅可比矩阵的时候要选择第一次的线性点来进行计算。

编辑

添加图片注释,不超过 140 字(可选)

使用FEJ的意义:为了保证系统的一致性,对于有边缘化信息的非线性优化问题,所有优化变量的雅可比都应该使用优化迭代开始前的雅可比,在优化迭代的过程中不发生变化。就是说在进行边缘化以后,线性化使用的线性点要保持一致,使用同一个线性点来进行Taylor展开,这样才能保证系统不可观的维度。否则,便引入了人为观测误差,这样会使得系统由不可观变成可观,求解出来的结果是不对的!

关于第一估计雅可比(FEJ, First Estimate Jacobians)先进行一个简单的描述,在Marginalize的时候,求解滑动窗口估计器的迭代过程中,会不断迭代计算H矩阵和残差b,而在迭代过程中,状态变量会不断更新,计算雅可比的时候需要固定线性化点(fix the linearization point)。换言之,就是计算雅可比时候求导变量要固定,而不是用每一次迭代更新以后的状态量x去求雅可比。

编辑

添加图片注释,不超过 140 字(可选)

感觉FEJ就是在讲计算雅可比矩阵时的线性化点的选择问题。

编辑

添加图片注释,不超过 140 字(可选)

上面这个图做到ppt里面就行了,就讲两个能量函数,在不同线性点展开,然后相加,最后发现结果从一条直线变成了一个点,也即下系统状态由不可观变得可观起来。(这种现象对slam系统是非常不利的。)

编辑

添加图片注释,不超过 140 字(可选)

上面讲了那么多的可观性,这里对可观性的定义进行一个阐述。就是说当系统可观的时候,那个h函数是一个单射函数,也即一个site对应唯一一个函数值。就是说可以理解成单调递增函数或者单调递减函数即可。

总结:滑动窗口算法中,对于同一变量,不同残差对其计算雅可比矩阵时线性化点可能不一致,导致信息矩阵分成两部分,相当于在信息矩阵中多加了一些信息,使得其零空间出现了变化。FEJ算法:不同残差对同一个状态求雅可比时,线性化点必须一致,这样就能避免零空间退化,也即可以避免不可观变量变得可观。

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

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

相关文章

springboot第七章 结合Dubbo

实现Dubbo分布式框架,需要公共接口maven项目,需要服务提供者springboot项目,需要服务消费者springboot项目。 因为公共接口只有数据类和接口,后期提供者和消费者需要根据maven唯一坐标来导入公共接口项目的jar包,因此公…

GraphHopper调研笔记

一、 GraphHopper GraphHopper是一种快速且内存有效的Java导航引擎,默认使用OSM和GTFS数据,也可导入其他的数据源。支持CH(Contraction Hierarchies)、A*、Dijkstra算法。 1、应用介绍 graphhopper有以下几种常见的地图应用&am…

25000 字详解 23 种设计模式(多图 + 代码)

25000 字详解 23 种设计模式(多图 代码) 目录 创建型模式结构型模式行为型模式总结 前言 一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。 设计…

前端项目的通用优化策略

一、虚拟滚动 当我们开发的时候,遇到大数据加载,页面卡顿的问题应该如何处理?大多数情况下,我们都是尽量通过分页的方式处理这类问题,但是总有一些特殊的情况我们必须把数据全部加载到前端进行处理。我曾经遇到过一个…

MySQL入门

创建数据库 用CREATE DATABASE关键字(也可以小写但建议关键字用大写方便区分)创建一个名为“mydatabase”的数据库。 CREATE DATABASE mydatabase; 如果名称和关键字相撞,可以用Esc键下面的反引号括起来(关键字会显示蓝色&#…

kafka安装及配置

1. 下载 下载地址:Apache Kafka 我这里下载的是 3.2.1 版本。 2. 上传并解压 上传到 linux 下的 /home/software/ 目录下,然后解压 kafka_2.13-3.2.1.tgz 包到/usr/local/ cd /home/software tar -zxvf kafka_2.13-3.2.1.tgz -C /usr/local # -C 选…

处理日期和时间的 chrono 库

C11 中提供了日期和时间相关的库 chrono,通过 chrono 库可以很方便地处理日期和时间,为程序的开发提供了便利。chrono 库主要包含三种类型的类:时间间隔duration、时钟clocks、时间点time point。 1. Ratio 时间精度(节拍) std::chrono::ra…

【PHP在线定制商城网站源码V3.0】开源的DIY在线定制商城系统+在线礼品定制

源码下载:https://download.csdn.net/download/m0_66047725/87637177 PHP在线定制商城网站源码,免费开源、免费下载。本商城基于mycncart开发。安装成功后即可浏览,你可以在后台->安装扩展功能上传安装插件,在代码调整中点击刷…

zlmediakit 新增可以使用硬件加速的转码http api接口方法

根据项目需求,我们需要使用硬件解码的方式进行网络摄像头数据帧的解析,给到算法模块使用 1、通过ffmpeg命令实验,ffmpeg -i IPC_URL -f rtsp rtsp://*/live 该命令默认是使用cpu进行解码的,我们需要使用GPU进行解码。 2、ffmpe…

如何进行DNS优化

在互联网时代,网站的访问速度直接影响着用户体验和转化率。而DNS(Domain Name System)作为域名解析系统,负责将域名转换为IP地址,是网站访问速度的重要因素之一。因此,DNS优化成为了提升网站速度的重要手段之一。 DNS优化到底是什…

API接口的对接流程和注意事项

一、对接API数据接口的步骤通常包括以下几个部分: 了解API:首先需要详细了解API的基本信息、请求格式、返回数据格式、错误码等相关信息。可以查看API的官方文档或者使用API探索工具。同时,还需要明确数据请求的频率和使用权限等限制。 ​​测…

leetcode:环形链表(详解)

前言:内容包括-题目,代码实现,大致思路,代码解读,拓展问题 题目: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达&…

C语言:指针求解鸡兔同笼问题

题目:鸡兔同笼问题 要求:使用自定义函数void calc(int h, int f,int *c,int *r) 求解鸡兔同笼问题。 h 表示总的头数,f 表示总的脚数。 例子: 输入: 5 16 输出: 2 3 分析: 在该代码中&a…

WxGL应用实例:绘制高精度的3D太阳系模型

文章目录 1 坐标系的选择1.1 黄道坐标系1.2 三维空间直角坐标系 2 使用JPL星历表计算轨道2.1 日期时间2.2 特定时刻天体的位置2.3 天体运行轨道 3 太阳系模型3. 1 太阳和八大行星全家福3.2 时间、距离和半径的缩放3.3 黄道坐标系模型 天何所沓?十二焉分?…

AI歌手——超简单一键运用ACE Studio来训练模拟真人唱歌

目录 1.安装ACE Studio 2.打开ACE Studio 3.导入midi或音频 4.调试音频 5.调整人物音色音高 6.调整歌词 7.自动添加呼吸​编辑 8.成品演示(周杰伦の稻香——鲤阮) 1.安装ACE Studio 安装地址 ACE Studio | Create Limitless Vocals with AI (t…

RK3568平台开发系列讲解(Linux内存篇)Linux内存管理框架

🚀返回专栏总目录 文章目录 一、内核态内存分配二、用户态内存分配三、内存篇章更新哪些内容沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起将整个内存管理的体系串起来。 对于内存的分配需求,可能来自内核态,也可能来自用户态。 一、内核态内存分配…

年后准备进腾讯的可以看看....

大家好~ 最近内卷严重,各种跳槽裁员,今天特意分享一套学习笔记 / 面试手册,年后跳槽的朋友想去腾讯的可以好好刷一刷,还是挺有必要的,它几乎涵盖了所有的软件测试技术栈,非常珍贵,肝完进大厂&a…

Eplan2022 复制已有的宏文件生成新的原理图宏文件

下图所示为wago的787-722稳压电源,我们可以从官网下载到相应的eplan宏文件并导入数据源库。但是能下载到eplan宏文件的只是少部分公司的部件。那么没有宏文件的部件该怎么办? 接下来以明纬开关电源 NDR-120-24为例,创建一个宏文件。选择【主数…

基于springboot的医院信管系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&…

晶振概述及工作原理

晶振在电路板中随处可见,只要用到处理器的地方就必定有晶振的存在,即使没有外部晶振,芯片内部也有晶振。 晶振概述 晶振一般指晶体振荡器。晶体振荡器是指从一块石英晶体上按一定方位角切下薄片(简称为晶片)&#xf…