3. 后端优化(紧耦合) VIO紧耦合方案的主要思路就是通过将基于视觉构造的残差项和基于IMU构造的残差项放在一起构造成一个联合优化的问题,整个优化问题的最优解即可认为是比较准确的状态估计。 为了限制优化变量的数目,VINS-Mono 采用了滑动窗口的形式,滑动窗口中的全状态量: 滑动窗口内 n+1 个所有相机的状态(包括...
2)vins_estimator/src/estimator.cpp(部分): 函数optimization负责利用边缘化残差构建优化模型 函数slideWindow负责维护滑动窗口 2. IMU residual 包含的文件为 1)VINS-Mono/vins_estimator/src/factor/imu_factor.h 2)VINS-Mono/vins_estimator/src/factor/integration_base.h 3)vins_estimator/src/estimator.cpp(部...
本文主要聚焦于白话解析VINS-Mono后端优化中的视觉重投影残差优化。后端优化涉及的状态量包括位置、速度、朝向、加速度计bias和陀螺仪bias,以及Camera到IMU的外参,以及3D点的逆深度。优化目标函数由IMU测量残差和视觉重投影残差两部分构成,其中IMU残差在后续内容中会详细介绍。视觉重投影残差优化的核心在Proj...
后端优化是VINS-Mono中除了初始化之外,创新性最高的一块,也是真真的 紧耦合 部分,而初始化的过程事实上是一个 松耦合。因为初始化过程中的状态量并没有放在最底层融合,而是各自做了位姿的计算,但是在后端优化的过程中,所有优化量都是在一起的。 状态量...
3、后端优化这块。怎么说呢,orb3确实强,但是不符合导航要求的定位。因为你会经常看到它明开始跟飞很远,然后又给你突然拉回来。这种跟飞又来回来很蛋疼。没有vins-mono那边平滑。 4、精度这块(假设你成功运行完一个数据集),精度orb3会比vins强(vio初始化好的话,orb3可以到达1%)。然并软,因为orb3并不稳定,跑...
具体使用来说,这三个量为后面的联合初始化提供初值以及后端优化提供IMU的约束关系。原始陀螺仪和加速度计的观测值数据: 第一个式子等式左边是加速度测量值(你可以从加速度计中读到的值),等式右边是加速度真实值(其实就是准确的值,我们需要得到的是这个真实值)加上加速度计的偏置、重力加速度和加速度噪声项。第...
3、后端优化这块。怎么说呢,orb3确实强,但是不符合导航要求的定位。因为你会经常看到它明开始跟飞很远,然后又给你突然拉回来。这种跟飞又来回来很蛋疼。没有vins-mono那边平滑。 4、精度这块(假设你成功运行完一个数据集),精度orb3会比vins强(vio初始化好的话,orb3可以到达1%)。然并软,因为orb3并不稳定,跑...
2)原始 VO 的优化已经比较彻底,IMU 误差项的加入给优化结果造成了更多的不稳定性,加入 IMU 的版本均不如原始双目版本的精度。 2、VI ORB 与 VINS Mono 对比(开启闭环) 由表可以看出: 1)VINS Mono 精度与VIORB Mono/Stereo比,精度要高一些; 2)VI ORB 是不能完全跑过所有测试集的,特别是快速运动的 V2_...
[4]中文注释:https://github.com/castiel520/VINS-Mono/blob/master/vins_estimator/src/estimator.cpp 整体思路: Step1:添加待优化的状态量 1.1添加p,q,speed,ba,bg 1.2添加相机和IMU外参p_cb,q_cb 1.3将优化变量存入数组.因为ceres用的是double类型的数组,所以要做vector到double类型的变换 < WINDOW_SIZE ...