另外,VINS 中的边缘化与 G2O 计算过程中的边缘化意义不大相同(虽然处理方法一致):G2O 中对路标点设置边缘化(pPoint->setMarginalized(true))是为了 在计算求解过程中,先消去路标点变量,实现先求解相机位姿,然后再利用求解出来的相机 位姿反过来计算路标点的过程,目的是为了加速求解,并非真的将路标点给边缘化掉;而...
Note:VINS-MONO是先优化再边缘化的思想。 至于SLAM系统可观测性分析(FEJ和OC),我计划以后单独出一篇文章。先留个坑。 借鉴任乾 大佬的一段文字。在SLAM问题中,状态估计问题被建模为最大后验概率问题,在假设为高斯分布的情况下即为最小化损失函数的一个最小二乘问题,并通过泰勒展开转化为增量迭代求解问题: x^...
为了限制基于优化的VIO计算复杂度,引入边缘化。有选择地从滑动窗口中将IMU状态xK和特征λ1边缘化,同时将对应于边缘状态的测量值转换为先验。 分为两种情况: 1、一种是倒数第二帧如果是关键帧的话,将最旧的pose移出Sliding Window,将最旧帧关联的视觉和惯性数...
VINS-Mono中在优化完成后,滑动窗口前,会进行边缘化(marginalization)操作,首先我们回顾下优化的状态变量是由para_Pose(6维,相机位姿); para_SpeedBias(9维,相机速度、加速度偏置、角速度偏置)、para_Ex_Pose(6维,相机IMU外参)、para_Feature(1维,特征点深度)、para_Td(1维,标定同步时间)共5部分组成,在后面进...
本文主要结合代码、推导详细介绍VINS-Mono中的边缘化(marginalization)部分。边缘化(marginalization)操作在优化完成后,滑动窗口前进行,主要目的是剔除滑窗内的某些较旧或者不满足要求的视觉帧,以保持滑动窗口内其他帧的约束关系,不减少约束信息,利于状态变量优化。进行边缘化的原因是减少优化参数,以降低...
上面理论搞清楚了其实只是第一步,由于VINS-mono优化的变量较多,VINS-mono的边缘化操作实际上要复杂很多,VINS-mono的边缘化相关代码在estimator.cpp的Estimator类的optimization()函数中,该函数先会先进行后端非线性优化然后紧接着就是边缘化操作,下面就针对这个函数中的边缘化相关代码进行剖析。
讨论了vins-mono中,舒尔补边缘化技术如何在Bundle adjustment和滑动窗口滤波器中应用,以实现增量方程转化为先验方程的过程。边缘化概念在概率论中至关重要,它允许从联合分布中分离出条件概率和边缘概率,特别是当变量x和y遵循高斯分布时,可以通过高斯推断实现这一分离,这实质上是通过Schur消元对联合分布...
一般在解BA时,先把所有landmark边缘化掉,变成Pose-Pose之间的关系,实现稀疏BA。相当于先算P(pose|...
本文深入解读VINS-Mono的核心部分——紧耦合非线性优化。紧耦合优化将视觉约束、IMU约束、闭环约束整合在一个大目标函数中,实现滑动窗口内所有帧的PVQ、bias等参数的非线性优化。紧耦合优化的过程包括残差函数构建、视觉约束、IMU约束及基于舒尔补的边缘化操作。构建残差函数时,需要优化的状态量包括滑动窗口...
https://github.com/xieqi1/VINS-Mono-noted 注释的代码其中包括但不限于 1、详细的步骤解读 2、对疑难问题配合博客链接帮助理解 3、结合作者回复的issue帮助理解 如下图所示: 为了让学员深刻了解VINS-Mono背后的原理,我们花费了大量时间准备,对于所涉及到的重要公式,全部白板从零手动推导,你将看到这些复杂的公式...