在加载了,在加载了

【学习笔记】Vins-Mono论文阅读笔记(三)

VINS的整个VIO的实现方法,也就是对应的esimator部分的代码内容。理论部分主要介绍三种因子(IMU预积分因子、视觉因子和边缘化因子)的残差构造及雅克比推导
VINS的VIO是基于紧耦合框架实现的,其本质就是一个基于滑动窗口的和图优化的VIO

公式

滑动窗口中的全状态向量被定义为:

我们使用视觉惯性BA。我们最小化所有测量残差的先验和Mahalanobis范数之和,得到最大后验估计:

这个式子就分成了三个部分

边缘化:

这里首先说说什么是边缘化,边缘化就是在进行图优化的时候,为了保持实时性,对优化变量的维度控制在一定的程度的操作,在VINS中对应的就是滑动窗口的处理。既然是滑动窗口,就涉及到了对老旧图像帧的处理问题,最最直观的想法是每来一帧新的图像,就直接丢弃原来滑窗中最老的帧,然后对滑窗内的帧进行优化。这种朴素的做法显然会导致这样一个问题:没有了第一帧的约束,那我们只能约束滑窗内每帧之间的相对位姿,而不能约束它们的绝对位姿(相对[0,0,0]的位姿)因此,进行边缘化时我们需要将丢弃的图像帧也作为一个约束项,加入到我们的优化问题中,这也是VINS里面对边缘化的处理方法,将边缘化掉的帧作为先验约束加入到损失函数中进行计算。
在理解边缘化的时候,我们需要把握边缘化的核心是什么?边缘化的作用是什么?我的理解是边缘化一方面控制优化维度,保持计算的实时性;另一方面,它相当于对现在还在滑窗中的优化变量进行约束,不至于让滑窗中优化前后的数值相差太远。可以理解为,被边缘化的变量已经固定了,然后我们基于这些已经固定的量去优化滑窗里的内容。所以在实际实现的时候,首先我们需要找到需要边缘化的帧,然后找出该帧包含哪些因子,然后找到这些和这些因子相关联的优化变量,然后再对这些优化变量构建残差项,这大体就是VINS在边缘化上实现的总体逻辑。
这里我的感觉真的很像lstm部分,引入权重来保证之前的“记忆”不会丢失,
(边缘化那部分的数学实在是看不明白推导过程,就不多说了)

IMU残差部分

这里用到的就是之前IMU预积分的内容

视觉代价误差函数部分

继续引用之前推导过的视觉因子中的残差,以及残差关于状态量的雅克比矩阵。

参考链接

posted @ 2022-09-23 12:47  Lugendary  阅读(303)  评论(0编辑  收藏  举报