【SLAM】IMU预积分的理解、手把手推导(3/4)

由于篇幅设置,IMU预积分分为4篇完成:


上一篇文章对IMU预积分噪声进行分离,并对其递推形式进行推导,最终引出了其信息矩阵的递推形式。而本文将会对零偏改变时IMU预积分的速算进行推导。这是IMU预积分节省计算量的关键。


IMU预积分推导

零偏更新时的PVQ增量测量值更新

前面的计算和推导,都是在假设积分区间内陀螺和加计的零偏恒定的基础上推导的。当零偏发生变化时,若仍按照前述公式,PVQ增量测量值需要整个重新计算一遍,这将非常的耗费算力。为了解决这个问题,提出了利用线性化来进行零偏变化时的一阶近似更新方法

具体来说,我们把PVQ增量观测值看成 b i g \mathbf{b}_{i}^{g} big b i a \mathbf{b}_{i}^{a} bia 的函数,那么,当 b i g \mathbf{b}_{i}^{g} big b i a \mathbf{b}_{i}^{a} bia 更新了 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 之后,PVQ增量观测值应作如下的修正:

Δ R ~ i j ( b i g + δ b i g ) ≈ Δ R ~ i j ( b i g ) E x p ( ∂ Δ R ~ i j ∂ b i g δ b i g ) Δ v ~ i j ( b i g + δ b i g , b i a + δ b i a ) ≈ Δ v ~ i j ( b i g , b i a ) + ∂ Δ v ~ i j ∂ b i g δ b i g + ∂ Δ v ~ i j ∂ b i a δ b i a Δ p ~ i j ( b i g + δ b i g , b i a + δ b i a ) ≈ Δ p ~ i j ( b i g , b i a ) + ∂ Δ p ~ i j ∂ b i g δ b i g + ∂ Δ p ~ i j ∂ b i a δ b i a \begin{aligned} &\Delta \tilde{\mathbf{R}}_{ij}\left( \mathbf{b}_{i}^{g} + \delta \mathbf{b}_{i}^{g} \right) \approx \Delta \tilde{\mathbf{R}}_{ij}(\mathbf{b}_{i}^{g}) \mathrm{Exp} \left(\frac{\partial \Delta \tilde{\mathbf{R}}_{ij}}{\partial \mathbf{b}_i^g} \delta \mathbf{b}_{i}^{g}\right) \\ & \Delta \tilde{\mathbf{v}}_{ij} (\mathbf{b}_{i}^{g} + \delta \mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a} + \delta \mathbf{b}_{i}^{a}) \approx \Delta \tilde{\mathbf{v}}_{ij}(\mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}) + \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a} \\ & \Delta \tilde{\mathbf{p}}_{ij} (\mathbf{b}_{i}^{g} + \delta \mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a} + \delta \mathbf{b}_{i}^{a}) \approx \Delta \tilde{\mathbf{p}}_{ij}(\mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}) + \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a} \end{aligned} ΔR~ij(big+δbig)ΔR~ij(big)Exp(bigΔR~ijδbig)Δv~ij(big+δbig,bia+δbia)Δv~ij(big,bia)+bigΔv~ijδbig+biaΔv~ijδbiaΔp~ij(big+δbig,bia+δbia)Δp~ij(big,bia)+bigΔp~ijδbig+biaΔp~ijδbia

需要注意的是:这里的 Δ R ~ i j \Delta \tilde{\mathbf{R}}_{ij} ΔR~ij括号里面表示的是零偏更新前、更新后的PVQ增量测量值的标记,并不表示乘法运算!

为了更清晰地表示,将零偏更新前的仍保留原本的写法 Δ R ~ i j \Delta \tilde{\mathbf{R}}_{ij} ΔR~ij,零偏更新后的表示为 Δ R ^ i j \Delta \hat{\mathbf{R}}_{ij} ΔR^ij

即:

Δ R ^ i j ≈ Δ R ~ i j E x p ( ∂ Δ R ~ i j ∂ b i g δ b i g ) Δ v ^ i j ≈ Δ v ~ i j + ∂ Δ v ~ i j ∂ b i g δ b i g + ∂ Δ v ~ i j ∂ b i a δ b i a Δ p ^ i j ≈ Δ p ~ i j + ∂ Δ p ~ i j ∂ b i g δ b i g + ∂ Δ p ~ i j ∂ b i a δ b i a \begin{aligned} &\Delta \hat{\mathbf{R}}_{ij} \approx \Delta \tilde{\mathbf{R}}_{ij} \mathrm{Exp} \left(\frac{\partial \Delta \tilde{\mathbf{R}}_{ij}}{\partial \mathbf{b}_i^g} \delta \mathbf{b}_{i}^{g}\right) \\ & \Delta \hat{\mathbf{v}}_{ij} \approx \Delta \tilde{\mathbf{v}}_{ij} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a} \\ & \Delta \hat{\mathbf{p}}_{ij} \approx \Delta \tilde{\mathbf{p}}_{ij} + \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a} \end{aligned} ΔR^ijΔR~ijExp(bigΔR~ijδbig)Δv^ijΔv~ij+bigΔv~ijδbig+biaΔv~ijδbiaΔp^ijΔp~ij+bigΔp~ijδbig+biaΔp~ijδbia

下面分别对这些雅可比进行分析。

R ~ i j \tilde{\mathbf{R}}_{ij} R~ij的雅可比

在前文 Δ R i j \Delta \mathbf{R}_{i j} ΔRij真值分离中,最终得到:

Δ R ~ i j = ∏ k = i j − 1 Exp ⁡ ( ( ω ~ k − b i g ) Δ t ) \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) ΔR~ij=k=ij1Exp((ω~kbig)Δt)

那么,当 b i g \mathbf{b}_{i}^{g} big b i a \mathbf{b}_{i}^{a} bia 更新了 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 后:

Δ R ^ i j = ∏ k = i j − 1 E x p ( ( ω ~ k − ( b i g + δ b i g ) ) Δ t ) = ∏ k = i j − 1 E x p ( ( ω ~ k − b i g ) Δ t − δ b i g Δ t ) = 1 ∏ k = i j − 1 E x p ( ( ω ~ k − b i g ) Δ t ) E x p ( − J r k δ b i g Δ t ) = 2 E x p ( ( ω ~ i − b i g ) Δ t ) E x p ( − J r i δ b i g Δ t ) E x p ( ( ω ~ i + 1 − b i g ) Δ t ) E x p ( − J r i + 1 δ b i g Δ t ) … = Δ R ~ i , i + 1 E x p ( − J r i δ b i g Δ t ) Δ R ~ i + 1 , i + 2 E x p ( − J r i + 1 δ b i g Δ t ) Δ R ~ i + 2 , i + 3 … = 3 Δ R ~ i , i + 1 Δ R ~ i + 1 , i + 2 E x p ( − Δ R ~ i + 1 , i + 2 T J r , i δ b i g Δ t ) E x p ( − J r i + 1 δ b i g Δ t ) Δ R ~ i + 2 , i + 3 … = 4 Δ R ~ i j ∏ k = i j − 1 E x p ( − Δ R ~ k + 1 , j T J r k δ b i g Δ t ) ≈ Δ R ~ i j E x p ( − ∑ k = i j − 1 Δ R ~ k + 1 , j T J r k Δ t δ b i g ) \begin{aligned} \Delta \hat{\mathbf{R}}_{ij} &= \prod_{k=i}^{j-1} \mathrm{Exp} \left((\tilde{\boldsymbol{\omega}}_k - (\mathbf{b}_{i}^{g} + \delta \mathbf{b}_{i}^{g})) \Delta t \right)\\&= \prod_{k=i}^{j-1} \mathrm{Exp} \left((\tilde{\boldsymbol{\omega}}_k - \mathbf{b}_{i}^{g})\Delta t - \delta \mathbf{b}_{i}^{g} \Delta t \right) \\ &\stackrel{1} = \prod_{k=i}^{j-1} \mathrm{Exp} \left((\tilde{\boldsymbol{\omega}}_k - \mathbf{b}_{i}^{g}) \Delta t \right) \mathrm{Exp}(-\mathbf{J}_{r}^{k} \delta \mathbf{b}_{i}^{g} \Delta t) \\ &\stackrel{2}= \mathrm{Exp} \left((\tilde{\boldsymbol{\omega}}_i - \mathbf{b}_{i}^{g}) \Delta t \right) \mathrm{Exp}(-\mathbf{J}_{r}^{i} \delta \mathbf{b}_{i}^{g} \Delta t) \mathrm{Exp} \left((\tilde{\boldsymbol{\omega}}_{i+1} - \mathbf{b}_{i}^{g}) \Delta t \right) \mathrm{Exp}(-\mathbf{J}_{r}^{i+1} \delta \mathbf{b}_{i}^{g} \Delta t) \ldots \\ &= \Delta \tilde{\mathbf{R}}_{i, i+1} \mathrm{Exp}(-\mathbf{J}_{r}^{i} \delta \mathbf{b}_{i}^{g} \Delta t) \Delta \tilde{\mathbf{R}}_{i+1, i+2} \mathrm{Exp}(-\mathbf{J}_{r}^{i+1} \delta \mathbf{b}_{i}^{g} \Delta t) \Delta \tilde{\mathbf{R}}_{i+2, i+3}\ldots \\ &\stackrel{3}= \Delta \tilde{\mathbf{R}}_{i, i+1} \Delta \tilde{\mathbf{R}}_{i+1, i+2} \mathrm{Exp}(-\Delta \tilde{\mathbf{R}}_{i+1, i+2}^\mathrm{T} \mathbf{J}_{r,i} \delta \mathbf{b}_{i}^{g} \Delta t) \mathrm{Exp}(-\mathbf{J}_{r}^{i+1} \delta \mathbf{b}_{i}^{g} \Delta t) \Delta \tilde{\mathbf{R}}_{i+2, i+3}\ldots \\ &\stackrel{4}= \Delta \tilde{\mathbf{R}}_{ij} \prod_{k=i}^{j-1} \mathrm{Exp} \left( -\Delta \tilde{\mathbf{R}}_{k+1, j}^\mathrm{T} \mathbf{J}_{r}^{k} \delta \mathbf{b}_{i}^{g} \Delta t\right) \\ & \approx \Delta \tilde{\mathbf{R}}_{ij} \mathrm{Exp} \left( -\sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{k+1, j}^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t \delta \mathbf{b}_{i}^{g} \right) \end{aligned} ΔR^ij=k=ij1Exp((ω~k(big+δbig))Δt)=k=ij1Exp((ω~kbig)ΔtδbigΔt)=1k=ij1Exp((ω~kbig)Δt)Exp(JrkδbigΔt)=2Exp((ω~ibig)Δt)Exp(JriδbigΔt)Exp((ω~i+1big)Δt)Exp(Jri+1δbigΔt)=ΔR~i,i+1Exp(JriδbigΔt)ΔR~i+1,i+2Exp(Jri+1δbigΔt)ΔR~i+2,i+3=3ΔR~i,i+1ΔR~i+1,i+2Exp(ΔR~i+1,i+2TJr,iδbigΔt)Exp(Jri+1δbigΔt)ΔR~i+2,i+3=4ΔR~ijk=ij1Exp(ΔR~k+1,jTJrkδbigΔt)ΔR~ijExp(k=ij1ΔR~k+1,jTJrkΔtδbig)

其中1处使用了BCH近似性质,其中2处将 ∏ \prod 展开,3和4处利用Adjoint性质。这和前文 Δ R i j \Delta \mathbf{R}_{i j} ΔRij真值分离中使用的方法几乎一致。

其中:

J r k = J r ( ( ω ~ k − b i g ) Δ t ) \mathbf{J}_r^k=\mathbf{J}_r\left((\tilde{\boldsymbol{\omega}}_k - \mathbf{b}_{i}^{g})\Delta t\right) Jrk=Jr((ω~kbig)Δt)

对比可知:

E x p ( ∂ Δ R ~ i j ∂ b i g δ b i g ) = E x p ( − ∑ k = i j − 1 Δ R ~ k + 1 , j T J r k Δ t δ b i g ) \mathrm{Exp} \left(\frac{\partial \Delta \tilde{\mathbf{R}}_{ij}}{\partial \mathbf{b}_i^g} \delta \mathbf{b}_{i}^{g}\right)=\mathrm{Exp} \left( -\sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{k+1, j}^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t \delta \mathbf{b}_{i}^{g} \right) Exp(bigΔR~ijδbig)=Exp(k=ij1ΔR~k+1,jTJrkΔtδbig)

即(雅可比矩阵也要改成递推形式):

∂ Δ R ~ i j ∂ b i g = − ∑ k = i j − 1 Δ R ~ k + 1 , j T J r k Δ t = − ∑ k = i j − 2 ( Δ R ~ k + 1 , j T J r k Δ t ) − Δ R ~ j , j T J r j − 1 Δ t = 1 − ∑ k = i j − 2 ( ( Δ R ~ k + 1 , j − 1 Δ R ~ j − 1 , j ) T J r k Δ t ) − J r j − 1 Δ t = − Δ R ~ j , j − 1 ∑ k = i j − 2 ( Δ R ~ k + 1 , j − 1 T J r k Δ t ) − J r j − 1 Δ t = Δ R ~ j , j − 1 ∂ Δ R ~ i j − 1 ∂ b i g − J r j − 1 Δ t \begin{aligned}\frac{\partial \Delta \tilde{\mathbf{R}}_{ij}}{\partial \mathbf{b}_i^g}&=-\sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{k+1, j}^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t \\ &= -\sum_{k=i}^{j-2} \left(\Delta \tilde{\mathbf{R}}_{k+1, j}^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t\right) - \Delta \tilde{\mathbf{R}}_{j, j}^\mathrm{T} \mathbf{J}_{r}^{j-1} \Delta t \\ &\stackrel{1}= -\sum_{k=i}^{j-2} \left((\Delta \tilde{\mathbf{R}}_{k+1, j-1}\Delta \tilde{\mathbf{R}}_{j-1, j})^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t\right) - \mathbf{J}_{r}^{j-1} \Delta t \\ &= -\Delta \tilde{\mathbf{R}}_{j, j-1}\sum_{k=i}^{j-2} \left(\Delta \tilde{\mathbf{R}}_{k+1, j-1}^\mathrm{T} \mathbf{J}_{r}^{k} \Delta t\right) - \mathbf{J}_{r}^{j-1} \Delta t \\ &= \Delta \tilde{\mathbf{R}}_{j, j-1}\frac{\partial \Delta \tilde{\mathbf{R}}_{ij-1}}{\partial \mathbf{b}_i^g} - \mathbf{J}_{r}^{j-1} \Delta t \end{aligned} bigΔR~ij=k=ij1ΔR~k+1,jTJrkΔt=k=ij2(ΔR~k+1,jTJrkΔt)ΔR~j,jTJrj1Δt=1k=ij2((ΔR~k+1,j1ΔR~j1,j)TJrkΔt)Jrj1Δt=ΔR~j,j1k=ij2(ΔR~k+1,j1TJrkΔt)Jrj1Δt=ΔR~j,j1bigΔR~ij1Jrj1Δt

其中1处利用了 Δ R ~ j j T = I \Delta\tilde{\mathbf{R}}_{j j}^{T}=\mathbf{I} ΔR~jjT=I 以及 Δ R ~ l m Δ R ~ m n = Δ R ~ l n \Delta\tilde{\mathbf{R}}_{l m}\Delta\tilde{\mathbf{R}}_{m n}=\Delta\tilde{\mathbf{R}}_{l n} ΔR~lmΔR~mn=ΔR~ln 的性质,推导过程中进行了一些变形。这和前文 δ ϕ ⃗ i j − 1 → δ ϕ ⃗ i j \delta\vec{\phi}_{i j-1}\rightarrow\delta\vec{\phi}_{i j} δϕ ij1δϕ ij递推中使用的方法几乎一致。

Δ v ~ i j \Delta \tilde{\mathbf{v}}_{ij} Δv~ij的雅可比

在前文 Δ v i j \Delta \mathbf{v}_{i j} Δvij真值分离中,最终得到:

Δ v ~ i j = ∑ k = i j − 1 [ Δ R ~ i k ⋅ ( a ~ k − b i a ) ⋅ Δ t ] \Delta \tilde{\mathbf{v}}_{i j} = \sum_{k=i}^{j-1}\left[\Delta \tilde{\mathbf{R}}_{i k} \cdot\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right) \cdot \Delta t\right] Δv~ij=k=ij1[ΔR~ik(a~kbia)Δt]

那么,当 b i g \mathbf{b}_{i}^{g} big b i a \mathbf{b}_{i}^{a} bia 更新了 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 后:

Δ v ^ i j = ∑ k = i j − 1 [ Δ R ^ i k ( a ~ k − b i a − δ b i a ) Δ t ] = ∑ k = i j − 1 Δ R ~ i k E x p ( ∂ Δ R ~ i k ∂ b i g δ b i g ) ( a ~ k − b i a − δ b i a ) Δ t = 1 ∑ k = i j − 1 Δ R ~ i k ( I + ( ∂ Δ R ~ i k ∂ b i g δ b i g ) ∧ ) ( a ~ k − b i a − δ b i a ) Δ t ≈ 2 Δ v ~ i j − ∑ k = i j − 1 Δ R ~ i k Δ t δ b i a − ∑ k = i j − 1 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t δ b i g \begin{aligned} \Delta \hat{\mathbf{v}}_{ij} &= \sum_{k=i}^{j-1} \left[\Delta \hat{\mathbf{R}}_{ik} (\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a} - \delta \mathbf{b}_{i}^{a}) \Delta t\right]\\ &= \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} \mathrm{Exp}\left( \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} \right) (\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a} - \delta \mathbf{b}_{i}^{a}) \Delta t \\ &\stackrel{1}= \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} \left(\mathbf{I} +\left( \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} \right)^\wedge \right)(\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a} - \delta \mathbf{b}_{i}^{a}) \Delta t \\ & \stackrel{2}\approx \Delta \tilde{\mathbf{v}}_{ij} - \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} \Delta t \delta \mathbf{b}_{i}^{a} - \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} (\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a})^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t \delta \mathbf{b}_{i}^{g}\end{aligned} Δv^ij=k=ij1[ΔR^ik(a~kbiaδbia)Δt]=k=ij1ΔR~ikExp(bigΔR~ikδbig)(a~kbiaδbia)Δt=1k=ij1ΔR~ik(I+(bigΔR~ikδbig))(a~kbiaδbia)Δt2Δv~ijk=ij1ΔR~ikΔtδbiak=ij1ΔR~ik(a~kbia)bigΔR~ikΔtδbig

其中1处使用了 Exp ⁡ ( ) \operatorname{Exp}() Exp()的小量近似,其中2处忽略高阶小项,并使用了外积的交换律。这和前文 Δ v i j \Delta \mathbf{v}_{i j} Δvij真值分离中使用的方法几乎一致。

对比可知:

∂ Δ v ~ i j ∂ b i g δ b i g + ∂ Δ v ~ i j ∂ b i a δ b i a = − ∑ k = i j − 1 Δ R ~ i k Δ t δ b i a − ∑ k = i j − 1 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t δ b i g \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a}=- \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} \Delta t \delta \mathbf{b}_{i}^{a} - \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} (\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a})^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t \delta \mathbf{b}_{i}^{g} bigΔv~ijδbig+biaΔv~ijδbia=k=ij1ΔR~ikΔtδbiak=ij1ΔR~ik(a~kbia)bigΔR~ikΔtδbig

即(雅可比矩阵也要改成递推形式):

∂ Δ v ~ i j ∂ b i g = − ∑ k = i j − 1 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t = 1 ∂ Δ v ~ i j − 1 ∂ b i g − ( Δ R ~ i j − 1 ( a ~ j − 1 − b i a ) ∧ ∂ Δ R ~ i j − 1 ∂ b i g Δ t ) ∂ Δ v ~ i j ∂ b i a = − ∑ k = i j − 1 Δ R ~ i k Δ t = 2 ∂ Δ v ~ i j − 1 ∂ b i a − Δ R ~ i j − 1 Δ t \begin{aligned} \frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{g}}&= -\sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} (\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a})^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t \\ &\stackrel{1}= \frac{\partial \Delta \tilde{\mathbf{v}}_{ij-1}}{\partial \mathbf{b}_{i}^{g}} -\left(\Delta \tilde{\mathbf{R}}_{ij-1}(\tilde{\mathbf{a}}_{j-1} - \mathbf{b}_{i}^{a})^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ij-1}}{\partial \mathbf{b}_{i}^{g}} \Delta t \right) \\\frac{\partial \Delta \tilde{\mathbf{v}}_{ij}}{\partial \mathbf{b}_{i}^{a}}&=- \sum_{k=i}^{j-1} \Delta \tilde{\mathbf{R}}_{ik} \Delta t \\&\stackrel{2}= \frac{\partial \Delta \tilde{\mathbf{v}}_{ij-1}}{\partial \mathbf{b}_{i}^{a}} -\Delta \tilde{\mathbf{R}}_{ij-1} \Delta t\end{aligned} bigΔv~ijbiaΔv~ij=k=ij1ΔR~ik(a~kbia)bigΔR~ikΔt=1bigΔv~ij1(ΔR~ij1(a~j1bia)bigΔR~ij1Δt)=k=ij1ΔR~ikΔt=2biaΔv~ij1ΔR~ij1Δt

其中1、2处直接进行加项拆分即可完成推导。这和前文 δ v i j − 1 → δ v i j \delta\mathbf{v}_{i j-1}\rightarrow\delta\mathbf{v}_{i j} δvij1δvij递推中使用的方法几乎一致。

Δ p ~ i j \Delta \tilde{\mathbf{p}}_{ij} Δp~ij的雅可比

在前文 Δ p i j \Delta \mathbf{p}_{i j} Δpij真值分离中,最终得到:

Δ p ~ i j = ∑ k = i j − 1 [ Δ v ~ i k Δ t + 1 2 Δ R ~ i k ⋅ ( a ~ k − b i a ) Δ t 2 ] \Delta \tilde{\mathbf{p}}_{i j} = \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{a}}_{k}-\mathbf{b}_{i}^{a}\right) \Delta t^{2}\right] Δp~ij=k=ij1[Δv~ikΔt+21ΔR~ik(a~kbia)Δt2]

那么,当 b i g \mathbf{b}_{i}^{g} big b i a \mathbf{b}_{i}^{a} bia 更新了 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 后:

Δ p ^ i j = ∑ k = i j − 1 [ Δ v ^ i k Δ t + 1 2 Δ R ^ i k ⋅ ( a ~ k − b i a − δ b i a ) Δ t 2 ] = 1 ∑ k = i j − 1 [ ( Δ v ~ i k + ∂ Δ v ~ i k ∂ b i a δ b i a + ∂ Δ v ~ i k ∂ b i g δ b i g ) Δ t + 1 2 Δ R ~ i k ( I + ( ∂ Δ R ~ i k ∂ b i g δ b i g ) ∧ ) ( a ~ k − b i a − δ b i a ) Δ t 2 ] = 2 Δ p ~ i j + ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i a Δ t − 1 2 Δ R ~ i k Δ t 2 ] δ b i a + ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i g Δ t − 1 2 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t 2 ] δ b i g \begin{aligned} \Delta \hat{\mathbf{p}}_{ij} &=\sum_{k=i}^{j-1}\left[\Delta \hat{\mathbf{v}}_{i k} \Delta t+\frac{1}{2} \Delta \hat{\mathbf{R}}_{ik} \cdot\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}-\delta\mathbf{b}_i^a\right) \Delta t^{2}\right] \\&\stackrel{1}= \sum_{k=i}^{j-1} \left[ \left(\Delta \tilde{\mathbf{v}}_{ik} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a} + \frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} \right) \Delta t + \right. \left. \frac{1}{2}\Delta \tilde{\mathbf{R}}_{ik} \left(\mathbf{I} + \left( \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} \right)^\wedge \right)(\tilde{\mathbf{a}}_k - \mathbf{b}_{i}^{a} -\delta \mathbf{b}_{i}^{a}) \Delta t^2 \right] \\ &\stackrel{2}= \Delta \tilde{\mathbf{p}}_{ij} + \sum_{k=i}^{j-1}\left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{a}} \Delta t - \frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik} \Delta t^2 \right] \delta \mathbf{b}_{i}^{a} + \sum_{k=i}^{j-1} \left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t -\frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right)^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t^2 \right] \delta \mathbf{b}_{i}^{g} \end{aligned} Δp^ij=k=ij1[Δv^ikΔt+21ΔR^ik(a~kbiaδbia)Δt2]=1k=ij1[(Δv~ik+biaΔv~ikδbia+bigΔv~ikδbig)Δt+21ΔR~ik(I+(bigΔR~ikδbig))(a~kbiaδbia)Δt2]=2Δp~ij+k=ij1[biaΔv~ikΔt21ΔR~ikΔt2]δbia+k=ij1[bigΔv~ikΔt21ΔR~ik(a~kbia)bigΔR~ikΔt2]δbig

其中1处使用了 Exp ⁡ ( ) \operatorname{Exp}() Exp()的小量近似,其中2处忽略高阶小项,并使用了外积的交换律。这和前文 Δ p i j \Delta \mathbf{p}_{i j} Δpij真值分离中使用的方法几乎一致。

对比可知:

∂ Δ p ~ i j ∂ b i g δ b i g + ∂ Δ p ~ i j ∂ b i a δ b i a = ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i a Δ t − 1 2 Δ R ~ i k Δ t 2 ] δ b i a + ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i g Δ t − 1 2 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t 2 ] δ b i g \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{g}} \delta \mathbf{b}_{i}^{g} + \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{a}} \delta \mathbf{b}_{i}^{a}=\sum_{k=i}^{j-1}\left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{a}} \Delta t - \frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik} \Delta t^2 \right] \delta \mathbf{b}_{i}^{a} + \sum_{k=i}^{j-1} \left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t -\frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right)^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t^2 \right] \delta \mathbf{b}_{i}^{g} bigΔp~ijδbig+biaΔp~ijδbia=k=ij1[biaΔv~ikΔt21ΔR~ikΔt2]δbia+k=ij1[bigΔv~ikΔt21ΔR~ik(a~kbia)bigΔR~ikΔt2]δbig

即(雅可比矩阵也要改成递推形式):

∂ Δ p ~ i j ∂ b i g = ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i g Δ t − 1 2 Δ R ~ i k ( a ~ k − b i a ) ∧ ∂ Δ R ~ i k ∂ b i g Δ t 2 ] = 1 ∂ Δ p ~ i j − 1 ∂ b i g + [ ∂ Δ v ~ i j − 1 ∂ b i g Δ t − 1 2 Δ R ~ i j − 1 ( a ~ j − 1 − b i a ) ∧ ∂ Δ R ~ i j − 1 ∂ b i g Δ t 2 ] ∂ Δ p ~ i j ∂ b i a = ∑ k = i j − 1 [ ∂ Δ v ~ i k ∂ b i a Δ t − 1 2 Δ R ~ i k Δ t 2 ] = 2 ∂ Δ p ~ i j − 1 ∂ b i a + [ ∂ Δ v ~ i j − 1 ∂ b i a Δ t − 1 2 Δ R ~ i j − 1 Δ t 2 ] \begin{aligned} \frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{g}}&= \sum_{k=i}^{j-1} \left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t -\frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik}\left(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{i}^{a}\right)^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ik}}{\partial \mathbf{b}_{i}^{g}} \Delta t^2 \right] \\ &\stackrel{1}= \frac{\partial \Delta \tilde{\mathbf{p}}_{ij-1}}{\partial \mathbf{b}_{i}^{g}} + \left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ij-1}}{\partial \mathbf{b}_{i}^{g}} \Delta t -\frac{1}{2} \Delta \tilde{\mathbf{R}}_{ij-1}\left(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{i}^{a}\right)^\wedge \frac{\partial \Delta \tilde{\mathbf{R}}_{ij-1}}{\partial \mathbf{b}_{i}^{g}} \Delta t^2 \right] \\\frac{\partial \Delta \tilde{\mathbf{p}}_{ij}}{\partial \mathbf{b}_{i}^{a}}&=\sum_{k=i}^{j-1}\left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ik}}{\partial \mathbf{b}_{i}^{a}} \Delta t - \frac{1}{2} \Delta \tilde{\mathbf{R}}_{ik} \Delta t^2 \right] \\&\stackrel{2}= \frac{\partial \Delta \tilde{\mathbf{p}}_{ij-1}}{\partial \mathbf{b}_{i}^{a}} + \left[\frac{\partial \Delta \tilde{\mathbf{v}}_{ij-1}}{\partial \mathbf{b}_{i}^{a}} \Delta t - \frac{1}{2} \Delta \tilde{\mathbf{R}}_{ij-1} \Delta t^2 \right]\end{aligned} bigΔp~ijbiaΔp~ij=k=ij1[bigΔv~ikΔt21ΔR~ik(a~kbia)bigΔR~ikΔt2]=1bigΔp~ij1+[bigΔv~ij1Δt21ΔR~ij1(a~j1bia)bigΔR~ij1Δt2]=k=ij1[biaΔv~ikΔt21ΔR~ikΔt2]=2biaΔp~ij1+[biaΔv~ij1Δt21ΔR~ij1Δt2]

其中1、2处直接进行加项拆分即可完成推导。这和前文 δ p i j − 1 → δ p i j \delta\mathbf{p}_{i j-1}\rightarrow\delta\mathbf{p}_{i j} δpij1δpij递推中使用的方法几乎一致。

小结

利用线性化的方法,对于 i i i j j j两帧之间的PVQ增量测量值我们只需要做一次就可以了(即 Δ R ~ i j ( b i g ) \Delta \tilde{\mathbf{R}}_{ij}(\mathbf{b}_{i}^{g}) ΔR~ij(big) Δ v ~ i j ( b i g , b i a ) \Delta \tilde{\mathbf{v}}_{ij}(\mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}) Δv~ij(big,bia) Δ p ~ i j ( b i g , b i a ) \Delta \tilde{\mathbf{p}}_{ij}(\mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}) Δp~ij(big,bia) ),通过测量值函数对零偏的偏导数(即雅可比)和零偏更新量 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 就可以近似的计算出修正量,获得新测量值的近似值,而不需要重新积分

如果优化过程中起始位姿发生了变化,则雅可比也相应更新。而零偏更新量 δ b i g \delta\mathbf{b}_{i}^{g} δbig δ b i a \delta\mathbf{b}_{i}^{a} δbia 本身就是待优化的变量之一,自然也是相应更新。从而测量值的修正量实现了自动更新。

以上就是IMU预积分避免重新积分,降低运算量的关键。


相关阅读