在运行整个里程计系统时,我们需要定义整个系统的初始状态(即初始的、、、和)。而初始状态则需要通过初始化进行计算。针对实际中的不同情况我们设计了静态初始化和动态初始化两种方案,通过IMU和视觉联合判断旋转哪一种方式进行初始化。在静态初始化中我们使用滑窗内IMU数据的平均值,并且通过施密特正交化恢复IMU姿态。而在动态初始化中我们通过视觉、状态和先验构造代价函数,通过优化的方式恢复初始状态。
静止初始化是指在视频序列开始阶段,需要有一段静止状态,系统利用静止状态的IMU数据来估计重力方向、加速度计陀螺仪biases。
静止初始化需要检测IMU的跳变过程(其中包含两个状态:静止状态、跳变状态): 
使用施密特正交化计算:
计算轴:
计算轴:
其中,
计算轴:
可得:
静止时刻的陀螺仪理想测量值(角速度)应该为0,因此陀螺仪的bias即窗口陀螺仪数据的平均值。
静止时的加速度计bias为加速度平均值与实际重力加速度的差:
为世界系下的重力加速度,将重力矢量从世界系投影到IMU坐标系下。
利用帧变换的基本性质,可以将向量(帧第个特征在IMU坐标系下的坐标)表示如下:
通过位置计算公式将展开可得:
其中, 是想获得的系统部分初始状态。
通过相机投影公式:
可将(8)式写成的形式:
其中,
至此已构造出线性约束,通过多项式的伴随矩阵和SVD分解可解出。
通过施密特正交化计算出初始将的所有状态转换到全局坐标系{}当中用于构建残差,用相机模型、IMU模型和先验因子构建代价函数,并将状态设置为优化参数进行优化。
相机模型:
其中,为相机畸变矫正,为投影模型,为坐标系变化({G}->{C})。
残差:
IMU模型:
其中,
为当前估计偏置下与积分的测量值。
残差:
先验残差:
通过当前时间状态的线性化值和估计值构建残差:
最后进行优化,使残差达到最小值,
当残差收敛,得到的优化参数为最终的初始状态,初始化结束。