目录
0.3 紧耦合后端非线性优化(IMU约束+视觉约束+闭环约束)
VIO引出原因:
1)单纯视觉:缺点: 尺度不确定性、单目纯旋转无法估计、快速运动易丢失、受图像遮挡运动物体干扰。
优点:不产生漂移、直接测量旋转与平移。
2)单纯IMU:缺点:零偏导致漂移、低精度IMU积分位姿发散
优点:快速响应、可估计绝对尺度、角速度估计准确。
3)结合视觉+IMU:可用视觉弥补IMU的零偏,减少IMU由于零偏导致的发散和累计误差,IMU可为视觉提供快速响应的定位。
融合方案:
松耦合:将 IMU 定位与视觉的位姿直接后处理融合,融合过程对二者本身不产生影响,典型方案为卡尔曼滤波器
紧耦合:融合过程本身会影响视觉和 IMU 中的参数(如 IMU 的零偏和视觉的尺度)典型方案为 MSCKF 和非线性优化。
本文贡献:
1、一个紧耦合、基于优化的单目视觉惯性里程计,具有相机-IMU外部校准和IMU偏置估计。
2、基于有界滑动窗口迭代进行估计。
3、基于滑动窗口里的关键帧维持视觉结构,基于关键帧之间的IMU进行预积分维持惯性测量。
4、鲁棒性:未知状态的初始化、相机和IMU外参数的在线标定、球面不统一重投影误差、回环检测、四自由度位姿图优化(三位置和航向)
0、总体框架
包括五个部分:数据预处理、初始化、后端非线性优化、闭环检测、位姿图优化。
0.1 数据预处理(IMU预积分见标题1)
- 视觉:1)提取Harris角点,KLT金字塔光流跟踪相邻帧;2)2 维特征点先矫正为不失真的,然后在通过外点剔除后投影到一个单位球面上 ;3)去除异常点:先进行F矩阵测试,通过RANSAC去除异常点;4)关键帧选取:1、当前帧相对最近的关键帧的特征平均视差大于一个阈值就为关键帧(因为视差可以根据平移和旋转共同得到,而纯旋转则导致不能三角化成功,所以这一步需要IMU预积分进行补偿)2、当前帧跟踪到的特征点数量小于阈值视为关键帧;
- IMU:1)两帧k和k+1之间进行位置、速度、姿态(PVQ)预测;2)避免每次姿态优化调整后重复IMU传播,采用预积分算法,计算预积分误差的雅克比矩阵和协方差项。
0.2 初始化
采用松耦合的传感器融合方法得到初始值。首先用SFM进行纯视觉估计滑动窗内所有帧的位姿以及路标点逆深度,然后与IMU预积分对齐,继而恢复对齐尺度s,重力g,imu速度v,和陀螺仪偏置bg。
VINS本文初始化过程中忽视掉了加速度计的bias,因为加速度计与重力耦合,并且重力向量很大,初始化过程动态过程很短,幅度又不大,加速度计偏置很难观测到。
A.滑动窗口(Sliding Window)纯视觉SfM
1、选择一个滑动窗,在最后一帧与滑动窗之前帧寻找帧:跟踪到的点数目大于30个的并且视差超过20的,找到后用5点法本质矩阵初始化恢复出R和t。否则,滑动窗内保留最新图像帧,继续等待下一帧。
2、随意设置一个尺度因子,三角化这两帧观测到的所有路标点。再用PnP算法估计滑动窗内所有其余帧的位姿。滑动窗内全局BA重投影误差优化所有帧位姿。
3、假设IMU-Camera外参已知,乘上视觉得到的位姿,转换到IMU坐标系下。
B. 视觉惯性校准(IMU预积分与视觉结构对齐)
1、陀螺仪零偏bg标定
旋转两种方式:陀螺仪测量值和视觉观测值,二者的误差其实就是陀螺仪偏置bg。
目标函数:visual给出的相邻帧间的旋转应等于IMU预积分的旋转值Q之间的差。
考虑到了陀螺仪bias噪声,
我们得到了陀螺仪偏置bias的初始校准,需要将陀螺仪偏置bg代入到IMU预积分重新计算预积分。
2、速度v、重力g和尺度初始化s
优化变量:速度、重力向量和尺度
目标函数:相邻两帧IMU预积分增量与预测值之间平移、速度(P、V)的差。通过HX=B 利用cholesky分解获得
结合得到:
通过求解线性最小二乘问题:
3、重力矢量修正
重力向量的大小是已知的,加入了模长限制,这导致三维重力向量只剩2个自由度。
主要做的是优化方向,一个二维向量。
在其切线空间上用两个变量重新参数化重力,采用球面坐标进行参数化:
其中,