原论文链接:VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator
参考:崔华坤-《VINS论文推导及代码解析》与 高翔-《视觉SLAM十四讲》
整理了 VINS-Mono 论文中 关于 IMU 预积分公式及协方差、雅可比矩阵传递的推导。
目录
1. IMU 原始加速度和角加速度
IMU 原始加速度和角加速度(相对于IMU/本体 坐标系)表示如下:
(1)
a ^ t = a t + b a t + R w t g w + n a ω ^ t = ω t + b w t + n w \begin{aligned} &\hat{\mathbf{a}}_{t}=\mathbf{a}_{t}+\mathbf{b}_{a_{t}}+\mathbf{R}_{w}^{t} \mathbf{g}^{w}+\mathbf{n}_{a} \\ &\hat{\boldsymbol{\omega}}_{t}=\boldsymbol{\omega}_{t}+\mathbf{b}_{w_{t}}+\mathbf{n}_{w} \end{aligned} a^t=at+bat+Rwtgw+naω^t=ωt+bwt+nw
(1)式中
n a ∼ N ( 0 , σ a 2 ) , n w ∼ N ( 0 , σ w 2 ) b ˙ a t = n b a , n b a ∼ N ( 0 , σ b a 2 ) b ˙ w t = n b w , n b w ∼ N ( 0 , σ b w 2 ) \begin{aligned} &\mathbf{n}_{a} \sim \mathcal{N}\left(\mathbf{0}, \sigma_{a}^{2}\right), \mathbf{n}_{w} \sim \mathcal{N}\left(\mathbf{0}, \sigma_{w}^{2}\right) \\ &\dot{\mathbf{b}}_{a_{t}}=\mathbf{n}_{b_{a}}, \mathbf{n}_{b_{a}} \sim \mathcal{N}\left(\mathbf{0}, \sigma_{b_{a}}^{2}\right) \\ &\dot{\mathbf{b}}_{w_{t}}=\mathbf{n}_{b_{w}}, \mathbf{n}_{b_{w}} \sim \mathcal{N}\left(\mathbf{0}, \sigma_{b_{w}}^{2}\right) \end{aligned} na∼N(0,σa2),nw∼N(0,σw2)b˙at=nba,nba∼N(0,σba2)b˙wt=nbw,nbw∼N(0,σbw2)
2. 当前时刻 PVQ 的连续形式
定义采集到的连续两帧图像为 b k b_k bk 和 b k + 1 b_{k+1} bk+1,则在时间区间 [ t k , t k + 1 ] [t_k, t_{k+1}] [tk,tk+1] 内对位置 P,速度 V 和四元数表示的旋转 Q 进行积分的公式如下(得到结果的参考坐标系为世界坐标系):
(23)
p b k + 1 w = p b k w + v b k w Δ t k + ∬ t ∈ [ t k , t k + 1 ] ( R t w ( a ^ t − b a t − n a ) − g w ) d t 2 v b k + 1 w = v b k w + ∫ t ∈ [ t k , t k + 1 ] ( R t w ( a ^ t − b a t − n a ) − g w ) d t q b k + 1 w = q b k w ⊗ ∫ t ∈ [ t k , t k + 1 ] 1 2 Ω ( ω ^ t − b w t − n w ) q t b k d t \begin{aligned} \mathbf{p}_{b_{k+1}}^{w}&=\mathbf{p}_{b_{k}}^{w} +\mathbf{v}_{b_{k}}^{w} \Delta t_{k} +\iint_{t \in\left[t_{k}, t_{k+1}\right]}\left(\mathbf{R}_{t}^{w}\left(\hat{\mathbf{a}}_{t}-\mathbf{b}_{a_{t}}-\mathbf{n}_{a}\right)-\mathbf{g}^{w}\right) d t^{2} \\ \mathbf{v}_{b_{k+1}}^{w}&=\mathbf{v}_{b_{k}}^{w} +\int_{t \in\left[t_{k}, t_{k+1}\right]}\left(\mathbf{R}_{t}^{w}\left(\hat{\mathbf{a}}_{t}-\mathbf{b}_{a_{t}}-\mathbf{n}_{a}\right)-\mathbf{g}^{w}\right) d t \\ \mathbf{q}_{b_{k+1}}^{w}&=\mathbf{q}_{b_{k}}^{w} \otimes \int_{t \in\left[t_{k}, t_{k+1}\right]} \frac{1}{2} \Omega\left(\hat{\boldsymbol{\omega}}_{t}-\mathbf{b}_{w_{t}}-\mathbf{n}_{w}\right) \mathbf{q}_{t}^{b_{k}} d t \end{aligned} pbk+1wvbk+1wqbk+1w=pbkw+vbkwΔtk+∬t∈[tk,tk+1](Rtw(a^t−bat−na)−gw)dt2=vbkw+∫t∈[tk,tk+1](Rtw(a^t−bat−na)−gw)dt=qbkw⊗∫t∈[tk,tk+1]21Ω(ω^t−bwt−nw)qtbkdt
where
(24)
Ω ( ω ) = [ − ⌊ ω ⌋ × ω − ω T 0 ] , ⌊ ω ⌋ × = [ 0 − ω z ω y ω z 0 − ω x − ω y ω x 0 ] \boldsymbol{\Omega}(\boldsymbol{\omega})=\left[\begin{array}{cc} -\lfloor\boldsymbol{\omega}\rfloor_{\times} & \boldsymbol{\omega} \\ -\boldsymbol{\omega}^{T} & 0 \end{array}\right],\lfloor\boldsymbol{\omega}\rfloor_{\times}=\left[\begin{array}{ccc} 0 & -\omega_{z} & \omega_{y} \\ \omega_{z} & 0 & -\omega_{x} \\ -\omega_{y} & \omega_{x} & 0 \end{array}\right] Ω(ω)=[−⌊ω⌋×−ωTω0],⌊ω⌋×=⎣⎡0ωz−ωy−ωz0ωxωy−ωx0⎦⎤
R t w R_t^w Rtw 表示 t 时刻 IMU/本体 坐标系 到 世界坐标系的旋转矩阵;
q t b k q_t^{b_k} qtbk 表示 t 时刻 IMU/本体 坐标系 相对于采集 b k b_k bk的时刻的 IMU/本体 坐标系 的旋转(四元数形式)。
q b k w q_{b_k}^w qbkw 表示 采集 b k b_k bk的时刻的IMU坐标系 相对于 世界坐标系 的旋转(四元数形式)。论文中四元数向量的实部是向量最后一个元素。
四元数的积分涉及到四元数求导、四元数与旋转向量的转换等的知识。
四元数求导推导请看文章后半部分。
3. 两帧之间 PVQ 增量的连续形式
因为上述公式的积分项存在 R t w R_t^w Rtw 或者 q q q,IMU状态传递需要知道 b k b_k bk 时刻的 PVQ,优化算法每次对状态优化后都需要重新传递 IMU 的测量,降低了处理速度。
所以引出了预积分。
将参考坐标系从世界坐标系改为 b k b_k bk 的 IMU/本体 坐标系,Q、V等式两边同时左乘 R w b k R_w^{b_k} Rwbk,Q等式左右两边同时左乘 q w b k q_w^{b_k} qwbk:
(25)
R w b k p b k + 1 w = R w b k ( p b k w + v b k w Δ t k − 1 2 g w Δ t k 2 ) + α b k + 1 b k R w b k v b k + 1 w = R w b k ( v b k w − g w Δ t k ) + β b k + 1 b k q w b k ⊗ q b k + 1 w = γ b k + 1 b k \begin{aligned} \mathbf{R}_{w}^{b_{k}} \mathbf{p}_{b_{k+1}}^{w} &=\mathbf{R}_{w}^{b_{k}}\left(\mathbf{p}_{b_{k}}^{w}+\mathbf{v}_{b_{k}}^{w} \Delta t_{k}-\frac{1}{2} \mathbf{g}^{w} \Delta t_{k}^{2}\right)+\alpha_{b_{k+1}}^{b_{k}} \\ \mathbf{R}_{w}^{b_{k}} \mathbf{v}_{b_{k+1}}^{w} &=\mathbf{R}_{w}^{b_{k}}\left(\mathbf{v}_{b_{k}}^{w}-\mathbf{g}^{w} \Delta t_{k}\right)+\boldsymbol{\beta}_{b_{k+1}}^{b_{k}} \\ \mathbf{q}_{w}^{b_{k}} \otimes \mathbf{q}_{b_{k+1}}^{w} &=\boldsymbol{\gamma}_{b_{k+1}}^{b_{k}} \end{aligned} R