Bootstrap

IMU预积分模型分析

IMU预积分模型分析

当我们考虑一个SLAM的优化问题时,每进行一次迭代优化其对应的位姿就会改变一次,由于IMU的惯性积分需要依赖于一个位姿的初值,所以导致每次迭代优化后IMU就要重新计算一次,这会导致代码运算量过大,所以我们引入了预积分的概念,即直接计算两帧之间的相对位姿,而不依赖初值

1.预积分计算

对于预积分的计算,我们首先要弄清楚IMU的惯性积分过程。首先,我们可以不加推导的得到一个运动微分方程:

在这里插入图片描述
根据上述微分方程,我们可以计算出从 i i i时刻到 j j j时刻IMU积分的结果:

在这里插入图片描述

根据预积分的要求,需要求的是相对结果,而且不依赖于上一时刻位姿,因此需要对上式做转换。
由于 q w b t = q q w b i ⊗ q b i b t q_{wb_t}=qq_{wb_i} \otimes q_{b_ib_t} qwbt=qqwbiqbibt把它带入(4)-(6)式可得:
在这里插入图片描述

可见,此时需要积分的项就完全和 i i i时刻的状态无关了。为了整理公式,把积分相关的项用下面的式子代替:
在这里插入图片描述
实际使用中,都是使用离散形式而非连续形式.在解算中,一般采用中值积分方法,即:

在这里插入图片描述
那么预积分的离散形式可以表示为:

在这里插入图片描述
经过以上的推导,此时状态更新的公式可以整理为:

在这里插入图片描述

需要注意的是,陀螺仪和加速度计的模型为:

在这里插入图片描述
即认为bias是在变化的,这样便于估计不同时刻的bias值,而不是整个系统运行时间内都当做常值对待。这更符合低精度mems的实际情况。但在预积分时,由于两个关键帧之间的时间较短,因此认为 i i i j j j时刻的bias相等

需要注意的一点是,预积分的结果中包含了bias,在优化过程中,bias作为状态量也会发生变化,从而引起预积分结果变化

为了避免bias变化后,重新做预积分,可以把预积分结果在bias处泰勒展开,表达成下面的形式,这样可以根据bias的变化量直接算出新的预积分结果
在这里插入图片描述
在这里插入图片描述
其中:
在这里插入图片描述
此处暂时不直接给出以上各雅可比的结果,它的推导放在后面进行。

2.连续时间下预积分方差更新矩阵计算

在融合时,需要给不同信息设置权重,而权重由方差得来,因此对于IMU积分,也要计算其方差。我们首先回顾一下连续情况下的微分方程:

在这里插入图片描述

方差的计算方式如下:

在这里插入图片描述

但需注意的是,此处 F k F_k Fk G k G_k Gk是离散时间下的状态传递方程中的矩阵,而我们一般是在连续时间下推导微分方程,再用它计算离散时间下的传递方程。

2.1 δ θ ˙ t b k \delta \dot \theta^{b_k}_t δθ˙tbk的微分推导

为了简便写法,我们把 δ θ ˙ t b k \delta \dot \theta^{b_k}_t δθ˙tbk记为 δ θ ˙ \delta \dot \theta δθ˙

首先,我们先建立 δ q \delta q δq δ θ \delta \theta δθ的关系:
在这里插入图片描述

所以我们首先要先得到 δ q \delta q δq δ q ˙ \delta \dot q δq˙之间的关系。

1) 写出不考虑误差的微分方程

在这里插入图片描述

2) 写出考虑误差的微分方程

在这里插入图片描述

3) 写出带误差的值与理想值之间的关系

在这里插入图片描述

4) 将带误差的值与理想值之间的关系带入2)

在这里插入图片描述
其中:
在这里插入图片描述

5) 把1)中的关系带入4)

在这里插入图片描述

6) 化简方程

首先将5)中的方程移项并左乘 ( q t ) − 1 (q_t)^{-1} (qt)1可得:
在这里插入图片描述
又四元数相乘可以转换成矩阵与向量相乘,例如:
在这里插入图片描述

我们不妨把 M p M_p Mp M p ′ M'_p Mp分别称为左矩阵和右矩阵。分别用 [ ∗ ] L [*]_L []L [ ∗ ] R [*]_R []R代替,因此方程可以进一步简化,我们令:

在这里插入图片描述
所以,我们可以得到 δ q \delta q δq δ q ˙ \delta \dot q δq˙之间的关系:
在这里插入图片描述
又根据之前推导的 δ q \delta q δq δ θ \delta \theta δθ关系:
在这里插入图片描述

把它代入上式,又可以得到:
在这里插入图片描述
忽略其中的二阶小项,可得:
在这里插入图片描述

2.2 δ β ˙ t b k \delta \dot\beta^{b_k}_t δβ˙tbk的微分推导

为了简便写法,我们把 δ β ˙ t b k \delta \dot \beta^{b_k}_t δβ˙tbk记为 δ β ˙ \delta \dot \beta δβ˙

1) 写出不考虑误差的微分方程

在这里插入图片描述

2) 写出考虑误差的微分方程

在这里插入图片描述

3) 写出带误差的值与理想值之间的关系

在这里插入图片描述

4) 将带误差的值与理想值之间的关系带入2)

在这里插入图片描述

5) 把1)中的关系带入4)

在这里插入图片描述

6) 化简方程

在这里插入图片描述

2.3 δ α ˙ t b k \delta \dot\alpha^{b_k}_t δα˙tbk的微分推导

为了简便写法,我们把 δ α ˙ t b k \delta \dot \alpha^{b_k}_t δα˙tbk记为 δ α ˙ \delta \dot \alpha δα˙

1) 写出不考虑误差的微分方程

在这里插入图片描述

2) 写出考虑误差的微分方程

在这里插入图片描述

3) 写出带误差的值与理想值之间的关系

在这里插入图片描述

4) 将带误差的值与理想值之间的关系带入2)

在这里插入图片描述

5) 把1)中的关系带入4)

在这里插入图片描述

6) 化简方程

在这里插入图片描述

3.离散时间下预积分方差更新矩阵计算

得到连续时间微分方程以后,就可以计算离散时间的递推方程了,表示为:
在这里插入图片描述
其中:
在这里插入图片描述

3.1 δ θ k + 1 \delta \theta_{k+1} δθk+1的求解

由于连续时间下有:

在这里插入图片描述

则离散时间下应该有:
在这里插入图片描述

因此有:
在这里插入图片描述
令:
在这里插入图片描述
则上式可以重新写为:
在这里插入图片描述

3.2 δ β k + 1 \delta \beta_{k+1} δβk+1的求解

由于连续时间下有:
在这里插入图片描述

则离散时间下应该有:
在这里插入图片描述
把3.1中求得的的 δ θ k + 1 \delta \theta_{k+1} δθk+1表达式代入上式,可得:
在这里插入图片描述
经过一系列合并同类项以后,最终的合并结果为:

在这里插入图片描述
由导数形式可以得到递推形式如下:

在这里插入图片描述

3.3 δ α k + 1 \delta \alpha_{k+1} δαk+1的求解

由于连续时间下有 δ α ˙ = δ β \delta\dot{\alpha}=\delta\beta δα˙=δβ,则离散时间下应该有:
在这里插入图片描述
由导数形式可以写出递推形式:
在这里插入图片描述

3.4 矩阵整理

由以上的推导结果,便可以写出 X k + 1 = F k X k + G k N k X_{k+1}=F_kX_k+G_kN_k Xk+1=FkXk+GkNk中的矩阵:
在这里插入图片描述
上面的矩阵中,有:
在这里插入图片描述

4.预积分更新

回到bias变化时,预积分结果怎样重新计算的问题,再次给出它的泰勒展开形式:
在这里插入图片描述
这里,雅可比没有明确的闭式解,但是在推导方差的更新时,我们得到了:
在这里插入图片描述
通过该递推形式,可以知道:
在这里插入图片描述

即预积分结果的雅可比,可以通过这种迭代方式计算。

J j J_j Jj中关于bias的项,就是预积分泰勒展开时,各bias对应的雅可比。

5.残差雅可比的推导

在优化时,需要知道残差关于状态量的雅可比。由于已知姿态位姿更新的方法如下:
在这里插入图片描述
因此,可以很容易写出一种残差形式如下:
在这里插入图片描述
但是和预积分相关的量,仍然与上一时刻的姿态有关,无法直接加减,因此,把残差修正为以下形式:

在这里插入图片描述
待优化的变量是:
在这里插入图片描述
但在实际使用中,往往都是使用扰动量,因此,实际是对以下变量求雅可比
在这里插入图片描述

5.1 姿态残差的雅可比

1) 对 i i i时刻姿态误差的雅可比

在这里插入图片描述
上式可以化简为:

在这里插入图片描述

2) 对 j j j时刻姿态误差的雅可比

在这里插入图片描述

3) 对 i i i时刻陀螺仪bias误差的雅可比

在这里插入图片描述

5.2 速度残差的雅可比

1) 对 i i i时刻姿态误差的雅可比

在这里插入图片描述

2) 对 i i i时刻速度误差的雅可比

在这里插入图片描述

3) 对 i i i时刻加速度bias误差的雅可比

在这里插入图片描述

;