VINS-Mono: A Robust and Versatile Monocular
Visual-Inertial State Estimator
Abstract
本文介绍了一种单目-视觉惯性状态估计,在平面上运动。单目图像和imu的组合提供了一种最少的传感器组合,三自由度的状态估计。我们将视觉和惯性在一个窗口中计算。
本系统在各个方面都比较鲁邦,比如:状态未知条件下的初始化、在线标定、闭环检测、四自由度的pose graph。这些性质让本系统简单易用。
1. Overview
本系统分为三个步骤
- 视觉IMU预处理
- 初始化过程
- 非线性优化
表示方法: ( ) w ()^w ()w表示世界坐标系、 ( ) b ()^b ()b表示body坐标系, ( ) c ()^c ()c表示cam坐标系
2. 观测预处理
A. 视觉处理比较简单
B. IMU 预积分
这里有一个疑问,貌似这里把body系下的加速度,直接乘以旋转矩阵,就到了全局系
p b k + 1 w = p b k w + v b k w + ∫ ∫ R t w ∗ a ^ t d t 2 p^{w}_{b_{k+1}} = p^{w}_{b_k} + v^w_{b_k} + \int \int R^w_t * \hat{a}_tdt^2 pbk+1w=pbkw+vbkw+∫∫Rtw∗a^tdt2
v b k + 1 w = v b k w + ∫ R t w ∗ a ^ t d t v^{w}_{b_{k+1}} = v^{w}_{b_k} + \int R^w_t * \hat{a}_tdt vbk+1w=vbkw+∫Rtw∗a^tdt
q b k + 1 w = q b k w ⊗ ∫ 1 / 2 Ω ( w ^ ) q t b k d t q^{w}_{b_{k+1}} = q^{w}_{b_k} \otimes \int 1/2 \Omega(\hat{w})q^{b_k}_tdt qbk+1w=qbkw⊗∫1/2Ω(w^)qtbkdt
因为观察到上面的式子是依赖 b k {b_k} bk的,在公式两边同时乘以 R w b k R^{b_k}_w Rwbk, 将上面的式子转换到局部坐标系下:
R w b k p b k + 1 w = R w b k ( p b k w + v b k w ) + R w b k ∫ ∫ R t w ∗ a ^ t d t 2 R^{b_k}_wp^{w}_{b_{k+1}} = R^{b_k}_w(p^{w}_{b_k} + v^w_{b_k}) + R^{b_k}_w\int \int R^w_t * \hat{a}_tdt^2 Rwbkpbk+1w=Rwbk(pbkw+vbkw)+Rwbk∫∫Rtw∗a^tdt2
R w b k v b k + 1 w = R w b k v b k w + R w b k ∫ R t w ∗ a ^ t d t R^{b_k}_wv^{w}_{b_{k+1}} = R^{b_k}_wv^{w}_{b_k} + R^{b_k}_w\int R^w_t * \hat{a}_tdt Rwbkvbk+1w=Rwbkvbkw+Rwbk∫Rtw∗a^tdt
q w b k q b k + 1 w = q w b k q b k w ⊗ ∫ 1 / 2 Ω ( w ^ ) q t b k d t q^{b_k}_wq^{w}_{b_{k+1}} = q^{b_k}_wq^{w}_{b_k} \otimes \int 1/2 \Omega(\hat{w})q^{b_k}_tdt qwbkqbk+1w=qwbkqbkw⊗∫1/2Ω(w^)qtbkdt
因此得到预积分的三个公式:
α b k + 1 b k = ∫ ∫ R t b k ∗ a ^ t d t 2 \alpha^{b_k}_{b_{k+1}}=\int \int R^{b_k}_t * \hat{a}_tdt^2 αbk+1bk=∫∫Rtbk∗a^tdt2
β b k + 1 b k = ∫ R t b k ∗ a ^ t d t \beta^{b_k}_{b_{k+1}}=\int R^{b_k}_t * \hat{a}_tdt βbk+1bk=∫Rtbk∗a^tdt
γ b k + 1 b k = ∫ 1 / 2 Ω ( w ^ ) q t b k d t \gamma^{b_k}_{b_{k+1}} = \int 1/2 \Omega(\hat{w})q^{b_k}_tdt γbk+1bk=∫1/2Ω(w^)qtbkdt
上面的式子定义的递推公式,可以看成是只需要使用imu,将 b k b_k bk当做是基础pose,就可以完全得到的结果。从下往上,可以求出 α , β , γ \alpha, \beta, \gamma α,β,γ的所有结果。
对于离线形式,因为都是积分,其实就是累加的形式得到最终的结果。
α i + 1 b k = α i b k + \alpha^{b_k}_{i+1} = \alpha^{b_k}_{i} + αi+1bk=αibk+
公式5中的 α \alpha α, 为什么会和 β \beta β有关系?有关系的,通过下面的实例可以验证。
这里可以使用一个实际的例子来进行验证。初速度=0,以加速度1m/s^2向前移动,对v和s进行积分,结果一致。
从这个例子可以看出,这三个预积分,其实对应的就是这一段的速度增量、距离增量、角度增量。
有了观测量之后,在后续的使用过程中,需要使用该观测量的协方差。这里因为假设没有bias,所以误差的来源就是角速度和加速度的高斯误差。
因为这里的观测量变成了 α , β , γ \alpha, \beta, \gamma α,β,γ, 所以要通过协方差传播公式来传递。
又因为是离散的,所以又需要求一下每一个delta量的协方差。求得协方差的迭代公式。协方差迭代公式,就是利用偏导的平方进行传播的。
notes:为了简化公式推导,假设没有bias,没有重力。pose的移动在一个平面上发生。