SLAM——IMU预积分

IMU预积分,耳熟能详,但是一直没有仔细了解。这里详细介绍一下。 ## 运动模型

首先做一个简单规定,因为IMU预积分离不开IMU坐标系与世界坐标系的转换,因此我们将世界坐标下的值标记为ww,将IMU坐标系下的值标记为bb。而𝑹bw\mathbf R^w_b表示了从世界坐标到IMU坐标的转换。

一般来说,IMU包含了两部分——陀螺仪与加速计,因此IMU的raw data有两类:

$$ \tilde{\boldsymbol{\omega}}^{b}(t)=\boldsymbol{\omega}^{b}(t)+\mathbf{b}_ {g}(t)+\boldsymbol{\eta}_ {g}(t)\\\tilde{\mathbf{a}}^{b}(t)=\mathbf{R}_ {b(t)}^{w T}\left(\mathbf{a}^{w}(t)-\mathbf{g}^{w}\right)+\mathbf{b}_ {a}(t)+\boldsymbol{\eta}_ {a}(t) $$

其中𝝎̃b\tilde {\boldsymbol\omega}^b𝒂̃b\tilde{\mathbf{a}}^b分别是读取到的角速度与加速度,也就是观察值,属于IMU坐标系下的读数,且包含噪声𝜼\boldsymbol \eta与偏差𝒃\mathbf b(分别是加速度accelerometer与陀螺仪gyro的噪声与偏差)。同时,IMU的加速度测量的是IMU坐标下的一个力,但是由于测量原理,它测出来的加速度去除了重力,例如一个三轴加速度计放在水平面上,那么它的输出将是铅垂线反向的9.8m/s29.8m/s^2;如果一个加速度计做自由落体运动,那么它的输出会是0。而我们关注的物体真正的加速度𝒂w(t)\mathbf a ^w(t)是世界坐标系𝑾\mathbf W下,当然也包含了重力。所以真实加速度需要去除重力加速度再转换到IMU坐标系下才是IMU的加速度读数。

同时,根据运动模型,我们可以得到旋转矩阵𝑹\mathbf R,速度𝒗\mathbf v以及位置𝒑\mathbf p的微分模型如下:

𝑹̇bw=𝑹bw(𝝎b)𝒗̇w=𝒂w𝒑̇w=𝒗w \begin{array}{l} \dot{\mathbf{R}}_ {b}^{w}=\mathbf{R}_ {b}^{w}\left(\boldsymbol{\omega}^{b}\right)^{\wedge} \\ \dot{\mathbf{v}}^{w}=\mathbf{a}^{w} \\ \dot{\mathbf{p}}^{w}=\mathbf{v}^{w} \end{array}

有意思的一件事是,虽然旋转矩阵是一个从世界坐标到IMU坐标的转换(也就世界坐标系下姿态的逆),但是微分里的角速度是IMU坐标系的,这意味着我们可以直接使用IMU去噪后的角速度读数。使用欧拉积分(?),可以得到下一刻的状态(离散形式):

𝑹b(t+Δt)w=𝑹b(t)wExp(𝝎b(t)Δt)𝒗w(t+Δt)=𝒗w(t)+𝒂w(t)Δt𝒑w(t+Δt)=𝒑w(t)+𝒗w(t)Δt+12𝒂w(t)Δt2 \begin{array}{l}\mathbf{R}_ {b(t+\Delta t)}^{w}=\mathbf{R}_ {b(t)}^{w} \operatorname{Exp}\left(\boldsymbol{\omega}^{b}(t) \cdot \Delta t\right) \\\mathbf{v}^{w}(t+\Delta t)=\mathbf{v}^{w}(t)+\mathbf{a}^{w}(t) \cdot \Delta t \\\mathbf{p}^{w}(t+\Delta t)=\mathbf{p}^{w}(t)+\mathbf{v}^{w}(t) \cdot \Delta t+\frac{1}{2} \mathbf{a}^{w}(t) \cdot \Delta t^{2}\end{array}

上式中速度和位置都很容易理解,对于旋转矩阵,很显然上面给出的结果也是很符合直观的,就是将角速度与间隔时间相乘后得到一个旋转向量(角速度乘上时间也就得到了绕各个轴旋转的角度,可以直接得到旋转向量,所以一个旋转向量其实可以理解成绕坐标轴旋转的角度?),再转化到SO(3)\text{SO(3)}上进行乘积。而一个严格的解释如下:

𝑹b(t)wExp(𝝎wbb(t)Δt)=𝑹b(t)w𝑹b(t+Δt)b(t)=𝑹b(t+Δt)w \mathbf{R}^{w}_ {b(t)} \operatorname{Exp}\left(\boldsymbol{\omega}_ {w b}^{b}(t) \cdot \Delta t\right)=\mathbf{R}_ {b(t)}^{w} \mathbf{R}_ {b(t+\Delta t)}^{b(t)}=\mathbf{R}_ {b(t+\Delta t)}^{w}

为了简化符号,规定:

$$ \mathbf{R}(t) \doteq \mathbf{R}_ {b(t)}^{w} ; \quad \boldsymbol{\omega}(t) \doteq \boldsymbol{\omega}^{b}(t) ; \quad \mathbf{a}(t)=\mathbf{a}^{b}(t) ; \\\quad \mathbf{v}(t) \doteq \mathbf{v}^{w}(t) ; \quad \mathbf{p}(t) \doteq \mathbf{p}^{w}(t) ; \quad \mathbf{g} \doteq \mathbf{g}^{w} $$

如果将测量模型带入到运动模型中,可以得到:

𝑹(t+Δt)=𝑹(t)Exp(𝝎(t)Δt)=𝑹(t)Exp((𝝎̃(t)𝒃g(t)𝜼gd(t))Δt)𝒗(t+Δt)=𝒗(t)+𝒂w(t)Δt=𝒗(t)+𝑹(t)(𝒂̃(t)𝒃a(t)𝜼ad(t))Δt+𝒈Δt𝒑(t+Δt)=𝒑(t)+𝒗(t)Δt+12𝒂w(t)Δt2=𝒑(t)+𝒗(t)Δt+12[𝑹(t)(𝒂̃(t)𝒃a(t)𝜼ad(t))+𝒈]Δt2=𝒑(t)+𝒗(t)Δt+12𝒈Δt2+12𝑹(t)(𝒂̃(t)𝒃a(t)𝜼ad(t))Δt2 \begin{aligned}\mathbf{R}(t+\Delta t) &=\mathbf{R}(t) \cdot \operatorname{Exp}(\boldsymbol{\omega}(t) \cdot \Delta t) \\&=\mathbf{R}(t) \cdot \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}(t)-\mathbf{b}_ {g}(t)-\boldsymbol{\eta}_ {g d}(t)\right) \cdot \Delta t\right) \\\mathbf{v}(t+\Delta t) &=\mathbf{v}(t)+\mathbf{a}^{w}(t) \cdot \Delta t \\&=\mathbf{v}(t)+\mathbf{R}(t) \cdot\left(\tilde{\mathbf{a}}(t)-\mathbf{b}_ {a}(t)-\boldsymbol{\eta}_ {a d}(t)\right) \cdot \Delta t+\mathbf{g} \cdot \Delta t \\\mathbf{p}(t+\Delta t) &=\mathbf{p}(t)+\mathbf{v}(t) \cdot \Delta t+\frac{1}{2} \mathbf{a}^{w}(t) \cdot \Delta t^{2} \\&=\mathbf{p}(t)+\mathbf{v}(t) \cdot \Delta t+\frac{1}{2}\left[\mathbf{R}(t) \cdot\left(\tilde{\mathbf{a}}(t)-\mathbf{b}_ {a}(t)-\boldsymbol{\eta}_ {a d}(t)\right)+\mathbf{g}\right] \cdot \Delta t^{2} \\&=\mathbf{p}(t)+\mathbf{v}(t) \cdot \Delta t+\frac{1}{2} \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \mathbf{R}(t) \cdot\left(\tilde{\mathbf{a}}(t)-\mathbf{b}_ {a}(t)-\boldsymbol{\eta}_ {a d}(t)\right) \cdot \Delta t^{2}\end{aligned}

首先要注意的是,上面的噪声也从连续形式变成了离散形式,而二者的区别就在于他们有不同的协方差:

Cov(𝜼gd(t))=1ΔtCov(𝜼g(t))Cov(𝜼ad(t))=1ΔtCov(𝜼a(t)) \begin{array}{l}\operatorname{Cov}\left(\boldsymbol{\eta}_ {g d}(t)\right)=\frac{1}{\Delta t} \operatorname{Cov}\left(\boldsymbol{\eta}_ {g}(t)\right) \\\operatorname{Cov}\left(\boldsymbol{\eta}_ {a d}(t)\right)=\frac{1}{\Delta t} \operatorname{Cov}\left(\boldsymbol{\eta}_ {a}(t)\right)\end{array}

如果假设采样频率一定,时间间隔为Δt\Delta t,那么每个时刻可以表示为离散的1,2,...,k1, 2, ..., k,因此,进一步简化可以将下一个时刻的状态写为:

𝑹k+1=𝑹kExp((𝝎̃k𝒃kg𝜼kgd)Δt)𝒗k+1=𝒗k+𝑹k(𝒂̃k𝒃ka𝜼kad)Δt+𝒈Δt𝒑k+1=𝒑k+𝒗kΔt+12𝒈Δt2+12𝑹k(𝒂̃k𝒃ka𝜼kad)Δt2 \begin{array}{l}\mathbf{R}_ {k+1}=\mathbf{R}_ {k} \cdot \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {k}^{g}-\boldsymbol{\eta}_ {k}^{g d}\right) \cdot \Delta t\right) \\\mathbf{v}_ {k+1}=\mathbf{v}_ {k}+\mathbf{R}_ {k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\boldsymbol{\eta}_ {k}^{a d}\right) \cdot \Delta t+\mathbf{g} \cdot \Delta t \\\mathbf{p}_ {k+1}=\mathbf{p}_ {k}+\mathbf{v}_ {k} \cdot \Delta t+\frac{1}{2} \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \mathbf{R}_ {k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\boldsymbol{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\end{array}

预积分

根据之前的内容,如果有两个时刻i,ji,j,且我们知道ii时刻的机器人状态,以及i,ji,j时刻之间的IMU状态,那么我们可以直接得到jj时刻的机器人状态,通过对i,ji,j时刻间的IMU状态进行上述的积分:

𝑹j=𝑹ik=ij1Exp((𝒂̃k𝒃kg𝜼kgd)Δt)𝒗j=𝒗i+𝒈Δtij+k=ij1𝑹k(𝒂̃k𝒃ka𝜼kad)Δt𝒑j=𝒑i+k=ij1𝒗kΔt+ji2𝒈Δt2+12k=ij1𝑹k(𝒂̃k𝒃ka𝜼kad)Δt2=𝒑i+k=ij1[𝒗kΔt+12𝒈Δt2+12𝑹k(𝒂̃k𝒃ka𝜼kad)Δt2] \begin{aligned}\mathbf{R}_ {j} &=\mathbf{R}_ {i} \cdot \prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{g}-\mathbf{\eta}_ {k}^{g d}\right) \cdot \Delta t\right) \\\mathbf{v}_ {j} &=\mathbf{v}_ {i}+\mathbf{g} \cdot \Delta t_ {i j}+\sum_ {k=i}^{j-1} \mathbf{R}_ {k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t \\\mathbf{p}_ {j} &=\mathbf{p}_ {i}+\sum_ {k=i}^{j-1} \mathbf{v}_ {k} \cdot \Delta t+\frac{j-i}{2} \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \sum_ {k=i}^{j-1} \mathbf{R}_ {k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2} \\&=\mathbf{p}_ {i}+\sum_ {k=i}^{j-1}\left[\mathbf{v}_ {k} \cdot \Delta t+\frac{1}{2} \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \mathbf{R}_ {k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right]\end{aligned}

其中Δtij=k=ij1Δt=(ji)Δt\Delta t_ {i j}=\sum_ {k=i}^{j-1} \Delta t=(j-i) \Delta t,也就是时刻之间的时间间隔。可以看到,上述估计中相邻两个IMU数据之间的状态用先前的IMU状态来代替。后面的速度与位置的更新,都出现了新的变量𝑹k\mathbf R_k,也就意味着当𝑹i\mathbf R_i有变化,所有的𝑹k\mathbf R_k都会跟着改变,所有的量都需重新计算。为了避免这样的情况,很直接的方法就是记录着i,ji,j时刻之间的变化值,而这个变化值不应该随着𝑹i\mathbf R_i 的改变而改变。因此,需要引入预积分。预积分的目的自然是为了消除IMU积分式中的𝑹i\mathbf R_ {i}以及与其相关的𝑹k𝒗k\mathbf R_k, \mathbf v_k,这样之后𝑹i\mathbf R_i改变后,可以直接利用先前计算的预积分得到更新的结果。因此我们定义下面为预积分的内容:

Δ𝑹ij𝑹iT𝑹j=k=ij1Exp((𝝎̃k𝒃kg𝜼kgd)Δt)Δ𝒗ij𝑹iT(𝒗j𝒗i𝒈Δtij)=k=ij1Δ𝑹ik(𝒂̃k𝒃ka𝜼kad)ΔtΔ𝒑ij𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)=k=ij1[Δ𝒗ikΔt+12Δ𝑹ik(𝒂̃k𝒃ka𝜼kad)Δt2] \begin{aligned}\Delta \mathbf{R}_ {i j} & \triangleq \mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \\&=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {k}^{g}-\boldsymbol{\eta}_ {k}^{g d}\right) \cdot \Delta t\right) \\\Delta \mathbf{v}_ {i j} & \triangleq \mathbf{R}_ {i}^{T}\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right) \\&=\sum_ {k=i}^{j-1} \Delta \mathbf{R}_ {i k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t \\\Delta \mathbf{p}_ {i j} & \triangleq \mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right) \\&=\sum_ {k=i}^{j-1}\left[\Delta \mathbf{v}_ {i k} \cdot \Delta t+\frac{1}{2} \Delta \mathbf{R}_ {i k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right]\end{aligned}

预积分的这三个值,第一个容易理解以及第二个是容易理解的,就是在IMU积分项中把𝑹i\mathbf R_ {i}𝒗i\mathbf v_i𝒑i\mathbf p_i提取出。而对于位置的预积分,更复杂一点,证明如下:

ξk=𝒂̃k𝒃ka𝜼kad\xi_ {k}=\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d},有

𝒑j𝒑i𝒗iΔtij12𝒈Δtij2=k=ij1(𝒗kΔt+12𝒈Δt2+12𝑹kξkΔt2)k=ij1𝒗iΔt(ji)22𝒈Δt2=k=ij1(𝒗k𝒗i)Δt+[ji2(ji)22]𝒈Δt2+12k=ij1𝑹kξkΔt2=k=ij1(𝒗k𝒗i)Δtk=ij1(ki)𝒈Δt2+12k=ij1𝑹kξkΔt2=k=ij1{[𝒗k𝒗i(ki)𝒈Δt]Δt+12𝑹kξkΔt2}=k=ij1[(𝒗k𝒗i𝒈Δtik)Δt+12𝑹kξkΔt2]=k=ij1[𝑹iΔ𝒗ikΔt+12𝑹kξkΔt2]=𝑹ik=ij1[Δ𝒗ikΔt+12Δ𝑹ik(𝒂̃k𝒃ka𝜼kad)Δt2] \begin{aligned}& \mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2} \\=& \sum_ {k=i}^{j-1}\left(\mathbf{v}_ {k} \cdot \Delta t+\frac{1}{2} \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2}\right)-\sum_ {k=i}^{j-1} \mathbf{v}_ {i} \cdot \Delta t-\frac{(j-i)^{2}}{2} \mathbf{g} \cdot \Delta t^{2} \\=& \sum_ {k=i}^{j-1}\left(\mathbf{v}_ {k}-\mathbf{v}_ {i}\right) \Delta t+\left[\frac{j-i}{2}-\frac{(j-i)^{2}}{2}\right] \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \sum_ {k=i}^{j-1} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2} \\=& \sum_ {k=i}^{j-1}\left(\mathbf{v}_ {k}-\mathbf{v}_ {i}\right) \Delta t-\sum_ {k=i}^{j-1}(k-i) \mathbf{g} \cdot \Delta t^{2}+\frac{1}{2} \sum_ {k=i}^{j-1} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2} \\=& \sum_ {k=i}^{j-1}\left\{\left[\mathbf{v}_ {k}-\mathbf{v}_ {i}-(k-i) \mathbf{g} \cdot \Delta t\right] \Delta t+\frac{1}{2} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2}\right\} \\=& \sum_ {k=i}^{j-1}\left[\left(\mathbf{v}_ {k}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i k}\right) \Delta t+\frac{1}{2} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2}\right] \\=& \sum_ {k=i}^{j-1}\left[\mathbf{R}_ {i} \cdot \Delta \mathbf{v}_ {i k} \cdot \Delta t+\frac{1}{2} \mathbf{R}_ {k} \xi_ {k} \cdot \Delta t^{2}\right]\\=&\mathbf R_i\sum_ {k=i}^{j-1}\left[\Delta \mathbf{v}_ {i k} \cdot \Delta t+\frac{1}{2} \Delta \mathbf{R}_ {i k} \cdot\left(\tilde{\mathbf{a}}_ {k}-\mathbf{b}_ {k}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right]\end{aligned}

有了预积分项,想要得到积分后的结果就非常容易了。预积分的意义是找出i,ji,j时刻之间IMU状态贡献的部分,即使机器人状态有变化,固定时刻之间IMU状态测量值不变,这个贡献也不应该改变,因此IMU预积分是可以当作两个机器人状态之间的一个约束。

预积分测量值以及测量噪声

这一部分是为了分离出噪声,直接使用测量值的预积分。首先假设i,ji, j时刻之间的bias是一定的,那么

(1)对于Δ𝑹ij\Delta\mathbf R_ {ij}有:

Δ𝑹ij=k=ij1Exp((𝝎̃k𝒃ig)Δt𝜼kgdΔt)k=ij1{Exp((𝝎̃k𝒃ig)Δt)Exp(𝑱r((𝝎̃k𝒃ig)Δt)𝜼kgdΔt)} \begin{aligned}\Delta \mathbf{R}_ {i j} &=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t-\boldsymbol{\eta}_ {k}^{g d} \Delta t\right) \\& \approx \prod_ {k=i}^{j-1}\left\{\operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t\right) \cdot \operatorname{Exp}\left(-\mathbf{J}_ {r}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t\right) \cdot \mathbf{\eta}_ {k}^{g d} \Delta t\right)\right\}\end{aligned}

这一步是把𝜼kgdΔt\boldsymbol \eta_ {k}^{gd}\Delta t看作是一个微小量,则有Exp(ϕ+δϕ)Exp(ϕ)Exp(𝑱r(ϕ)δϕ)\operatorname{Exp}(\vec{\phi}+\delta \vec{\phi}) \approx \operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}\left(\mathbf{J}_ {r}(\vec{\phi}) \cdot \delta \vec{\phi}\right)

从这一步继续往下推导会稍微复杂一点,先给出结果:

为了符号简便,令:

$$ \mathbf{J}_ {r}^{k}=\mathbf{J}_ {r}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t\right)\\\Delta \tilde{\mathbf{R}}_ {i j}=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t\right)\\\operatorname{Exp}\left(-\delta \vec{\phi}_ {i j}\right)=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {k+1,j}^{T} \cdot \mathbf{J}_ {r}^{k} \cdot \boldsymbol{\eta}_ {k}^{g d} \Delta t\right) $$

则有:

Δ𝑹ij=Δ𝑹̃ijExp(δϕij) \Delta \mathbf{R}_ {i j} = \Delta \tilde{\mathbf{R}}_ {i j} \cdot \operatorname{Exp}\left(-\delta \vec{\phi}_ {i j}\right)

其中Δ𝑹̃ij\Delta\tilde{\mathbf R}_ {ij}就是旋转量的预积分测量值,后者为噪声。

下面我们证明。首先,我们利用SO(3)\text{SO(3)}的伴随性质可以得到:

Exp(ϕ)𝑹=𝑹Exp(𝑹Tϕ) \operatorname{Exp}(\vec{\phi}) \cdot \mathbf{R}=\mathbf{R} \cdot \operatorname{Exp}\left(\mathbf{R}^{T} \vec{\phi}\right)

这里我们对上式进行一个推广:

Exp(ϕ1)Exp(ϕ2)𝑹=Exp(ϕ1)𝑹Exp(𝑹Tϕ2)=𝑹Exp(𝑹Tϕ1)Exp(𝑹Tϕ2) \begin{aligned}\operatorname{Exp}(\vec{\phi}_1)\operatorname{Exp}(\vec{\phi}_2) \cdot \mathbf{R}&=\operatorname{Exp}(\vec{\phi}_1)\mathbf{R} \cdot \operatorname{Exp}\left(\mathbf{R}^{T} \vec{\phi}_2\right)\\&=\mathbf R \operatorname{Exp}(\mathbf R^T\vec{\phi}_1)\operatorname{Exp}(\mathbf R^T\vec{\phi}_2)\end{aligned}

也就是,伴随性质是链式传播的,从最右侧传到最左侧,中间每一个量都会受到影响。为了符号简便,我们可以令𝑹k,k+1=Exp(𝝎̃k𝒃ig)Δt\mathbf R_ {k,k+1}=\operatorname{Exp}\left(\tilde{\boldsymbol{\omega}}_ {k}-\mathbf{b}_ {i}^{g}\right) \Delta t,也就是:

Δ𝑹̃ij=k=ij1𝑹k,k+1 \Delta \tilde{\mathbf{R}}_ {i j}=\prod_ {k=i}^{j-1} \mathbf R_ {k,k+1}

则有:

Δ𝑹ij=k=ij1{𝑹k,k+1Exp(𝑱rk𝜼kgdΔt)}=𝑹i,i+1Exp(𝑱ri𝜼igdΔt)𝑹i+1,i+2Exp(𝑱ri+1𝜼i+1gdΔt)𝑹j1,jExp(𝑱rj1𝜼j1gdΔt)=𝑹i,i+1𝑹i+1,i+2Exp(𝑹i+1,i+2T𝑱ri𝜼igdΔt)Exp(𝑱ri+1𝜼i+1gdΔt)𝑹i+2,i+3𝑹j1,jExp(𝑱rj1𝜼j1gdΔt)=𝑹i,i+1𝑹i+1,i+2𝑹i+2,i+3Exp(𝑹i+2,i+3T𝑹i+1,i+2T𝑱ri𝜼igdΔt)Exp(𝑹i+2,i+3T𝑱ri+1𝜼i+1gdΔt)𝑹j1,jExp(𝑱rj1𝜼j1gdΔt)=k=ij1𝑹k,k+1Exp((k=i+1j1𝑹k,k+1)T𝑱ri𝜼igdΔt)Exp(𝑱rj1𝜼j1gdΔt)=Δ𝑹̃ijExp(Δ𝑹̃i+1,jT𝑱ri𝜼igdΔt)Exp(Δ𝑹̃i+2,jT𝑱ri+1𝜼i+1gdΔt)Exp(Δ𝑹̃j,jT𝑱rj1𝜼j1gdΔt)=Δ𝑹̃ijk=ij1Exp(Δ𝑹̃k+1,jT𝑱rk𝜼kgdΔt)=Δ𝑹̃ijExp(δϕij) \begin{aligned}\Delta \mathbf{R}_ {i j}&=\prod_ {k=i}^{j-1} \left\{\mathbf R_ {k,k+1}\cdot\text{Exp}(-\mathbf{J}_ {r}^{k} \cdot \boldsymbol{\eta}_ {k}^{g d} \Delta t) \right\}\\&=\mathbf R_ {i, i+1}\cdot\text{Exp}(-\mathbf{J}_ {r}^{i} \cdot \boldsymbol{\eta}_ {i}^{g d} \Delta t)\cdot\mathbf R_ {i+1, i+2}\cdot\text{Exp}(-\mathbf{J}_ {r}^{i+1} \cdot \boldsymbol{\eta}_ {i+1}^{g d} \Delta t)\cdots\mathbf R_ {j-1,j}\cdot \text{Exp}(-\mathbf{J}_ {r}^{j-1} \cdot \boldsymbol{\eta}_ {j-1}^{g d} \Delta t) \\ &= \mathbf R_ {i,i+1}\cdot \mathbf R_ {i+1, i+2} \cdot\text{Exp}(-\mathbf R_ {i+1,i+2}^T\cdot\mathbf{J}_ {r}^{i} \cdot \boldsymbol{\eta}_ {i}^{g d} \Delta t)\cdot\text{Exp}(-\mathbf{J}_ {r}^{i+1} \cdot \boldsymbol{\eta}_ {i+1}^{g d} \Delta t)\mathbf R_ {i+2, i+3}\cdots\mathbf R_ {j-1,j}\cdot \text{Exp}(-\mathbf{J}_ {r}^{j-1} \cdot \boldsymbol{\eta}_ {j-1}^{g d} \Delta t)\\&= \mathbf R_ {i,i+1}\cdot \mathbf R_ {i+1, i+2} \cdot \mathbf R_ {i+2, i+3}\cdot\text{Exp}(-\mathbf R_ {i+2,i+3}^T\mathbf R_ {i+1,i+2}^T\cdot\mathbf{J}_ {r}^{i} \cdot \boldsymbol{\eta}_ {i}^{g d} \Delta t)\cdot\text{Exp}(-\mathbf R_ {i+2,i+3}^T\mathbf{J}_ {r}^{i+1} \cdot \boldsymbol{\eta}_ {i+1}^{g d} \Delta t)\cdots\mathbf R_ {j-1,j}\cdot \text{Exp}(-\mathbf{J}_ {r}^{j-1} \cdot \boldsymbol{\eta}_ {j-1}^{g d} \Delta t)\\&\cdots\\&=\prod_ {k=i}^{j-1} \mathbf R_ {k,k+1} \cdot \text{Exp}\left(-\left(\prod_ {k=i+1}^{j-1}\mathbf{R}_ {k,k+1}\right)^T\mathbf{J}_ {r}^{i} \cdot \boldsymbol{\eta}_ {i}^{g d} \Delta t \right) \cdots \text{Exp}(-\mathbf{J}_ {r}^{j-1} \cdot \boldsymbol{\eta}_ {j-1}^{g d} \Delta t)\\&=\Delta\tilde{\mathbf R}_ {ij}\cdot \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {i+1,j}^{T} \cdot \mathbf{J}_ {r}^{i} \cdot \boldsymbol{\eta}_ {i}^{g d} \Delta t\right)\cdot \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {i+2,j}^{T} \cdot \mathbf{J}_ {r}^{i+1} \cdot \boldsymbol{\eta}_ {i+1}^{g d} \Delta t\right)\cdots \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {j,j}^{T} \cdot \mathbf{J}_ {r}^{j-1} \cdot \boldsymbol{\eta}_ {j-1}^{g d} \Delta t\right)\\&=\Delta \tilde{ \mathbf R}_ {ij}\cdot\prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {k+1,j}^{T} \cdot \mathbf{J}_ {r}^{k} \cdot \boldsymbol{\eta}_ {k}^{g d} \Delta t\right)\\& = \Delta \tilde{\mathbf{R}}_ {i j} \cdot \operatorname{Exp}\left(-\delta \vec{\phi}_ {i j}\right)\end{aligned}

证毕,需要注意的是Δ𝑹̃jj=𝑰\Delta\tilde{\mathbf R}_ {jj} = \mathbf I

(2)对于Δ𝒗ij\Delta \mathbf v_ {ij},将(1)中的结论带入有:

Δ𝒗ij=k=ij1Δ𝑹ik(𝒇̃k𝒃ia𝜼kad)Δtk=ij1Δ𝑹̃ikExp(δϕik)(𝒇̃k𝒃ia𝜼kad)Δtk=ij1Δ𝑹̃ik(𝑰δϕik)(𝒇̃k𝒃ia𝜼kad)Δtk=ij1[Δ𝑹̃ik(𝑰δϕik)(𝒇̃k𝒃ia)ΔtΔ𝑹̃ik𝜼kadΔt]=k=ia1[Δ𝑹̃ik(𝒇̃k𝒃ia)Δt+Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔtΔ𝑹̃ik𝜼kadΔt]=k=ij1[Δ𝑹̃ik(𝒇̃k𝒃ia)Δt]+k=ij1[Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔtΔ𝑹̃ik𝜼kadΔt] \begin{aligned}\Delta \mathbf{v}_ {i j} &=\sum_ {k=i}^{j-1} \Delta \mathbf{R}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t \\& \approx \sum_ {k=i}^{j-1} \Delta \tilde{\mathbf{R}}_ {i k} \cdot \operatorname{Exp}\left(-\delta \vec{\phi}_ {i k}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t \\& \approx \sum_ {k=i}^{j-1} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}-\delta \vec{\phi}_ {i k}^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\boldsymbol{\eta}_ {k}^{a d}\right) \cdot \Delta t \\& \approx \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}-\delta \vec{\phi}_ {i k}^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \cdot \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \boldsymbol{\eta}_ {k}^{a d} \Delta t\right] \\&=\sum_ {k=i}^{a-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \cdot \Delta t+\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t\right] \\&=\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \cdot \Delta t\right]+\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t\right]\end{aligned}

令:

Δ𝒗̃ijk=ij1[Δ𝑹̃ik(𝒇̃k𝒃ia)Δt]δ𝒗ijk=ij1[Δ𝑹̃ik𝜼kadΔtΔ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt] \begin{aligned}\Delta \tilde{\mathbf{v}}_ {i j} & \triangleq \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \cdot \Delta t\right] \\\delta \mathbf{v}_ {i j} & \triangleq \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t\right]\end{aligned}

则有:

Δ𝒗ijΔ𝒗̃ijδ𝒗ij \Delta \mathbf{v}_ {i j} \triangleq \Delta \tilde{\mathbf{v}}_ {i j}-\delta \mathbf{v}_ {i j}

其中前一项为测量项,而后一项为噪声值。

(3)对于Δ𝒑ij\Delta\mathbf {p}_ {ij},带入前面的结果,可得:

Δ𝒑ij=k=ij1[Δ𝒗ikΔt+12Δ𝑹ik(𝒇̃k𝒃ia𝜼kad)Δt2]k=ij1[(Δ𝒗̃ikδ𝒗ik)Δt+12Δ𝑹̃ikExp(δϕik)(𝒇̃k𝒃ia𝜼kad)Δt2]k=i(1)[(Δ𝒗̃ikδ𝒗ik)Δt+12Δ𝑹̃ik(𝑰δϕik)(𝒇̃k𝒃ia𝜼kad)Δt2]k=i1[(Δ𝒗̃ikδ𝒗ik)Δt+12Δ𝑹̃ik(𝑰δϕik)(𝒇̃k𝒃ia)Δt212Δ𝑹̃ik𝜼kadΔt2]=k=ij1[Δ𝒗̃ikΔt+12Δ𝑹̃ik(𝒇̃k𝒃ia)Δt2+12Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt212Δ𝑹̃ik𝜼kadΔt2δ𝒗ikΔt] \begin{aligned}\Delta \mathbf{p}_ {i j} &=\sum_ {k=i}^{j-1}\left[\Delta \mathbf{v}_ {i k} \cdot \Delta t+\frac{1}{2} \Delta \mathbf{R}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right] \\& \approx \sum_ {k=i}^{j-1}\left[\left(\Delta \tilde{\mathbf{v}}_ {i k}-\delta \mathbf{v}_ {i k}\right) \cdot \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot \operatorname{Exp}\left(-\delta \vec{\phi}_ {i k}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right] \\& \approx \sum_ {k=i}^{(1)}\left[\left(\Delta \tilde{\mathbf{v}}_ {i k}-\delta \mathbf{v}_ {i k}\right) \cdot \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}-\delta \vec{\phi}_ {i k}^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}-\mathbf{\eta}_ {k}^{a d}\right) \cdot \Delta t^{2}\right] \\& \approx \sum_ {k=i}^{-1}\left[\left(\Delta \tilde{\mathbf{v}}_ {i k}-\delta \mathbf{v}_ {i k}\right) \cdot \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}-\delta \vec{\phi}_ {i k}^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \cdot \Delta t^{2}-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t^{2}\right] \\& = \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{v}}_ {i k} \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \Delta t^{2}+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \delta \vec{\phi}_ {i k} \Delta t^{2}-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t^{2}-\delta \mathbf{v}_ {i k} \Delta t\right]\end{aligned}

令:

Δ𝒑̃ijk=ij1[Δ𝒗̃ikΔt+12Δ𝑹̃ik(𝒇̃k𝒃ia)Δt2]δ𝒑ijk=ij1[δ𝒗ikΔt12Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt2+12Δ𝑹̃ik𝒏kadΔt2] \begin{array}{l}\Delta \tilde{\mathbf{p}}_ {i j} \triangleq \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{v}}_ {i k} \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right) \Delta t^{2}\right] \\\delta \mathbf{p}_ {i j} \triangleq \sum_ {k=i}^{j-1}\left[\delta \mathbf{v}_ {i k} \Delta t-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \delta \vec{\phi}_ {i k} \Delta t^{2}+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \mathbf{n}_ {k}^{a d} \Delta t^{2}\right]\end{array}

Δ𝒑ijΔ𝒑̃ijδ𝒑ij \Delta \mathbf{p}_ {i j} \triangleq \Delta \tilde{\mathbf{p}}_ {i j}-\delta \mathbf{p}_ {i j}

前者为预积分测量值,后者为噪声值。

最终,将分离后的噪声与测量值带入理想状态的预积分形式下,可以得到:

Δ𝑹̃ijΔ𝑹ijExp(δϕij)=𝑹iT𝑹jExp(δϕij)Δ𝒗̃ijΔ𝒗ij+δ𝒗ij=𝑹iT(𝒗j𝒗i𝒈Δtij)+δ𝒗ijΔ𝒑̃ijΔ𝒑ij+δ𝒑ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)+δ𝒑ij \begin{array}{l}\Delta \tilde{\mathbf{R}}_ {i j} \approx \Delta \mathbf{R}_ {i j} \operatorname{Exp}\left(\delta \vec{\phi}_ {i j}\right)=\mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \operatorname{Exp}\left(\delta \vec{\phi}_ {i j}\right) \\\Delta \tilde{\mathbf{v}}_ {i j} \approx \Delta \mathbf{v}_ {i j}+\delta \mathbf{v}_ {i j}=\mathbf{R}_ {i}^{T}\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)+\delta \mathbf{v}_ {i j} \\\Delta \tilde{\mathbf{p}}_ {i j} \approx \Delta \mathbf{p}_ {i j}+\delta \mathbf{p}_ {i j}=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)+\delta \mathbf{p}_ {i j}\end{array}

类似于测量值等于理想值+噪声的形式。

在实现的时候需要注意,Δ𝒗̃ij\Delta \tilde{\mathbf v}_ {ij}会用到的是k=ij1Δ𝑹̃ik=Δ𝑹̃ii++Δ𝑹̃i,j1\sum_ {k=i}^{j-1}\Delta \tilde{\mathbf{R}}_ {i k} = \Delta \tilde{\mathbf{R}}_ {i i}+\cdots+\Delta \tilde{\mathbf{R}}_ {i,j-1},也就是不会用到Δ𝑹̃ij\Delta \tilde{\mathbf{R}}_ {i j},因此实现的时候需要注意计算顺序:Δ𝒑̃ijΔ𝒗̃ijΔ𝑹̃ij\Delta \tilde{\mathbf{p}}_ {i j}\rightarrow\Delta \tilde{\mathbf{v}}_ {i j}\rightarrow \Delta \tilde{\mathbf{R}}_ {i j}

噪声分布

令预积分的噪声为:

𝜼ijΔ[δ𝝓ijTδ𝒗ijTδ𝒑ijT]T \boldsymbol{\eta}_ {i j}^{\Delta} \triangleq\left[\begin{array}{lll}\delta \vec{\boldsymbol\phi}_ {i j}^{T} & \delta \mathbf{v}_ {i j}^{T} & \delta \mathbf{p}_ {i j}^{T}\end{array}\right]^{T}

我们希望它满足高斯分布,也就是𝜼ijΔN(𝟎9×1,𝚺ij)\boldsymbol{\eta}_ {i j}^{\Delta} \sim N\left(\mathbf{0}_ {9 \times 1}, \mathbf{\Sigma}_ {i j}\right)。这里𝜼ijΔ\boldsymbol \eta_ {ij}^\Delta是三种噪声的线性组合,因此我们来分别分析。

(1)首先是旋转的噪声分析δ𝝓\delta\boldsymbol{\vec\phi}。由之前的推导可以知道:

Exp(δϕij)=k=ij1Exp(Δ𝑹̃k+1jT𝑱rk𝜼kgdΔt) \operatorname{Exp}\left(-\delta \vec{\phi}_ {i j}\right)=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {k+1 j}^{T} \cdot \mathbf{J}_ {r}^{k} \cdot \boldsymbol{\eta}_ {k}^{g d} \Delta t\right)

对等式两边同时取对数,可以得到:

δϕij=Log(k=ij1Exp(Δ𝑹̃k+1jT𝑱rk𝜼kgdΔt)) \delta \vec{\phi}_ {i j}=-\text{Log}\left(\prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\Delta \tilde{\mathbf{R}}_ {k+1 j}^{T} \cdot \mathbf{J}_ {r}^{k} \cdot \boldsymbol{\eta}_ {k}^{g d} \Delta t\right)\right)

ξk=Δ𝑹̃k+1jT𝑱rk𝜼kgdΔt\xi_ {k}=\Delta \tilde{\mathbf{R}}_ {k+1 j}^{T} \cdot \mathbf{J}_ {r}^{k} \cdot \mathbf{\eta}_ {k}^{g d} \Delta t,由于𝜼kgd\boldsymbol{\eta}_ {k}^{g d}是小量,因此ξk\xi_k也是小量,因此有𝑱r(ξk)𝑰\mathbf{J}_ {r}\left(\xi_ {k}\right) \approx \mathbf{I}(注意这里是雅可比矩阵,而不是之前的缩写)。由于本身δϕij\delta \vec{\phi}_ {i j}是小量,因此任意Log(k=pj1Exp(ξk)),p{i,i+1,...,j1}\text{Log} \left(\prod_ {k =p}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right), p \in \{i, i+1,...,j-1\}是小量,因为有Log(Exp(ϕ)Exp(δϕ))=ϕ+𝑱r1(ϕ)δϕ\text{Log} (\operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}(\delta \vec{\phi}))=\vec{\phi}+\mathbf{J}_ {r}^{-1}(\vec{\phi}) \cdot \delta \vec{\phi},我们可以得到

δϕij=Log(k=ij1Exp(ξk))=Log(Exp(ξi)k=i+1j1Exp(ξk))(ξi+𝑰Log(k=1+1j1Exp(ξk)))=ξiLog(k=i+1j1Exp(ξk))=ξiLog(Exp(ξi+1)k=i+2j1Exp(ξk))ξi+ξi+1Log(k=1+2j1Exp(ξk))k=ij1ξk \begin{aligned}\delta \vec{\phi}_ {i j} &=-\text{Log}\left(\prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right) \\&=-\text{Log}\left(\operatorname{Exp}\left(-\xi_ {i}\right) \prod_ {k=i+1}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right) \\& \approx-\left(-\xi_ {i}+\mathbf{I} \cdot \text{Log}\left(\prod_ {k=1+1}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right)\right)=\xi_ {i}-\text{Log} \left(\prod_ {k=i+1}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right) \\&=\xi_ {i}-\text{Log}\left(\operatorname{Exp}\left(-\xi_ {i+1}\right) \prod_ {k=i+2}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right) \\& \approx \xi_ {i}+\xi_ {i+1}-\text{Log} \left(\prod_ {k=1+2}^{j-1} \operatorname{Exp}\left(-\xi_ {k}\right)\right) \\& \approx \cdots \\& \approx \sum_ {k=i}^{j-1} \xi_ {k}\end{aligned}

也就是

δϕijk=ij1Δ𝑹̃k+1jT𝑱rk𝜼kgdΔt \delta \vec{\phi}_ {i j} \approx \sum_ {k=i}^{j-1} \Delta \tilde{\mathbf{R}}_ {k+1 j}^{T} \mathbf{J}_ {r}^{k} \mathbf{\eta}_ {k}^{g d} \Delta t

由于上式中Δ𝑹̃k+1jT,𝑱rk,Δt\Delta \tilde{\mathbf{R}}_ {k+1 j}^{T}, \mathbf{J}_ {r}^{k},\Delta t都是已知量,而假设𝜼kgd\boldsymbol \eta_k^{gd}是零均值高斯噪声,因此δϕij\delta\vec{\phi}_ {ij}也是零均值高斯噪声。

(2)由于我们分析得到了δϕij\delta\vec{\phi}_ {ij}是零均值高斯噪声,根据δ𝒗ij\delta\mathbf v_ {ij}表达式:

δ𝒗ij=k=ij1[Δ𝑹̃ik𝜼kadΔtΔ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt] \delta \mathbf{v}_ {i j}=\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t\right]

我们可以知道δ𝒗ij\delta\mathbf v_ {ij}也是高斯分布的。

(3)类似的,根据δ𝒑ij\delta \mathbf{p}_ {i j}的表达式:

δ𝒑ij=k=ij1[δ𝒗ikΔt12Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt2+12Δ𝑹̃ik𝜼kadΔt2] \delta \mathbf{p}_ {i j}=\sum_ {k=i}^{j-1}\left[\delta \mathbf{v}_ {i k} \Delta t-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \delta \vec{\phi}_ {i k} \Delta t^{2}+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t^{2}\right]

可以知道δ𝒑ij\delta \mathbf{p}_ {i j}也是高斯分布。但是,δ𝒗ij,δ𝒑ij\delta \mathbf{v}_ {i j},\delta \mathbf{p}_ {i j}不是零均值。

噪声的递推形式

下面分析一下噪声的递推形式,𝜼i,j1Δ𝜼ijΔ\boldsymbol\eta_ {i,j-1}^\Delta\rightarrow\boldsymbol \eta_ {ij}^{\Delta},以及其协方差的递推形式,𝚺ij1𝚺ij\boldsymbol{\Sigma}_ {i j-1} \rightarrow \boldsymbol{\Sigma}_ {i j}

(1)旋转项δϕi,j1δϕij\delta \vec{\phi}_ {i,j-1}\rightarrow \delta \vec{\phi}_ {ij}

δϕij=k=1j1Δ𝑹̃k+1jT𝑱rk𝜼kgdΔt=k=ij2Δ𝑹̃k+1,jT𝑱rk𝜼kgdΔt+Δ𝑹̃jjT𝑱rj1𝜼j1gdΔt=k=1j2(Δ𝑹̃k+1,j1Δ𝑹̃j1,j)T𝑱rk𝜼kgdΔt+𝑱rj1𝜼j1gdΔt=Δ𝑹̃j,j1k=1j2Δ𝑹̃k+1,j1T𝑱rk𝜼kgdΔt+𝑱rj1𝜼j1gdΔt=Δ𝑹̃j,j1δϕij1+𝑱rj1𝜼j1gdΔt \begin{aligned}\delta \vec{\phi}_ {i j} &=\sum_ {k=1}^{j-1} \Delta \tilde{\mathbf{R}}_ {k+1 j}^{T} \mathbf{J}_ {r}^{k} \mathbf{\eta}_ {k}^{g d} \Delta t \\&=\sum_ {k=i}^{j-2} \Delta \tilde{\mathbf{R}}_ {k+1,j}^{T} \mathbf{J}_ {r}^{k} \mathbf{\eta}_ {k}^{g d} \Delta t+\Delta \tilde{\mathbf{R}}_ {j j}^{T} \mathbf{J}_ {r}^{j-1} \mathbf{\eta}_ {j-1}^{g d} \Delta t \\&=\sum_ {k=1}^{j-2}\left(\Delta \tilde{\mathbf{R}}_ {k+1,j-1} \Delta \tilde{\mathbf{R}}_ {j-1,j}\right)^{T} \mathbf{J}_ {r}^{k} \mathbf{\eta}_ {k}^{g d} \Delta t+\mathbf{J}_ {r}^{j-1} \mathbf{\eta}_ {j-1}^{g d} \Delta t \\&=\Delta \tilde{\mathbf{R}}_ {j,j-1} \sum_ {k=1}^{j-2} \Delta \tilde{\mathbf{R}}_ {k+1,j-1}^{T} \mathbf{J}_ {r}^{k} \mathbf{\eta}_ {k}^{g d} \Delta t+\mathbf{J}_ {r}^{j-1} \mathbf{\eta}_ {j-1}^{g d} \Delta t \\&=\Delta \tilde{\mathbf{R}}_ {j,j-1} \delta \vec{\phi}_ {i j-1}+\mathbf{J}_ {r}^{j-1} \mathbf{\eta}_ {j-1}^{g d} \Delta t\end{aligned}

(2)速度项δ𝒗i,j1δ𝒗ij\delta \mathbf{v}_ {i,j-1} \rightarrow \delta \mathbf{v}_ {i j}:

δ𝒗ij=k=ij1[Δ𝑹̃ik𝜼kadΔtΔ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt]=k=ij2[Δ𝑹̃ik𝒑kadΔtΔ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt]+Δ𝑹̃i,j1𝜼j1adΔtΔ𝑹̃i,j1(𝒇̃j1𝒃ia)δϕi,j1Δt=δ𝒗i,j1+Δ𝑹̃i,j1𝜼j1adΔtΔ𝑹̃i,j1(𝒇̃j1𝒃ia)δϕi,j1Δt \begin{aligned}\delta \mathbf{v}_ {i j}=& \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k} \boldsymbol{\eta}_ {k}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t\right] \\=& \sum_ {k=i}^{j-2}\left[\Delta \tilde{\mathbf{R}}_ {i k} \mathbf{p}_ {k}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i k} \cdot \Delta t\right]\\&+\Delta \tilde{\mathbf{R}}_ {i,j-1} \mathbf{\eta}_ {j-1}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i,j-1} \cdot \Delta t \\=& \delta \mathbf{v}_ {i,j-1}+\Delta \tilde{\mathbf{R}}_ {i,j-1} \mathbf{\eta}_ {j-1}^{a d} \Delta t-\Delta \tilde{\mathbf{R}}_ {i,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \cdot \delta \vec{\phi}_ {i,j-1} \cdot \Delta t\end{aligned}

(3)位置项δ𝒑i,j1δ𝒑ij\delta \mathbf{p}_ {i,j-1} \rightarrow \delta \mathbf{p}_ {i j}

δ𝒑ij=k=ij1[δ𝒗ikΔt12Δ𝑹̃ik(𝒇̃k𝒃ia)δϕikΔt2+12Δ𝑹̃ik𝜼kadΔt2]=δ𝒑i,j1+δ𝒗i,j1Δt12Δ𝑹̃i,j1(𝒇̃j1𝒃ia)δϕi,j1Δt2+12Δ𝑹̃i,j1𝜼j1adΔt \begin{aligned}\delta \mathbf{p}_ {i j} &=\sum_ {k=i}^{j-1}\left[\delta \mathbf{v}_ {i k} \Delta t-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \delta \vec{\phi}_ {i k} \Delta t^{2}+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k} \mathbf{\eta}_ {k}^{a d} \Delta t^{2}\right] \\&=\delta \mathbf{p}_ {i,j-1}+\delta \mathbf{v}_ {i,j-1} \Delta t-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \delta \vec{\phi}_ {i,j-1} \Delta t^{2}+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i,j-1} \mathbf{\eta}_ {j-1}^{a d} \Delta t\end{aligned}

综上所述,可以得到噪声预积分的递推形象如下(令𝜼kd=[(𝜼kgd)T(𝜼kad)T]T\mathbf{\eta}_ {k}^{d}=\left[\left(\boldsymbol{\eta}_ {k}^{g d}\right)^{T}\left(\boldsymbol{\eta}_ {k}^{\mathrm{ad}}\right)^{T}\right]^{T}):

𝜼ijΔ=[Δ𝑹̃j,j1𝟎𝟎Δ𝑹̃i,j1(𝒇̃j1𝒃ia)Δt𝑰𝟎12Δ𝑹̃i,j1(𝒇̃j1𝒃ia)Δt2Δt𝑰𝑰]𝜼i,j1Δ+[𝑱rj1Δt𝟎𝟎Δ𝑹̃i,j1Δt𝟎12Δ𝑹̃i,j1Δt2]𝜼j1d=𝑨j1𝜼i,j1Δ+𝑩j1𝜼j1d \begin{aligned}\boldsymbol{\eta}_ {i j}^{\Delta}&=\left[\begin{array}{ccc}\Delta \tilde{\mathbf{R}}_ {j, j-1} & \mathbf{0} & \mathbf{0} \\-\Delta \tilde{\mathbf{R}}_ {i ,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \Delta t & \mathbf{I} & \mathbf{0} \\-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i, j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \Delta t^{2} & \Delta t \mathbf I & \mathbf{I}\end{array}\right] \boldsymbol{\eta}_ {i ,j-1}^{\Delta} \\&~+\left[\begin{array}{cc} \mathbf{J}_ {r}^{j-1} \Delta t & \mathbf{0} \\ \mathbf{0} & \Delta \tilde{\mathbf{R}}_ {i,j-1} \Delta t \\ \mathbf{0} & \frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i, j-1} \Delta t^{2} \end{array}\right] \boldsymbol{\eta}_ {j-1}^{d}\\&=\mathbf{A}_ {j-1} \boldsymbol{\eta}_ {i ,j-1}^{\Delta}+\mathbf{B}_ {j-1} \boldsymbol{\eta}_ {j-1}^{d}\end{aligned}

其中:

𝑨j1=[Δ𝑹̃j,j1𝟎𝟎Δ𝑹̃i,j1(𝒇̃j1𝒃ia)Δt𝑰𝟎12Δ𝑹̃i,j1(𝒇̃j1𝒃ia)Δt2Δt𝑰𝑰]𝑩j1=[𝑱rj1Δt𝟎𝟎Δ𝑹̃i,j1Δt𝟎12Δ𝑹̃i,j1Δt2] \begin{aligned}&\mathbf{A}_ {j-1}=\left[\begin{array}{ccc}\Delta \tilde{\mathbf{R}}_ {j,j-1} & \mathbf{0} & \mathbf{0} \\-\Delta \tilde{\mathbf{R}}_ {i,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \Delta t & \mathbf{I} & \mathbf{0} \\-\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i,j-1} \cdot\left(\tilde{\mathbf{f}}_ {j-1}-\mathbf{b}_ {i}^{a}\right)^{\wedge} \Delta t^{2} & \Delta t \mathbf{I} & \mathbf{I}\end{array}\right]\\&\mathbf{B}_ {j-1}=\left[\begin{array}{cc}\mathbf{J}_ {r}^{j-1} \Delta t & \mathbf{0} \\\mathbf{0} & \Delta \tilde{\mathbf{R}}_ {i,j-1} \Delta t \\\mathbf{0} & \frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i,j-1} \Delta t^{2}\end{array}\right]\end{aligned}

而噪声的协方差也就有了下面的递推形式:

𝚺ij=𝑨j1𝚺ij1𝑨j1T+𝑩j1𝚺𝜼𝑩j1T \boldsymbol{\Sigma}_ {i j}=\mathbf{A}_ {j-1} \boldsymbol{\Sigma}_ {i j-1} \mathbf{A}_ {j-1}^{T}+\mathbf{B}_ {j-1} \boldsymbol{\Sigma}_ {\mathbf{\eta}} \mathbf{B}_ {j-1}^{T}

bias更新

目前为止做的计算都是假设了i,ji,j时刻之间的bias是不变化的。如果bias发生了更新,需要将预计分测量值整个重新计算(bias在这段时刻里依然是恒定的,但是bias的值可能会被优化等方式更新)。目前的做法是将这个过程线性化,来得到一阶近似结果。现在先规定一些符号,首先我们将旧的bias标记为𝒃¯ig,𝒃¯ia\overline{\mathbf{b}}_ {i}^{g} ,\overline{\mathbf{b}}_ {i}^{a},而新的bias𝒃̂ig,𝒃̂ia\hat{\mathbf{b}}_ {i}^{g} , \hat{\mathbf{b}}_ {i}^{a}是由旧的bias加上更新量δ𝒃ig,δ𝒃ia\delta\mathbf{b}_ {i}^{g}, \delta\mathbf{b}_ {i}^{a}得到的,即:

𝒃̂ig𝒃¯ig+δ𝒃ig,𝒃̂ia𝒃¯ia+δ𝒃ia \hat{\mathbf{b}}_ {i}^{g} \leftarrow \overline{\mathbf{b}}_ {i}^{g}+\delta \mathbf{b}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a} \leftarrow \overline{\mathbf{b}}_ {i}^{a}+\delta \mathbf{b}_ {i}^{a}

则有一阶近似如下(类似于性质Exp(ϕ+δϕ)Exp(ϕ)Exp(𝑱r(ϕ)δϕ)\operatorname{Exp}(\vec{\phi}+\delta \vec{\phi}) \approx \operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}\left(\mathbf{J}_ {r}(\vec{\phi}) \cdot \delta \vec{\phi}\right)):

Δ𝑹̃ij(𝒃̂ig)Δ𝑹̃ij(𝒃¯ig)Exp(Δ𝑹¯ij𝒃¯gδ𝒃ig)Δ𝒗̃ij(𝒃̂ig𝒃̂ia)Δ𝒗̃ij(𝒃¯ig,𝒃¯ia)+Δ𝒗¯ij𝒃¯gδ𝒃ig+Δ𝒗¯ij𝒃¯aδ𝒃iaΔ𝒑̃ij(𝒃̂ig,𝒃̂ia)Δ𝒑̃ij(𝒃¯ig,𝒃¯ia)+Δ𝒑¯ij𝒃¯gδ𝒃ig+Δ𝒑¯ij𝒃¯aδ𝒃ia \begin{array}{l}\Delta \tilde{\mathbf{R}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \approx \Delta \tilde{\mathbf{R}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}\right) \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \\\Delta \tilde{\mathbf{v}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g} \hat{\mathbf{b}}_ {i}^{a}\right) \approx \Delta \tilde{\mathbf{v}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right)+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a} \\\Delta \tilde{\mathbf{p}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right) \approx \Delta \tilde{\mathbf{p}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right)+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}\end{array}

如果做符号简化如下:

Δ𝑹̂ijΔ𝑹̃ij(𝒃̂ig),Δ𝑹¯ijΔ𝑹̃ij(𝒃¯ig)Δ𝒗̂ijΔ𝒗̃ij(𝒃̂ig,𝒃̂ia),Δ𝒗¯ijΔ𝒗̃ij(𝒃¯ig,𝒃¯ia)Δ𝒑̂ijΔ𝒑̃ij(𝒃̂ig,𝒃̂ia),Δ𝒑¯ijΔ𝒑̃ij(𝒃¯ig,𝒃¯ia) \begin{array}{l}\Delta \hat{\mathbf{R}}_ {i j} \doteq \Delta \tilde{\mathbf{R}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}\right), \Delta \overline{\mathbf{R}}_ {i j} \doteq \Delta \tilde{\mathbf{R}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}\right) \\\Delta \hat{\mathbf{v}}_ {i j} \doteq \Delta \tilde{\mathbf{v}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right), \Delta \overline{\mathbf{v}}_ {i j} \doteq \Delta \tilde{\mathbf{v}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right) \\\Delta \hat{\mathbf{p}}_ {i j} \doteq \Delta \tilde{\mathbf{p}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right), \Delta \overline{\mathbf{p}}_ {i j} \doteq \Delta \tilde{\mathbf{p}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right)\end{array}

就可以写成:

Δ𝑹̂ijΔ𝑹¯ijExp(Δ𝑹¯ij𝒃¯gδ𝒃ig)Δ𝒗̂ijΔ𝒗¯ij+Δ𝒗¯ij𝒃¯gδ𝒃ig+Δ𝒗¯ij𝒃¯aδ𝒃iaΔ𝒑̂ijΔ𝒑¯ij+Δ𝒑¯ij𝒃¯gδ𝒃ig+Δ𝒑¯ij𝒃¯aδ𝒃ia \begin{array}{l}\Delta \hat{\mathbf{R}}_ {i j} \approx \Delta \overline{\mathbf{R}}_ {i j} \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \\\Delta \hat{\mathbf{v}}_ {i j} \approx \Delta \overline{\mathbf{v}}_ {i j}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a} \\\Delta \hat{\mathbf{p}}_ {i j} \approx \Delta \overline{\mathbf{p}}_ {i j}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}\end{array}

下面我们需要推导的是式子中的各个偏导数。

(1)旋转项Δ𝑹̂ijΔ𝑹¯ijExp(Δ𝑹¯ijb¯yδ𝒃ig)\Delta \hat{\mathbf{R}}_ {i j} \approx \Delta \overline{\mathbf{R}}_ {i j} \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathrm{b}}^{y}} \delta \mathbf{b}_ {i}^{g}\right)

Δ𝑹̂ij=Δ𝑹̃ij(𝒃̂ig)=k=ij1Exp((𝝎̃k𝒃̂ig)Δt)=k=ij1Exp((𝝎̃k(𝒃¯ig+δ𝒃ig))Δt)=k=ij1Exp((𝝎̃k𝒃¯ig)Δtδ𝒃igΔt)k=ij1(Exp((𝝎̃k𝒃¯ig)Δt)Exp(𝑱rkδ𝒃igΔt)) \begin{aligned}\Delta \hat{\mathbf{R}}_ {i j} &=\Delta \tilde{\mathbf{R}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \\&=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\hat{\mathbf{b}}_ {i}^{g}\right) \Delta t\right) \\&=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\left(\overline{\mathbf{b}}_ {i}^{g}+\delta \mathbf{b}_ {i}^{g}\right)\right) \Delta t\right) \\&=\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\overline{\mathbf{b}}_ {i}^{g}\right) \Delta t-\delta \mathbf{b}_ {i}^{g} \Delta t\right) \\& \approx \prod_ {k=i}^{j-1}\left(\operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\overline{\mathbf{b}}_ {i}^{g}\right) \Delta t\right) \cdot \operatorname{Exp}\left(-\mathbf{J}_ {r}^{k} \delta \mathbf{b}_ {i}^{g} \Delta t\right)\right)\end{aligned}

到了这一步后,使用的变形手法与之前分离测量值与噪声的时候类似,我们依然利用伴随性质来处理。先做一些符号简化,令:

$$ \mathbf{M}_ {k}=\operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\overline{\mathbf{b}}_ {i}^{g}\right) \Delta t\right)\\\operatorname{Exp}\left(\mathbf{d}_ {k}\right)=\operatorname{Exp}\left(-\mathbf{J}_ {r}^{k} \delta \mathbf{b}_ {i}^{g} \Delta t\right) $$

则有:

Δ𝑹̂ij=𝑴iExp(𝒅i)𝑴i+1Exp(𝒅i+1)𝑴j2Exp(𝒅j2)𝑴j1Exp(𝒅j1) \Delta\hat{\mathbf R}_ {ij} = \mathbf{M}_ {i} \cdot \operatorname{Exp}\left(\mathbf{d}_ {i}\right) \cdot \mathbf{M}_ {i+1} \cdot \operatorname{Exp}\left(\mathbf{d}_ {i+1}\right) \cdots \mathbf{M}_ {j-2} \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-2}\right) \cdot \mathbf{M}_ {j-1} \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-1}\right)

根据伴随性质,我们可以得到:

𝑴iExp(𝒅i)𝑴i+1Exp(𝒅i+1)𝑴j2Exp(𝒅j2)𝑴j1Exp(𝒅j1)=𝑴i(Exp(𝒅i)𝑴i+1)Exp(𝒅i+1)𝑴j2(Exp(𝒅j2)𝑴j1)Exp(𝒅j1)=𝑴i(𝑴i+1Exp(𝑴i+1T𝒅i))Exp(𝒅i+1)𝑴j2(Exp(𝒅j2)𝑴j1)Exp(𝒅j1)=𝑴i𝑴i+1𝑴i+2Exp(𝑴i+2T𝑴i+1T𝒅i)Exp(𝑴i+2T𝒅i+1)==(k=ij1𝑴k)(Exp((k=i+1j1𝑴k)T𝒅i))(Exp((k=i+2j1𝑴k)T𝒅i+1))(Exp((k=j1j1𝑴k)T𝒅j2))(Exp(𝒅j1)) \begin{array}{l}\mathbf{M}_ {i} \cdot \operatorname{Exp}\left(\mathbf{d}_ {i}\right) \cdot \mathbf{M}_ {i+1} \cdot \operatorname{Exp}\left(\mathbf{d}_ {i+1}\right) \cdots \mathbf{M}_ {j-2} \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-2}\right) \cdot \mathbf{M}_ {j-1} \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-1}\right) \\=\mathbf{M}_ {i} \cdot\left(\operatorname{Exp}\left(\mathbf{d}_ {i}\right) \cdot \mathbf{M}_ {i+1}\right) \cdot \operatorname{Exp}\left(\mathbf{d}_ {i+1}\right) \cdots \mathbf{M}_ {j-2} \cdot\left(\operatorname{Exp}\left(\mathbf{d}_ {j-2}\right) \cdot \mathbf{M}_ {j-1}\right) \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-1}\right) \\=\mathbf{M}_ {i} \cdot\left(\mathbf{M}_ {i+1} \operatorname{Exp}\left(\mathbf{M}_ {i+1}^{T} \mathbf{d}_ {i}\right)\right) \cdot \operatorname{Exp}\left(\mathbf{d}_ {i+1}\right) \cdots \mathbf{M}_ {j-2} \cdot\left(\operatorname{Exp}\left(\mathbf{d}_ {j-2}\right) \cdot \mathbf{M}_ {j-1}\right) \cdot \operatorname{Exp}\left(\mathbf{d}_ {j-1}\right) \\=\mathbf{M}_ {i} \mathbf{M}_ {i+1} \mathbf{M}_ {i+2} \operatorname{Exp}\left(\mathbf{M}_ {i+2}^{T} \mathbf{M}_ {i+1}^{T} \mathbf{d}_ {i}\right) \operatorname{Exp}\left(\mathbf{M}_ {i+2}^{T} \mathbf{d}_ {i+1}\right) \cdots \\=\cdots \\=\left(\prod_ {k=i}^{j-1} \mathbf{M}_ {k}\right) \cdot\left(\operatorname{Exp}\left(\left(\prod_ {k=i+1}^{j-1} \mathbf{M}_ {k}\right)^{T} \mathbf{d}_ {i}\right)\right) \cdot\left(\operatorname{Exp}\left(\left(\prod_ {k=i+2}^{j-1} \mathbf{M}_ {k}\right)^{T} \mathbf{d}_ {i+1}\right)\right) \cdots\left(\operatorname{Exp}\left(\left(\prod_ {k=j-1}^{j-1} \mathbf{M}_ {k}\right)^{T} \mathbf{d}_ {j-2}\right)\right) \cdot\left(\operatorname{Exp}\left(\mathbf{d}_ {j-1}\right)\right)\end{array}

由于k=mj1𝑴k=k=mj1Exp((𝝎̃k𝒃¯ig)Δt)=Δ𝑹¯mj\prod_ {k=m}^{j-1} \mathbf{M}_ {k}=\prod_ {k=m}^{j-1} \operatorname{Exp}\left(\left(\tilde{\boldsymbol{\omega}}_ {k}-\overline{\mathbf{b}}_ {i}^{g}\right) \Delta t\right)=\Delta \overline{\mathbf{R}}_ {m j},则上式可以写为:

Δ𝑹¯ijExp(Δ𝑹¯i+1,T𝒅i)Exp(Δ𝑹¯i+2,jT𝒅i+1)Exp(Δ𝑹¯j1,jT𝒅j2)Exp(Δ𝑹¯jjT𝒅j1)=Δ𝑹¯ijk=ij1Exp(Δ𝑹¯k+1,jT𝒅k) \begin{array}{l}\Delta \overline{\mathbf{R}}_ {i j} \operatorname{Exp}\left(\Delta \overline{\mathbf{R}}_ {i+1 ,}^{T} \mathbf{d}_ {i}\right) \operatorname{Exp}\left(\Delta \overline{\mathbf{R}}_ {i+2,j}^{T} \mathbf{d}_ {i+1}\right) \cdots \operatorname{Exp}\left(\Delta \overline{\mathbf{R}}_ {j-1,j}^{T} \mathbf{d}_ {j-2}\right) \operatorname{Exp}\left(\Delta \overline{\mathbf{R}}_ {j j}^{T} \mathbf{d}_ {j-1}\right) \\=\Delta \overline{\mathbf{R}}_ {i j} \prod_ {k=i}^{j-1} \operatorname{Exp}\left(\Delta \overline{\mathbf{R}}_ {k+1,j}^{T} \mathbf{d}_ {k}\right)\end{array}

也就是:

Δ𝑹̂ij=Δ𝑹¯ijk=ij1Exp(Δ𝑹¯k+1jT𝑱rkδ𝒃igΔt) \Delta \hat{\mathbf{R}}_ {i j}=\Delta \overline{\mathbf{R}}_ {i j} \prod_ {k=i}^{j-1} \operatorname{Exp}\left(-\Delta \overline{\mathbf{R}}_ {k+1 j}^{T} \mathbf{J}_ {r}^{k} \delta \mathbf{b}_ {i}^{g} \Delta t\right)

𝒄k=Δ𝑹¯k+1jT𝑱rkδ𝒃igΔt\mathbf{c}_ {k}=-\Delta \overline{\mathbf{R}}_ {k+1 j}^{T} \mathbf{J}_ {r}^{k} \delta \mathbf{b}_ {i}^{g} \Delta t,由于δ𝒃ig\delta \mathbf b_ {i}^g很小,所以𝒄k\mathbf {c}_k很小,可以利用性质Exp(ϕ+δϕ)Exp(ϕ)Exp(𝑱r(ϕ)δϕ)\operatorname{Exp}(\vec{\phi}+\delta \vec{\phi}) \approx \operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}\left(\mathbf{J}_ {r}(\vec{\phi}) \cdot \delta \vec{\phi}\right)以及𝑱r(δϕ)𝑰\mathbf J_r(\delta\vec\phi)\approx \mathbf I,则有:

Exp(𝒄k)Exp(𝒄k+1)=Exp(𝒄k)Exp(𝑰𝒄k+1)Exp(𝒄k)Exp(𝑱r(𝒄k)𝒄k+1)Exp(𝒄k+𝒄k+1) \begin{aligned}\operatorname{Exp}\left(\mathbf{c}_ {k}\right) \operatorname{Exp}\left(\mathbf{c}_ {k+1}\right)&=\operatorname{Exp}\left(\mathbf{c}_ {k}\right) \operatorname{Exp}\left(\mathbf{I}\cdot\mathbf{c}_ {k+1}\right)\\&\approx \operatorname{Exp}\left(\mathbf{c}_ {k}\right) \operatorname{Exp}\left(\mathbf J_r(\mathbf c_k)\cdot\mathbf{c}_ {k+1}\right) \\ &\approx \operatorname{Exp}\left(\mathbf{c}_ {k}+\mathbf{c}_ {k+1}\right)\end{aligned}

因此有:

k=ij1Exp(𝒄k)=Exp(𝒄i)Exp(𝒄i+1)k=i+2j1Exp(𝒄k)Exp(𝒄i+𝒄i+1)Exp(𝒄i+2)k=i+3j1Exp(𝒄k)Exp(𝒄i+𝒄i+1+𝒄i+2)Exp(𝒄i+3)k=i+4j1Exp(𝒄k)Exp(𝒄i+𝒄i+1+𝒄i+2+𝒄j1)=Exp(k=ij1𝒄k) \begin{aligned}\prod_ {k=i}^{j-1} \operatorname{Exp}\left(\mathbf{c}_ {k}\right) &=\operatorname{Exp}\left(\mathbf{c}_ {i}\right) \operatorname{Exp}\left(\mathbf{c}_ {i+1}\right) \prod_ {k=i+2}^{j-1} \operatorname{Exp}\left(\mathbf{c}_ {k}\right) \\& \approx \operatorname{Exp}\left(\mathbf{c}_ {i}+\mathbf{c}_ {i+1}\right) \operatorname{Exp}\left(\mathbf{c}_ {i+2}\right) \prod_ {k=i+3}^{j-1} \operatorname{Exp}\left(\mathbf{c}_ {k}\right) \\& \approx \operatorname{Exp}\left(\mathbf{c}_ {i}+\mathbf{c}_ {i+1}+\mathbf{c}_ {i+2}\right) \operatorname{Exp}\left(\mathbf{c}_ {i+3}\right) \prod_ {k=i+4}^{j-1} \operatorname{Exp}\left(\mathbf{c}_ {k}\right) \\& \approx \cdots \approx \operatorname{Exp}\left(\mathbf{c}_ {i}+\mathbf{c}_ {i+1}+\mathbf{c}_ {i+2}+\cdots \mathbf{c}_ {j-1}\right) \\&=\operatorname{Exp}\left(\sum_ {k=i}^{j-1} \mathbf{c}_ {k}\right)\end{aligned}

所以可得:

Δ𝑹̂ijΔ𝑹¯ijExp(k=ij1(Δ𝑹¯k+1jT𝑱rkδ𝒃igΔt)) \Delta \hat{\mathbf{R}}_ {i j}\approx\Delta \overline{\mathbf{R}}_ {i j} \operatorname{Exp}\left(\sum_ {k=i}^{j-1}\left(-\Delta \overline{\mathbf{R}}_ {k+1,j}^{T} \mathbf{J}_ {r}^{k} \delta \mathbf{b}_ {i}^{g} \Delta t\right)\right)

即:

Δ𝑹¯ij𝒃¯g=k=ij1(Δ𝑹¯k+1,jT𝑱rkΔt) \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}=\sum_ {k=i}^{j-1}\left(-\Delta \overline{\mathbf{R}}_ {k+1 ,j}^{T} \mathbf{J}_ {r}^{k} \Delta t\right)

在实现时,可以进一步引出递推式:

Δ𝑹¯ij𝒃¯g=k=ij1(Δ𝑹¯k+1,jT𝑱rkΔt)=k=ij2((Δ𝑹¯k+1,j1Δ𝑹¯j1,j)T𝑱rjΔt)Δ𝑹¯jjT𝑱rj1Δt=k=ij2(Δ𝑹¯j1,jTΔ𝑹¯k+1,j1T𝑱rkΔt)𝑱rj1Δt=Δ𝑹¯j1,jTk=ij2(Δ𝑹¯k+1,j1T𝑱rkΔt)𝑱rj1Δt=Δ𝑹¯j1,jTΔ𝑹¯i,j1𝒃¯g𝑱rj1Δt=Δ𝑹¯j,j1Δ𝑹¯i,j1𝒃¯g𝑱rj1Δt \begin{aligned}\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}&=\sum_ {k=i}^{j-1}\left(-\Delta \overline{\mathbf{R}}_ {k+1 ,j}^{T} \mathbf{J}_ {r}^{k} \Delta t\right)\\ &=\sum_ {k=i}^{j-2}\left(\left(-\Delta \overline{\mathbf{R}}_ {k+1 ,j-1}\cdot\Delta\overline{\mathbf{R}}_ {j-1, j}\right)^{T} \mathbf{J}_ {r}^{j} \Delta t\right) - \Delta \overline{\mathbf{R}}_ {j j}^T \mathbf{J}_ {r}^{j-1}\Delta t \\&= \sum_ {k=i}^{j-2}\left(-\Delta \overline{\mathbf{R}}^T_ {j-1, j}\cdot\Delta\overline{\mathbf{R}}_ {k+1 ,j-1}^T \mathbf{J}_ {r}^{k} \Delta t\right) - \mathbf{J}_ {r}^{j-1}\Delta t\\&= \Delta\overline{\mathbf{R}}^T_ {j-1, j}\cdot\sum_ {k=i}^{j-2}\left(-\Delta \overline{\mathbf{R}}_ {k+1 ,j-1}^{T} \mathbf{J}_ {r}^{k} \Delta t\right) - \mathbf{J}_ {r}^{j-1}\Delta t \\&=\Delta\overline{\mathbf{R}}^T_ {j-1, j} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i, j-1}}{\partial \overline{\mathbf{b}}^{g}}- \mathbf{J}_ {r}^{j-1}\Delta t\\&=\Delta\overline{\mathbf{R}}_ {j, j-1} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i, j-1}}{\partial \overline{\mathbf{b}}^{g}}- \mathbf{J}_ {r}^{j-1}\Delta t\end{aligned}

(2)速度项(Δ𝒗̂ijΔ𝒗¯ij+Δ𝒗¯ij𝒃¯gδ𝒃ig+Δ𝒗¯ij𝒃¯aδ𝒃ia\Delta \hat{\mathbf{v}}_ {i j} \approx \Delta \overline{\mathbf{v}}_ {i j}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}):

Δ𝒗̂ij=Δ𝒗̃ij(𝒃̂ig,𝒃̂ia)=k=ij1[Δ𝑹̃ik(𝒃̂ig)(𝒇̃k𝒃̂ia)Δt]k=ij1[Δ𝑹¯ikExp(Δ𝑹¯ik𝒃¯gδ𝒃ig)(𝒇̃k𝒃¯iaδ𝒃ia)Δt]k=ij1[Δ𝑹¯ik(𝑰+(Δ𝑹¯ik𝒃¯gδ𝒃ig))(𝒇̃k𝒃¯iaδ𝒃ia)Δt]=k=ij1[Δ𝑹¯ik(𝒇̃k𝒃¯ia)ΔtΔ𝑹¯ikδ𝒃iaΔt+Δ𝑹¯ik(Δ𝑹¯ik𝒃¯gδ𝒃ig)(𝒇̃k𝒃¯ia)ΔtΔ𝑹¯ik(Δ𝑹¯ik𝒃¯gδ𝒃ig)δ𝒃iaΔt]k=ij1Δ𝑹̃ik(𝒃¯ig)(𝒇̃k𝒃¯ia)Δt+k=ij1{[Δ𝑹¯ikΔt]δ𝒃ia[Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt]δ𝒃ig}=Δ𝒗¯ij+k=ij1{[Δ𝑹¯ikΔt]δ𝒃ia[Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt]δ𝒃ig} \begin{aligned}\Delta \hat{\mathbf{v}}_ {i j} &=\Delta \tilde{\mathbf{v}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right) \\&=\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\hat{\mathbf{b}}_ {i}^{a}\right) \Delta t\right] \\& \approx \sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}-\delta \mathbf{b}_ {i}^{a}\right) \Delta t\right] \\& \approx \sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}+\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}-\delta \mathbf{b}_ {i}^{a}\right) \Delta t\right] \\&=\sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right) \Delta t-\Delta \overline{\mathbf{R}}_ {i k} \delta \mathbf{b}_ {i}^{a} \Delta t+\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)^{\wedge}\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right) \Delta t-\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)^{\wedge} \delta \mathbf{b}_ {i}^{a} \Delta t\right] \\& \approx \sum_ {k=i}^{j-1}\Delta \tilde{\mathbf{R}}_ {i k} (\overline{\mathbf{b}}_ {i}^g)\cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right) \Delta t+\sum_ {k=i}^{j-1}\left\{-\left[\Delta \overline{\mathbf{R}}_ {i k} \Delta t\right] \delta \mathbf{b}_ {i}^{a}-\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t\right] \delta \mathbf{b}_ {i}^{g}\right\}\\& = \Delta \overline{\mathbf{v}}_ {i j}+\sum_ {k=i}^{j-1}\left\{-\left[\Delta \overline{\mathbf{R}}_ {i k} \Delta t\right] \delta \mathbf{b}_ {i}^{a}-\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t\right] \delta \mathbf{b}_ {i}^{g}\right\}\end{aligned}

上述中分别用到了一阶近似,Exp(δϕ)(δϕ)\text{Exp}(\delta\vec\phi) \approx(\delta\vec\phi)^\wedge以及𝒂𝒃=𝒃𝒂\mathbf{a}^{\wedge} \cdot \mathbf{b}=-\mathbf{b}^{\wedge} \cdot \mathbf{a},且忽略了高阶小项(Δ𝑹¯ik𝒃¯gδ𝒃ig)δ𝒃ia\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)^{\wedge} \delta \mathbf{b}_ {i}^{a}。所以有:

Δ𝒗¯ij𝒃¯g=k=ij1(Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt)Δ𝒗¯ij𝒃¯a=k=ij1(Δ𝑹¯ikΔt) \begin{array}{l}\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}=-\sum_ {k=i}^{j-1}\left(\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t\right) \\\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}}=-\sum_ {k=i}^{j-1}\left(\Delta \overline{\mathbf{R}}_ {i k} \Delta t\right)\end{array}

(3)位置项(Δ𝒑̂ijΔ𝒑¯ij+Δ𝒑¯ij𝒃¯gδ𝒃ig+Δ𝒑¯ij𝒃¯aδ𝒃ia\Delta \hat{\mathbf{p}}_ {i j} \approx \Delta \overline{\mathbf{p}}_ {i j}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}):

Δ𝒑̂ij=Δ𝒑̃ij(𝒃̂ig,𝒃̂ia)=k=ij1[Δ𝒗̃ik(𝒃̂ig,𝒃̂ia)Δt+12Δ𝑹̃ik(𝒃̂ig)(𝒇̃k𝒃̂ia)Δt2]=k=ij1[Δ𝒗̃ik(𝒃̂ig,𝒃̂ia)Δt]1+12k=ij1[Δ𝑹̃ik(𝒃̂ig)(𝒇̃k𝒃̂ia)Δt2]2 \begin{aligned}\Delta \hat{\mathbf{p}}_ {i j} &=\Delta \tilde{\mathbf{p}}_ {i j}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right) \\&=\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{v}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right) \Delta t+\frac{1}{2} \Delta \tilde{\mathbf{R}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\hat{\mathbf{b}}_ {i}^{a}\right) \Delta t^{2}\right] \\&=\underbrace{\sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{v}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}, \hat{\mathbf{b}}_ {i}^{a}\right) \Delta t\right]}_ {\langle 1\rangle}+\underbrace{\frac{1}{2} \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\hat{\mathbf{b}}_ {i}^{a}\right) \Delta t^{2}\right]}_ {\langle 2\rangle}\end{aligned}

下面我们分别推导1\langle 1\rangle2\langle 2\rangle部分。

1=k=ij1[(Δ𝒗¯ik+Δ𝒗¯ik𝒃¯gδ𝒃ig+Δ𝒗¯ik𝒃¯aδ𝒃ia)Δt]=k=ij1[Δ𝒗¯ikΔt+(Δ𝒗¯ik𝒃¯gΔt)δ𝒃ig+(Δ𝒗¯ik𝒃¯aΔt)δ𝒃ia] \begin{aligned}\langle 1\rangle &=\sum_ {k=i}^{j-1}\left[\left(\Delta \overline{\mathbf{v}}_ {i k}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}\right) \Delta t\right] \\&=\sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{v}}_ {i k} \Delta t+\left(\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t\right) \delta \mathbf{b}_ {i}^{g}+\left(\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{a}} \Delta t\right) \delta \mathbf{b}_ {i}^{a}\right]\end{aligned}

2=Δt22k=ij1[Δ𝑹̃ik(𝒃̂ig)(𝒇̃k𝒃̂ia)]=Δt22k=ij1[Δ𝑹¯ikExp(Δ𝑹¯ik𝒃¯gδ𝒃ig)(𝒇̃k𝒃¯iaδ𝒃ia)]Δt22k=ij1[Δ𝑹¯ik(𝑰+(Δ𝑹¯ik𝒃¯gδ𝒃ig))(𝒇̃k𝒃¯iaδ𝒃ia)]Δt22k=ij1[Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ikδ𝒃iaΔ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gδ𝒃ig] \begin{aligned}\langle 2 \rangle & =\frac{\Delta t^{2}}{2} \sum_ {k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_ {i k}\left(\hat{\mathbf{b}}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\hat{\mathbf{b}}_ {i}^{a}\right)\right] \\&=\frac{\Delta t^{2}}{2} \sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}-\delta \mathbf{b}_ {i}^{a}\right)\right] \\& \approx \frac{\Delta t^{2}}{2} \sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\mathbf{I}+\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)^{\wedge}\right) \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}-\delta \mathbf{b}_ {i}^{a}\right)\right] \\& \approx \frac{\Delta t^{2}}{2} \sum_ {k=i}^{j-1}\left[\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)-\Delta \overline{\mathbf{R}}_ {i k} \delta \mathbf{b}_ {i}^{a}-\Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right]\end{aligned}

2\langle2\rangle的推导与速度项是非常类似的,也是忽略了高阶小项。将1,2\langle1\rangle, \langle2\rangle合起来,可以得到:

1+2=k=ij1{[Δ𝒗¯ikΔt+12Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δt2]+[Δ𝒗¯ik𝒃¯gΔt12Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt2]δ𝒃ig+[Δ𝒗¯ik𝒃¯αΔt12Δ𝑹¯ikΔt2]δ𝒃ia}=Δ𝒑¯ij+{k=ij1[Δ𝒗¯ik𝒃¯gΔt12Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt2]}δ𝒃ig+{k=ij1[Δ𝒗¯ik𝒃¯aΔt12Δ𝑹¯ikΔt2]}δ𝒃ia \begin{aligned}&\langle1\rangle+\langle2\rangle\\&=\sum_ {k=i}^{j-1}\left\{\left[\Delta \overline{\mathbf{v}}_ {i k} \Delta t+\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right) \Delta t^{2}\right]+\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t^{2}\right] \delta \mathbf{b}_ {i}^{g}+\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{\alpha}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \Delta t^{2}\right] \delta \mathbf{b}_ {i}^{a}\right\}\\&=\Delta \overline{\mathbf{p}}_ {i j}+\left\{\sum_ {k=i}^{j-1}\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t^{2}\right]\right\} \delta \mathbf{b}_ {i}^{g}+\left\{\sum_ {k=i}^{j-1}\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{a}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \Delta t^{2}\right]\right\} \delta \mathbf{b}_ {i}^{a}\end{aligned}

所以有:

Δ𝒑¯ij𝒃¯g=k=ij1[Δ𝒗¯ik𝒃¯gΔt12Δ𝑹¯ik(𝒇̃k𝒃¯ia)Δ𝑹¯ik𝒃¯gΔt2]Δ𝒑¯ij𝒃¯a=k=ij1[Δ𝒗¯ik𝒃¯aΔt12Δ𝑹¯ikΔt2] \begin{array}{l}\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}=\sum_ {k=i}^{j-1}\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \cdot\left(\tilde{\mathbf{f}}_ {k}-\overline{\mathbf{b}}_ {i}^{a}\right)^{\wedge} \frac{\partial \Delta \overline{\mathbf{R}}_ {i k}}{\partial \overline{\mathbf{b}}^{g}} \Delta t^{2}\right] \\\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}}=\sum_ {k=i}^{j-1}\left[\frac{\partial \Delta \overline{\mathbf{v}}_ {i k}}{\partial \overline{\mathbf{b}}^{a}} \Delta t-\frac{1}{2} \Delta \overline{\mathbf{R}}_ {i k} \Delta t^{2}\right]\end{array}

残差

之所以需要残差,是因为IMU预积分的测量值实际上也是优化中的一个约束量,pose graph中的边。而一般来说,预积分的残差是由计算值和测量值决定的,这里的计算值可能是通过视觉约束等等方法得到的。我们知道IMU预积分的理想值是如下:

Δ𝑹ij=𝑹iT𝑹jΔ𝒗ij=𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒑ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2) \begin{array}{l}\Delta \mathbf{R}_ {i j}=\mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \\\Delta \mathbf{v}_ {i j}=\mathbf{R}_ {i}^{T}\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right) \\\Delta \mathbf{p}_ {i j}=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)\end{array}

其三项残差定义如下:

𝒓Δ𝑹ijLog{[Δ𝑹̃ij(𝒃¯ig)Exp(Δ𝑹¯ij𝒃¯gδ𝒃ig)]T𝑹iT𝑹j}Log[(Δ𝑹̂ij)TΔ𝑹ij]Δ𝒗ijΔ𝒗̂ij𝒓Δ𝒗ij𝑹iT(𝒗j𝒗i𝒈Δtij)[Δ𝒗̃ij(𝒃¯ig,𝒃¯ia)+Δ𝒗¯ij𝒃¯gδ𝒃ig+Δ𝒗¯ij𝒃¯aδ𝒃ia]𝒓Δ𝒑ij𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)[Δ𝒑̃ij(𝒃¯ig,𝒃¯ia)+Δ𝒑¯ij𝒃¯gδ𝒃ig+Δ𝒑¯ij𝒃¯aδ𝒃ia]Δ𝒑ijΔ𝒑̂ij \begin{aligned}\mathbf{r}_ {\Delta \mathbf{R}_ {i j}} & \triangleq \text{Log} \left\{\left[\Delta \tilde{\mathbf{R}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}\right) \cdot \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right)\right]^{T} \cdot \mathbf{R}_ {i}^{T} \mathbf{R}_ {j}\right\} \\& \triangleq \text{Log} \left[\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \Delta \mathbf{R}_ {i j}\right] \\& \triangleq \Delta \mathbf{v}_ {i j}-\Delta \hat{\mathbf{v}}_ {i j} \\\mathbf{r}_ {\Delta \mathbf{v}_ {i j}} & \triangleq \mathbf{R}_ {i}^{T}\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\left[\Delta \tilde{\mathbf{v}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right)+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}\right] \\\mathbf{r}_ {\Delta \mathbf{p}_ {ij}} & \triangleq \mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\left[\Delta \tilde{\mathbf{p}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}, \overline{\mathbf{b}}_ {i}^{a}\right)+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}+\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \overline{\mathbf{b}}^{a}} \delta \mathbf{b}_ {i}^{a}\right] \\& \triangleq \Delta \mathbf{p}_ {i j}-\Delta \hat{\mathbf{p}}_ {i j}\end{aligned}

从定义上来看,残差也就是用来度量计算值与测量值的差别,这也是很合理的。从前面的推导可以知道,这个测量值是由噪声加上理想值得到的(实际上我们是从理想值中分离出了噪声)。

  • 一般来说,在SLAM系统中,我们需要优化的是𝑹i,𝒑i,𝒗i,𝑹j,𝒑j,𝒗j\mathbf{R}_ {i}, \mathbf{p}_ {i}, \mathbf{v}_ {i}, \mathbf{R}_ {j}, \mathbf{p}_ {j}, \mathbf{v}_ {j},不过在带有IMU的系统中,bias的影响往往不可忽视,因此一般也会加上对bias的优化。不过从残差的定义上来看,实际上优化的是bias的变化量δ𝒃ig,δ𝒃ia\delta \mathbf{b}_ {i}^{g}, \delta \mathbf{b}_ {i}^{a}。所以在IMU预积分中,完整的一个导航状态为:𝑹i,𝒑i,𝒗i,𝑹j,𝒑j,𝒗j,δ𝒃ig,δ𝒃ia\mathbf{R}_ {i}, \mathbf{p}_ {i}, \mathbf{v}_ {i}, \mathbf{R}_ {j}, \mathbf{p}_ {j}, \mathbf{v}_ {j}, \delta \mathbf{b}_ {i}^{g}, \delta \mathbf{b}_ {i}^{a}

  • 对各个状态的更新操作如下:

    𝑹i𝑹iExp(δϕi);𝒑i𝒑i+𝑹iδ𝒑i;𝒗i𝒗i+δ𝒗i;𝑹j𝑹jExp(δϕj);𝒑j𝒑j+𝑹jδ𝒑j;𝒗j𝒗j+δ𝒗j;δ𝒃igδ𝒃ig+δ𝒃ig̃;δ𝒃iaδ𝒃ia+δ𝒃iã \begin{array}{l}\mathbf{R}_ {i} \leftarrow \mathbf{R}_ {i} \cdot \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right) ; \mathbf{p}_ {i} \leftarrow \mathbf{p}_ {i}+\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i}; \mathbf{v}_ {i} \leftarrow \mathbf{v}_ {i}+\delta \mathbf{v}_ {i}; \\\mathbf{R}_ {j} \leftarrow \mathbf{R}_ {j} \cdot \operatorname{Exp}\left(\delta \vec{\phi}_ {j}\right) ; \mathbf{p}_ {j} \leftarrow \mathbf{p}_ {j}+\mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j} ; \mathbf{v}_ {j} \leftarrow \mathbf{v}_ {j}+\delta \mathbf{v}_ {j}; \\\delta \mathbf{b}_ {i}^{g} \leftarrow \delta \mathbf{b}_ {i}^{g}+\widetilde{\delta \mathbf{b}_ {i}^{g}} ; \delta \mathbf{b}_ {i}^{a} \leftarrow \delta \mathbf{b}_ {i}^{a}+\widetilde{\delta \mathbf{b}_ {i}^{a}}\end{array}

    需要注意的是,由于我们优化的是bias的增量δ𝒃ig,δ𝒃ia{\delta \mathbf{b}_ {i}^{g}},{\delta \mathbf{b}_ {i}^{a}},因此这里的δ𝒃ig̃,δ𝒃iã\widetilde{\delta \mathbf{b}_ {i}^{g}},\widetilde{\delta \mathbf{b}_ {i}^{a}}实际上是增量的增量,也就是通过增量的Jacobian来计算的。但是实际上增量的Jacobian与原来的Jacobian计算方法上是一样的,只不过它的初始状态是从0开始(实际上之前也运用过这样的方式进行优化过,每次优化的变量实际上是更新量)。

  • 为何位置没有采用速度一样的方式去更新(𝒑i𝒑i+𝑹iδ𝒑i;𝒗i𝒗i+δ𝒗i\mathbf{p}_ {i} \leftarrow \mathbf{p}_ {i}+\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i}; \mathbf{v}_ {i} \leftarrow \mathbf{v}_ {i}+\delta \mathbf{v}_ {i})?这个问题实际上如果是在SE(3)\text{SE(3)}上,也就是直接用transformation matrix,得到的结果是:

    𝑻i=𝑻iδ𝑻i=[𝑹i𝒑i01][δ𝑹iδ𝒑i01]=[𝑹iδ𝑹i𝒑i+𝑹iδ𝒑i01]=[𝑹i𝒑i01] \begin{aligned}\mathbf{T}_ {i}^{\prime} &=\mathbf{T}_ {i} \cdot \delta \mathbf{T}_ {i}=\left[\begin{array}{cc}\mathbf{R}_ {i} & \mathbf{p}_ {i} \\0 & 1\end{array}\right]\left[\begin{array}{cc}\delta \mathbf{R}_ {i} & \delta \mathbf{p}_ {i} \\0 & 1\end{array}\right] \\&=\left[\begin{array}{cc}\mathbf{R}_ {i} \cdot \delta \mathbf{R}_ {i} & \mathbf{p}_ {i}+\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i} \\0 & 1\end{array}\right]=\left[\begin{array}{cc}\mathbf{R}_ {i}^{\prime} & \mathbf{p}_ {i}^{\prime} \\0 & 1\end{array}\right]\end{aligned}

    也就是上述更新的操作,从物理意义上理解,就是先进行了旋转再进行了平移的变换。不过,毕竟我们一麻溜推导下来,用的都是SO(3)\text{SO(3)}上的操作,平移与旋转是分开操作的(平移的残差中已经包含了旋转的计算),我个人认为还是𝒑i𝒑i+δ𝒑i\mathbf{p}_ {i} \leftarrow \mathbf{p}_ {i}+ \delta \mathbf{p}_ {i}理论上更合理一些。在实际中,可能二者使用起来没什么太大的区别。

  • 由于噪声不是的零均值正态分布,因此不同的协方差对应着不同约束项的权重(实际上权重是协方差的逆),这样给出来的结果是一个无偏估计。最终我们优化目标就是能使得加权残差的平方和最小。另外,在优化时候,实际上优化变量是由Jacobian矩阵来决定的(高斯牛顿的海森矩阵也是由Jacobian矩阵来近似的),因此我们的下一个任务就是求出Jacobian矩阵。

Jacobian

接下来是最后一步,计算出Jacobian矩阵。我们将Jacobian矩阵分成三类:(1)”0“矩阵,也就是残差和某些变量是完全无关的;(2)线性的,也就是残差和某些变量是线性相关的,这样的Jacobian也可以由系数直接得到;(3)其他的,也就是残差和某些变量的关系较为复杂,需要进行相应的变形才能求得Jacobian矩阵。

𝒓Δ𝑹ij\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}的Jacobian

(1)“0”矩阵。由于𝒓Δ𝑹ij\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}中不含𝒑i,𝒑j,𝑽i,𝑽j,δ𝒃ia\mathbf{p}_ {i} , \mathbf{p}_ {j}, \mathbf{V}_ {i}, \mathbf{V}_ {j}, \delta \mathbf{b}_ {i}^{a},因此有:

$$ \frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {ij}}}{\partial \mathbf{p}_ {i}}=\mathbf{0},\frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {ij}}}{\partial \mathbf{p}_ {j}}=\mathbf{0},\\\frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}}{\partial \mathbf{v}_ {i}}=\mathbf{0},\frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}}{\partial \mathbf{v}_ {j}}=\mathbf{0},\\\frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}}{\partial \delta \mathbf{b}_ {i}^{a}}=\mathbf{0} $$

(2)线性类:无。

(3)其他类:

  • 下面求关于ϕi\vec{\phi}_ {i}的Jacobian:

𝒓Δ𝑹ij(𝑹iExp(δϕi))=Log[(Δ𝑹̂ij)T(𝑹iExp(δϕi))T𝑹j]=Log[(Δ𝑹̂ij)TExp(δϕi)𝑹iT𝑹j]=Log[(Δ𝑹̂ij)T𝑹iT𝑹jExp(𝑹jT𝑹iδϕi)]=Log{Exp[Log((Δ𝑹̂ij)T𝑹iT𝑹j)]Exp(𝑹jT𝑹iδϕi)}=Log[Exp(𝒓Δ𝑹ij(𝑹i))Exp(𝑹jT𝑹iδϕi)]𝒓Δ𝑹ij(𝑹i)𝑱r1(𝒓Δ𝑹ij(𝑹i))𝑹jT𝑹iδϕi=𝒓Δ𝑹ij𝑱r1(𝒓Δ𝑹ij)𝑹jT𝑹iδϕi \begin{aligned}\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right) &=\text{Log} \left[\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T}\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right)^{T} \mathbf{R}_ {j}\right] \\& =\text{Log} \left[\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \operatorname{Exp}\left(-\delta \vec{\phi}_ {i}\right) \mathbf{R}_ {i}^{T} \mathbf{R}_ {j}\right] \\&=\text{Log}\left[\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \operatorname{Exp}\left(-\mathbf{R}_ {j}^{T} \mathbf{R}_ {i} \delta \vec{\phi}_ {i}\right)\right] \\&=\text{Log} \left\{\operatorname{Exp}\left[\text{Log}\left(\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \mathbf{R}_ {i}^{T} \mathbf{R}_ {j}\right)\right] \cdot \operatorname{Exp}\left(-\mathbf{R}_ {j}^{T} \mathbf{R}_ {i} \delta \vec{\phi}_ {i}\right)\right\} \\&=\text{Log}\left[\operatorname{Exp}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\mathbf{R}_ {i}\right)\right) \cdot \operatorname{Exp}\left(-\mathbf{R}_ {j}^{T} \mathbf{R}_ {i} \delta \vec{\phi}_ {i}\right)\right] \\& \approx \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\mathbf{R}_ {i}\right)-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\mathbf{R}_ {i}\right)\right) \mathbf{R}_ {j}^{T} \mathbf{R}_ {i} \delta \vec{\phi}_ {i} \\& = \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \mathbf{R}_ {j}^{T} \mathbf{R}_ {i} \delta \vec{\phi}_ {i}\end{aligned}

上面的推导中,用到的性质有:(Exp(ϕ))T=Exp(ϕ)(\operatorname{Exp}(\vec{\phi}))^{T}=\operatorname{Exp}(-\vec{\phi}),伴随性质,Log(Exp(ϕ)Exp(δϕ))=ϕ+𝑱r1(ϕ)δϕ\text{Log} (\operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}(\delta \vec{\phi}))=\vec{\phi}+\mathbf{J}_ {r}^{-1}(\vec{\phi}) \cdot \delta \vec{\phi}。综上所述,有:

𝒓Δ𝑹ijϕi=𝑱r1(𝒓Δ𝑹ij)𝑹jT𝑹i \frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}}{\partial \vec{\phi}_ {i}}=-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \mathbf{R}_ {j}^{T} \mathbf{R}_ {i}

  • 使用类似的方法,可以得到ϕj\vec{\phi}_ {j}的Jacobian:

𝒓ΔRij(𝑹jExp(δϕj))=Log[(Δ𝑹̂ij)T𝑹iT𝑹jExp(δϕj)]=Log{Exp[Log((Δ𝑹̂ij)T𝑹iT𝑹j)]Exp(δϕj)}=Log{Exp(𝒓ΔRij(𝑹j))Exp(δϕj)}𝒓ΔRij(𝑹j)+𝑱r1(𝒓ΔRij(𝑹j))δϕj=𝒓ΔRij+𝑱r1(𝒓ΔRij)δϕj \begin{aligned}\mathbf{r}_ {\Delta R_ {i j}}\left(\mathbf{R}_ {j} \operatorname{Exp}\left(\delta \vec{\phi}_ {j}\right)\right) &=\text{Log} \left[\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \operatorname{Exp}\left(\delta \vec{\phi}_ {j}\right)\right] \\&=\text{Log} \left\{\operatorname{Exp}\left[\text{Log} \left(\left(\Delta \hat{\mathbf{R}}_ {i j}\right)^{T} \mathbf{R}_ {i}^{T} \mathbf{R}_ {j}\right)\right] \cdot \operatorname{Exp}\left(\delta \vec{\phi}_ {j}\right)\right\} \\&=\text{Log} \left\{\operatorname{Exp}\left(\mathbf{r}_ {\Delta R_ {i j}}\left(\mathbf{R}_ {j}\right)\right) \cdot \operatorname{Exp}\left(\delta \vec{\phi}_ {j}\right)\right\} \\& \approx \mathbf{r}_ {\Delta R_ {i j}}\left(\mathbf{R}_ {j}\right)+\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta R_ {i j}}\left(\mathbf{R}_ {j}\right)\right) \delta \vec{\phi}_ {j} \\& = \mathbf{r}_ {\Delta R_ {i j}}+\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta R_ {i j}}\right) \delta \vec{\phi}_ {j}\end{aligned}

因此有:

𝒓Δ𝑹ijϕj=𝑱r1(𝒓Δ𝑹ij) \frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}}{\partial \vec{\phi}_ {j}}=\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right)

  • 关于δ𝒃ig\delta \mathbf{b}_ {i}^g的Jacobian(𝑹i,𝑹j\mathbf R_ {i}, \mathbf R_ {j}都是与残差项Δ𝑹ij\Delta \mathbf{R}_ {ij}有关,而δ𝒃ig\delta \mathbf{b}_ {i}^g则是与残差项Δ𝑹̃ij\Delta \tilde{\mathbf{R}}_ {ij}有关):

𝒓Δ𝑹ij(δ𝒃ig+δ𝒃ig̃)Log{[Δ𝑹̃ij(𝒃¯ig)Exp(Δ𝑹¯ij𝒃¯g(δ𝒃ig+δ𝒃ig̃))]T𝑹iT𝑹j}Log{[Δ𝑹̃ij(𝒃¯ig)Exp(Δ𝑹¯ij𝒃¯gδ𝒃ig)Exp(𝑱r(Δ𝑹¯ij𝒃¯gδ𝒃ig)Δ𝑹¯ij𝒃¯gδ𝒃ig̃)]TΔ𝑹ij} \begin{aligned}\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}+\widetilde{\delta \mathbf{b}_ {i}^{g}}\right) &\approx\text{Log}\left\{\left[\Delta \tilde{\mathbf{R}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}\right) \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}\left(\delta \mathbf{b}_ {i}^{g}+\widetilde{\delta \mathbf{b}_ {i}^{g}}\right)\right)\right]^{T} \mathbf{R}_ {i}^{T} \mathbf{R}_ {j}\right\} \\& \approx \text{Log} \left\{\left[\Delta \tilde{\mathbf{R}}_ {i j}\left(\overline{\mathbf{b}}_ {i}^{g}\right) \operatorname{Exp}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \operatorname{Exp}\left(\mathbf{J}_ {r}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\right)\right]^{T} \Delta \mathbf{R}_ {i j}\right\} \end{aligned}

𝜺𝑱r(Δ𝑹¯ij𝒃¯gδ𝒃ig)\boldsymbol{\varepsilon} \doteq \mathbf{J}_ {r}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right),则:

𝒓Δ𝑹ij(δ𝒃ig+δ𝒃ig̃)Log{[Δ𝑹̂ijExp(𝜺Δ𝑹¯ij𝒃¯gδ𝒃iỹ)]TΔ𝑹ij}=Log[Exp(𝜺Δ𝑹¯ij𝒃¯gδ𝒃ig̃)Δ𝑹̂ijTΔ𝑹ij]=Log[Exp(𝜺Δ𝑹¯ij𝒃¯gδ𝒃ig̃)Exp(Log(Δ𝑹̂ijTΔ𝑹ij))]=Log[Exp(𝜺Δ𝑹¯ij𝒃¯gδ𝒃ig̃)Exp(𝒓Δ𝑹ij(δ𝒃ig))]=Log{Exp(𝒓Δ𝑹ij(δ𝒃ig))Exp[Exp(𝒓Δ𝑹ij(δ𝒃ig))𝜺Δ𝑹¯ij𝒃¯gδ𝒃ig̃]}𝒓Δ𝑹ij(δ𝒃ig)𝑱r1(𝒓Δ𝑹ij(δ𝒃ig))Exp(𝒓Δ𝑹ij(δ𝒃ig))𝜺Δ𝑹¯ij𝒃¯gδ𝒃ig̃=𝒓Δ𝑹ij𝑱r1(𝒓Δ𝑹ij)Exp(𝒓Δ𝑹ij)𝑱r(Δ𝑹¯ij𝒃¯gδ𝒃ig)Δ𝑹¯ij𝒃¯gδ𝒃ig̃ \begin{aligned}\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}+\widetilde{\delta \mathbf{b}_ {i}^{g}}\right) &\approx \text{Log} \left\{\left[\Delta \hat{\mathbf{R}}_ {i j} \cdot \operatorname{Exp}\left(\boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{y}}\right)\right]^{T} \Delta \mathbf{R}_ {i j}\right\}\\&= \text{Log} \left[\operatorname{Exp}\left(-\boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\right) \Delta \hat{\mathbf{R}}_ {i j}^{T} \Delta \mathbf{R}_ {i j}\right]\\&=\text{Log} \left[\operatorname{Exp}\left(-\boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\right) \operatorname{Exp}\left(\text{Log} \left(\Delta \hat{\mathbf{R}}_ {i j}^{T} \Delta \mathbf{R}_ {i j}\right)\right)\right]\\&=\text{Log} \left[\operatorname{Exp}\left(-\boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\right) \operatorname{Exp}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)\right)\right]\\&=\text{Log} \left\{\operatorname{Exp}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)\right) \operatorname{Exp}\left[-\operatorname{Exp}\left(-\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)\right) \cdot \boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\right]\right\}\\&\approx \mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)\right) \cdot \operatorname{Exp}\left(-\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\left(\delta \mathbf{b}_ {i}^{g}\right)\right) \cdot \boldsymbol{\varepsilon} \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \widetilde{\delta \mathbf{b}_ {i}^{g}}\\&=\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \cdot \operatorname{Exp}\left(-\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \cdot \mathbf{J}_ {r}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \cdot \widetilde{\delta \mathbf{b}_ {i}^{g}}\end{aligned}

上面的推导中,用到的性质有:Exp(ϕ+δϕ)Exp(ϕ)Exp(𝑱r(ϕ)δϕ)\operatorname{Exp}(\vec{\phi}+\delta \vec{\phi}) \approx \operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}\left(\mathbf{J}_ {r}(\vec{\phi}) \cdot \delta \vec{\phi}\right)(Exp(ϕ))T=Exp(ϕ)(\operatorname{Exp}(\vec{\phi}))^{T}=\operatorname{Exp}(-\vec{\phi}),伴随性质,Log(Exp(ϕ)Exp(δϕ))=ϕ+𝑱r1(ϕ)δϕ\text{Log} (\operatorname{Exp}(\vec{\phi}) \cdot \operatorname{Exp}(\delta \vec{\phi}))=\vec{\phi}+\mathbf{J}_ {r}^{-1}(\vec{\phi}) \cdot \delta \vec{\phi}(可以看出来推导的方法是很类似的)。综上所述,可以得到:

𝒓Δ𝑹ijδ𝒃ig=𝑱r1(𝒓Δ𝑹ij)Exp(𝒓Δ𝑹ij)𝑱r(Δ𝑹¯ij𝒃¯gδ𝒃ig)Δ𝑹¯ij𝒃¯g \frac{\partial \mathbf{r}_ {\Delta \mathbf{R}_ {ij}}}{\partial \delta \mathbf{b}_ {i}^{\mathrm{g}}}=-\mathbf{J}_ {r}^{-1}\left(\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \cdot \operatorname{Exp}\left(-\mathbf{r}_ {\Delta \mathbf{R}_ {i j}}\right) \cdot \mathbf{J}_ {r}\left(\frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}} \delta \mathbf{b}_ {i}^{g}\right) \cdot \frac{\partial \Delta \overline{\mathbf{R}}_ {i j}}{\partial \overline{\mathbf{b}}^{g}}

这里需要注意的这儿我们是对δ𝒃ig\delta \mathbf{b}_ {i}^{g}求导,而𝒓Δ𝑹ij\mathbf{r}_ {\Delta \mathbf{R}_ {ij}}也是新的bias(𝒃ig+δ𝒃ig\mathbf{b}_i^g+\delta \mathbf {b}_i^g)的测量预积分值。至于为什么要这么做,也许之后会找到答案。

𝒓Δ𝒗ij\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}的Jacobian

(1)“0”类:由于𝒓Δ𝒗ij\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}中不包含𝑹j,𝒑i,𝒑j\mathbf{R}_ {j}, \mathbf{p}_ {i}, \mathbf{p}_ {j},因此:

𝒓Δ𝒗ijϕj=𝟎,𝒓Δ𝒗ij𝒑i=𝟎,𝒓Δvij𝒑j=𝟎 \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {ij}}}{\partial \vec{\phi}_ {j}}=\mathbf{0}, \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {ij}}}{\partial \mathbf{p}_ {i}}=\mathbf{0}, \frac{\partial \mathbf{r}_ {\Delta v_ {i j}}}{\partial \mathbf{p}_ {j}}=\mathbf{0}

(2)线性类:由于𝒓Δ𝒗ij\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}δ𝒃ig,δ𝒃ia\delta \mathbf{b}_ {i}^{g} , \delta \mathbf{b}_ {i}^{a}是线性关系,因此有:

𝒓Δ𝒗ijδ𝒃ig=Δ𝒗¯ij𝒃g,𝒓Δ𝒗jjδ𝒃ia=Δ𝒗¯ij𝒃a \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {i j}}}{\partial \delta \mathbf{b}_ {i}^{\mathrm{g}}}=-\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \mathbf{b}^{g}}, \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {j j}}}{\partial \delta \mathbf{b}_ {i}^{\mathrm{a}}}=-\frac{\partial \Delta \overline{\mathbf{v}}_ {i j}}{\partial \mathbf{b}^{a}}

(3)其他类:

  • 关于𝒗i\mathbf{v}_i的Jacobian

𝒓Δ𝒗jj(𝒗i+δ𝒗i)=𝑹iT(𝒗j𝒗iδ𝒗i𝒈Δtij)Δ𝒗̂ij=𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij𝑹iTδ𝒗i=𝒓Δ𝒗ij(𝒗i)𝑹iTδ𝒗i=𝒓Δ𝒗ij𝑹iTδ𝒗i \begin{aligned}\mathbf{r}_ {\Delta \mathbf{v}_ {j j}}\left(\mathbf{v}_ {i}+\delta \mathbf{v}_ {i}\right) &=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\delta \mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j} \\&=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j}-\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {i} \\&=\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}\left(\mathbf{v}_ {i}\right)-\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {i} \\ &=\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}-\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {i}\end{aligned}

因此有:

𝒓Δ𝒗ij𝒗i=𝑹iT \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {i j}}}{\partial \mathbf{v}_ {i}}=-\mathbf{R}_ {i}^{T}

  • 关于𝒗j\mathbf{v}_j的Jacobian

𝒓Δ𝒗y(𝒗j+δ𝒗j)=𝑹iT(𝒗j+δ𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij=𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij+𝑹iTδ𝒗j=𝒓Δ𝒗ij(𝒗j)+𝑹iTδ𝒗j=𝒓Δ𝒗jj+𝑹iTδ𝒗j \begin{aligned}\mathbf{r}_ {\Delta \mathbf{v}_ {y}}\left(\mathbf{v}_ {j}+\delta \mathbf{v}_ {j}\right) &=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}+\delta \mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j} \\&=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j}+\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {j} \\&=\mathbf{r}_ {\Delta \mathbf{v}_ {i j}}\left(\mathbf{v}_ {j}\right)+\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {j} \\&= \mathbf{r}_ {\Delta \mathbf{v}_ {j j}}+\mathbf{R}_ {i}^{T} \delta \mathbf{v}_ {j}\end{aligned}

因此有:

𝒓Δ𝒗ij𝒗j=𝑹iT \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {i j}}}{\partial \mathbf{v}_ {j}}=\mathbf{R}_ {i}^{T}

  • 关于ϕi\vec\phi_i的Jacobian

𝒓Δvij(𝑹iExp(δϕi))=(𝑹iExp(δϕi))T(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij=Exp(δϕi)𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij(𝑰(δϕi))𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij=𝑹iT(𝒗j𝒗i𝒈Δtij)Δ𝒗̂ij(δϕi)𝑹iT(𝒗j𝒗i𝒈Δtij)=𝒓Δvij(𝑹i)+[𝑹iT(𝒗j𝒗i𝒈Δtij)]δϕi=𝒓Δvij+[𝑹iT(𝒗j𝒗i𝒈Δtij)]δϕi \begin{aligned}\mathbf{r}_ {\Delta v_ {ij}}\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right) &=\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right)^{T}\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j} \\& = \operatorname{Exp}\left(-\delta \vec{\phi}_ {i}\right) \cdot \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j} \\& \approx\left(\mathbf{I}-\left(\delta \vec{\phi}_ {i}\right)^{\wedge}\right) \cdot \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j} \\&=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)-\Delta \hat{\mathbf{v}}_ {i j}-\left(\delta \vec{\phi}_ {i}\right)^{\wedge} \cdot \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right) \\& =\mathbf{r}_ {\Delta v_ {i j}}\left(\mathbf{R}_ {i}\right)+\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)\right]^{\wedge} \cdot \delta \vec{\phi}_ {i} \\& = \mathbf{r}_ {\Delta v_ {i j}}+\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)\right]^{\wedge} \cdot \delta \vec{\phi}_ {i}\end{aligned}

上述推导用到的规则有:(Exp(ϕ))T=Exp(ϕ)(\operatorname{Exp}(\vec{\phi}))^{T}=\operatorname{Exp}(-\vec{\phi})Exp(δϕi)𝑰+(δϕi)\operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right) \approx \mathbf{I}+(\delta\vec\phi_i)^{\wedge}𝒂𝒃=𝒃𝒂\mathbf{a}^{\wedge} \cdot \mathbf{b}=-\mathbf{b}^{\wedge} \cdot \mathbf{a}。因此有:

𝒓Δ𝒗ijϕi=[𝑹iT(𝒗j𝒗i𝒈Δtij)] \frac{\partial \mathbf{r}_ {\Delta \mathbf{v}_ {i j}}}{\partial \vec{\phi}_ {i}}=\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{v}_ {j}-\mathbf{v}_ {i}-\mathbf{g} \cdot \Delta t_ {i j}\right)\right]^{\wedge}

𝒓Δ𝒑ij\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}的Jacobian

(1)“0”类:由于𝒓Δ𝒑ij\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}中不包含𝑹j,𝒗j\mathbf R_ {j}, \mathbf{v}_j

𝒓Δ𝒑jjϕj=𝟎,𝒓Δ𝒑ij𝒗j=𝟎 \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {j j}}}{\partial \vec{\phi}_ {j}}=\mathbf{0}, \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \mathbf{v}_ {j}}=\mathbf{0}

(2)线性类:由于𝒓Δ𝒑ij\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}δ𝒃ig,δ𝒃ia\delta \mathbf{b}_ {i}^{g} , \delta \mathbf{b}_ {i}^{a}是线性关系,因此有:

𝒓Δ𝒑ijδ𝒃ig=Δ𝒑¯ij𝒃g,𝒓Δ𝒑ijδ𝒃ia=Δ𝒑¯ij𝒃a \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \delta \mathbf{b}_ {i}^{g}}=-\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \mathbf{b}^{g}}, \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \delta \mathbf{b}_ {i}^{a}}=-\frac{\partial \Delta \overline{\mathbf{p}}_ {i j}}{\partial \mathbf{b}^{a}}

(3)其他类:

  • 关于𝒑i\mathbf{p}_i的Jacobian:

𝒓Δ𝒑ij(𝒑i+𝑹iδ𝒑i)=𝑹iT(𝒑j𝒑i𝑹iδ𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij𝑰δ𝒑i=𝒓Δ𝒑ij(𝒑i)𝑰δ𝒑i=𝒓Δ𝒑ij𝑰δ𝒑i \begin{aligned}\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}\left(\mathbf{p}_ {i}+\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i}\right) &=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\&=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j}-\mathbf{I} \cdot \delta \mathbf{p}_ {i} \\&=\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}\left(\mathbf{p}_ {i}\right)-\mathbf{I} \cdot \delta \mathbf{p}_ {i} \\&=\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}-\mathbf{I} \cdot \delta \mathbf{p}_ {i}\end{aligned}

因此可以得到:

𝒓Δ𝒑ij𝒑i=𝑰 \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \mathbf{p}_ {i}}=-\mathbf{I}

  • 关于𝒑j\mathbf{p}_j的Jacobian:

𝒓Δ𝒑ij(𝒑j+𝑹jδ𝒑j)=𝑹iT(𝒑j+𝑹jδ𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij+𝑹iT𝑹jδ𝒑j=𝒓Δ𝒑ij(𝒑j)+𝑹iT𝑹jδ𝒑j=𝒓Δ𝒑ij+𝑹iT𝑹jδ𝒑j \begin{aligned}\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}\left(\mathbf{p}_ {j}+\mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j}\right) &=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}+\mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\&=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j}+\mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j} \\&=\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}\left(\mathbf{p}_ {j}\right)+\mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j} \\&=\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}+\mathbf{R}_ {i}^{T} \mathbf{R}_ {j} \cdot \delta \mathbf{p}_ {j}\end{aligned}

因此有:

𝒓Δ𝒑ij𝒑j=𝑹iT𝑹j \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \mathbf{p}_ {j}}=\mathbf{R}_ {i}^{T} \mathbf{R}_ {j}

  • 关于𝒗j\mathbf{v}_j的Jacobian:

𝒓Δ𝒑ij(𝒗i+δ𝒗i)=𝑹iT(𝒑j𝒑i𝒗iΔtijδ𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij𝑹iTΔtijδ𝒗i=𝒓Δ𝒑ij(𝒗i)𝑹iTΔtijδ𝒗i=𝒓Δ𝒑ij𝑹iTΔtijδ𝒗i \begin{aligned}\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}\left(\mathbf{v}_ {i}+\delta \mathbf{v}_ {i}\right) &=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\delta \mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\&=\mathbf{R}_ {i}^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j}-\mathbf{R}_ {i}^{T} \Delta t_ {i j} \cdot \delta \mathbf{v}_ {i} \\&=\mathbf{r}_ {\Delta \mathbf{p}_ {ij}}\left(\mathbf{v}_ {i}\right)-\mathbf{R}_ {i}^{T} \Delta t_ {i j} \cdot \delta \mathbf{v}_ {i} \\ &=\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}-\mathbf{R}_ {i}^{T} \Delta t_ {i j} \cdot \delta \mathbf{v}_ {i}\end{aligned}

因此有:

𝒓Δ𝒑ij𝒗i=𝑹iTΔtij \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \mathbf{v}_ {i}}=-\mathbf{R}_ {i}^{T} \Delta t_ {i j}

  • 关于ϕi\vec\phi_i的Jacobian:

𝒓Δ𝒑ij(𝑹iExp(δϕi))=(𝑹iExp(δϕi))T(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij=Exp(δϕi)𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij(𝑰(δϕi))𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij=𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)Δ𝒑̂ij(δϕi)𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)=𝒓Δ𝒑ij(𝑹i)+[𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)]δϕi=𝒓Δ𝒑ij+[𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)]δϕi \begin{aligned}\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right) &=\left(\mathbf{R}_ {i} \operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right)\right)^{T}\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\& = \operatorname{Exp}\left(-\delta \vec{\phi}_ {i}\right) \cdot \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\& \approx\left(\mathbf{I}-\left(\delta \vec{\phi}_ {i}\right)^{\wedge}\right) \cdot \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j} \\&=\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)-\Delta \hat{\mathbf{p}}_ {i j}-\left(\delta \vec{\phi}_ {i}\right)^{\wedge} \mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right) \\& = \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}\left(\mathbf{R}_ {i}\right)+\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)\right]^{\wedge} \cdot \delta \vec{\phi}_ {i} \\& =\mathbf{r}_ {\Delta \mathbf{p}_ {i j}}+\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)\right]^{\wedge} \cdot \delta \vec{\phi}_ {i}\end{aligned}

上述推导用到的规则有:(Exp(ϕ))T=Exp(ϕ)(\operatorname{Exp}(\vec{\phi}))^{T}=\operatorname{Exp}(-\vec{\phi})Exp(δϕi)𝑰+(δϕi)\operatorname{Exp}\left(\delta \vec{\phi}_ {i}\right) \approx \mathbf{I}+(\delta\vec\phi_i)^{\wedge}𝒂𝒃=𝒃𝒂\mathbf{a}^{\wedge} \cdot \mathbf{b}=-\mathbf{b}^{\wedge} \cdot \mathbf{a}。因此有:

𝒓Δ𝒑ijϕi=[𝑹iT(𝒑j𝒑i𝒗iΔtij12𝒈Δtij2)] \frac{\partial \mathbf{r}_ {\Delta \mathbf{p}_ {i j}}}{\partial \ \vec{\phi}_ {i}}=\left[\mathbf{R}_ {i}^{T} \cdot\left(\mathbf{p}_ {j}-\mathbf{p}_ {i}-\mathbf{v}_ {i} \cdot \Delta t_ {i j}-\frac{1}{2} \mathbf{g} \cdot \Delta t_ {i j}^{2}\right)\right]^{\wedge}

注意,由于位置的更新方式是𝒑i𝒑i+𝑹iδ𝒑i\mathbf{p}_ {i} \leftarrow \mathbf{p}_ {i}+\mathbf{R}_ {i} \cdot \delta \mathbf{p}_ {i},因此我们在推导的时候也是加上了这个来求Jacobian。如果换了𝒑i𝒑i+δ𝒑i\mathbf{p}_ {i} \leftarrow \mathbf{p}_ {i}+ \delta \mathbf{p}_ {i}的更新方式,实际上结果也一样根据上面的方法很容易求出来。

至此,全文将 Foster 的 IMU 预积分理论中的公式推导结束,感谢邱笑晨提供的PDF。

Note: 在Vins mono中,IMU的重力也会被优化。