最近几个月忙于博士毕业,找工做一直没有继续更新博客,但愿以这一篇开始,每月可以继续有几篇总结博客。php
首先review一下比较著名的vio系统算法
VIO系统的优势显而易见,难点在于如何将visual和inertial两个传感器的优缺点有效结合,达到快速初始化(最重要的是尺度和重力方向),稳定鲁邦估计,以及对噪声和传感器参数(相机IMU外参,IMU零偏)的高度容忍或者在线估计。less
这篇博客主要比较集中优化方法的初始化过程,为了达到非线性优化问题的最优解,一个靠谱的初值可让系统很快收敛,不只能够提升优化速度,也能够达到optimal的状态估计。相反,初值估计错误不只致使非线性优化问题陷入局部最小,并且使得参数估计彻底错误,从而使得系统崩溃(俗称系统飞掉,特别是imu的bias参数估计错误)。优化
首先介绍OKVIS的初始化方法,OKVIS对IMU的参数很是敏感(相对于VINS-Mono使用商用级别commercial-grade的IMU便可,它须要使用工业级别industrial-grade的IMU来完成初始化操做),由于整个系统的状态propagation就是基于IMU,更严苛的是系统的初始化状态也彻底依赖于初始(几十个或者几百个)IMU数据的propagation给出的姿态,若是是pure rotation运动,则使用2D-2D匹配进行跟踪,轨迹仅由IMU给出,当能够三角化出landmark时(有足够的2D-2D匹配内点,且内点能够恢复出3D点(使用Kneip的Opengv中算法)),初始化完成。后续同时使用3D-2D匹配和2D-2D匹配。所以,IMU给出的初始轨迹估计须要比较准确,才能够给出初始轨迹,而且肯定什么时候能够初始化完成。spa