vins是今年刚开源的vio系统,跑了数据集效果挺好的,所以看了paper和代码。
视频地址:https://www.youtube.com/watch?v=I4txdvGhT6I
github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono.Git
在上一篇博文中,我们对数据预处理做了简单的笔记,这篇博文主要是对初始化过程进行了学习和记录。
初始化是整个VIO系统中非常重要的一部分,VIO系统通过初始化得到IMU的一些包括漂移,重力加速度等在内的参数,同时也为视觉定位提供了尺度信息。VINS的整个初始化过程主要分为以下6个步骤:
a) 手眼标定方法得到外参旋转量
b) 单纯的SFM得到视觉上的每帧的位姿和特征点的位置(仅仅进行了尺度归一化)
c) 以在同一时间段内,IMU旋转量与camera旋转量应该相同为条件计算陀螺仪的偏差Bg
d) 粗略求解每帧速度、g和s
原理:1、IMU测得的两帧之间的位移和camera测得的两帧之间的位移应该相等
2、IMU测得的两帧之间的速度和camera测得的两帧之间的速度应该相等
e) 重力加速度优化
在tangent空间,迭代矫正g的方向,从而使得模在9.8附近,重新计算d步骤的公式。
f) 要把重力加速度的方向变成[0,0,1]的方向,也就是竖直向下。实际上,就是把之前系统认为的世界坐标系改成重力加速度竖直向下的方向。然后更新所有的参数,统一坐标系。
有不对的地方欢迎指正!
参考文献:Technical Report: VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator