VINS-Mono代码注释:https://github.com/Cc19245/VINS-Mono-CC_Comments

1. 边缘化概述

1.1. 边缘化操作的意义

1.1.1. 概率意义上解释

边缘化操作的意义从概率上看就是根据联合概率分布边缘概率分布,如下为概率论中的定义:

所以边缘化的操作就相当于在要被边缘化掉的那个状态上进行积分,把它从概率密度函数中消除掉,但是它的概率信息通过积分仍然保留在了边缘化之后的概率密度中,从而没有损失任何信息。

1.1.2. 形象的解释

以下图为例,毕业老学长被从实验室中边缘化掉,但是他之前在实验室做的工作仍然是对实验室现在的运行有贡献的,现在的学生仍然在他之前的工作基础上继续进行研究。所以这就是毕业老学长对现在的实验室仍然有贡献,他约束着现在实验室的科研方向不会离他的方向很远。如果对比直接把老学长从实验室删除,相当于它之前做的工作一点也不采纳,那么实验室就相当于又从零开始,显然是不对的。

在这里插入图片描述

1.2. 边缘化的实际操作——舒尔补

1.2.1. 舒尔补的操作

实际操作的时候,边缘化就是从原来的状态方程中,找到我们要边缘化掉的那些状态量,然后利用高斯消元把它们从状态方程中消除掉,得到新的状态方程,但是从结果可以看到新的状态方程中仍然存在边缘化状态变量,也就是说它对这个方程的解仍然有贡献。

另外注意,这里要进行高斯消元的状态方程中,状态变量并不是之前非线性优化的所有状态变量,而只是和当前要边缘化掉的状态量有关的那些状态变量。原因很简单,假设有的状态(比如第5帧的位姿和零偏)和要边缘化掉的状态(比如第0帧的位姿和零偏)没有任何关系(IMU预积分上肯定没有关系;如果他们也没有共视地图点,那么视觉重投影上也没有关系),那么我要边缘化掉的状态就对这个状态没有任何影响,自然在边缘化的状态方程中就不用考虑这个状态了。

在这里插入图片描述

1.2.2. H矩阵如何由雅克比矩阵构造

在这里插入图片描述

1.2.3. H矩阵构造举例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

为了解决 fill in 现象, 边缘化的时候会把第0帧看到的地图点也边缘化掉。但是并不是就把他们扔掉了,后面可以看到还会把他们利用起来(),只是边缘化的时候暂且把他们边缘化掉。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐