后端优化 | VINS-Mono 论文公式推导与代码解析分讲

本文详细介绍了VINS-Mono的后端优化过程,包括紧耦合的视觉惯性融合策略,使用滑动窗口限制优化变量。主要内容涉及IMU测量残差的计算,协方差矩阵的应用,以及视觉观测残差的处理。此外,还讨论了时间同步校准和边缘化(Marginalization)的重要性,边缘化通过Shur补来减少优化参数,保持系统的精度和稳定性。
摘要由CSDN通过智能技术生成

3. 后端优化(紧耦合)
在这里插入图片描述
VIO 紧耦合方案的主要思路就是通过将基于视觉构造的残差项和基于IMU构造的残差项放在一起构造成一个联合优化的问题,整个优化问题的最优解即可认为是比较准确的状态估计。
在这里插入图片描述
为了限制优化变量的数目,VINS-Mono 采用了滑动窗口的形式,滑动窗口 中的 全状态量:

滑动窗口内 n+1 个所有相机的状态(包括位置、朝向、速度、加速度计 bias 和陀螺仪 bias)
Camera 到 IMU 的外参
m+1 个 3D 点的逆深度

优化过程中的误差状态量
在这里插入图片描述
进而得到系统优化的代价函数(Minimize residuals from all sensors)
在这里插入图片描述
其中三个残差项依次是
边缘化的先验信息
IMU 测量残差
视觉的观测残差

三种残差都是用 马氏距离(与量纲无关) 来表示的。

Motion-only visual-inertial bundle adjustment: Optimize position, velocity, rotation in a smaller windows, assuming all other quantities are fixed

3.1 IMU 测量残差
(1)IMU 测量残差
上面的IMU预积分(估计值 - 测量值),得到 IMU 测量残差

/**

  • [evaluate 计算IMU测量模型的残差]

  • @param Pi,Qi,Vi,Bai,Bgi [前一次预积分结果]

  • @param Pj,Qj,Vj,Baj,Bgj [后一次预积分结果]
    */
    Eigen::Matrix<double, 15, 1> evaluate(
    const Eigen::Vector3d &Pi, const Eigen::Quaterniond &Qi, const Eigen::Vector3d &Vi, const Eigen::Vector3d &Bai, const Eigen::Vector3d &Bgi,
    const Eigen::Vector3d &Pj, const Eigen::Quaterniond &Qj, const Eigen::Vector3d &Vj, const Eigen::Vector3d &Baj, const Eigen::Vector3d &Bgj)
    {
    Eigen::Matrix<double, 15, 1> residuals;

    Eigen::Matrix3d dp_dba = jacobian.block<3, 3>(O_P, O_BA);
    Eigen::Matrix3d dp_dbg = jacobian.block<3, 3>(O_P, O_BG);

    Eigen::Matrix3d dq_dbg = jacobian.block<3, 3>(O_R, O_BG);

    Eigen::Matrix3d dv_dba = jacobian.block<3, 3>(O_V, O_BA);
    Eigen::Matrix3d dv_dbg = jacobian.block<3, 3>(O_V, O_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值