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的移动在一个平面上发生。