【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~ij​Exp(∂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=i∏j−1​Exp((ω~k​−big​)Δ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=i∏j−1​Exp((ω~k​−(big​+δbig​))Δt)=k=i∏j−1​Exp((ω~k​−big​)Δt−δbig​Δt)=1k=i∏j−1​Exp((ω~k​−big​)Δt)Exp(−Jrk​δbig​Δt)=2Exp((ω~i​−big​)Δt)Exp(−Jri​δbig​Δt)Exp((ω~i+1​−big​)Δt)Exp(−Jri+1​δbig​Δt)…=ΔR~i,i+1​Exp(−Jri​δbig​Δt)ΔR~i+1,i+2​Exp(−Jri+1​δbig​Δt)ΔR~i+2,i+3​…=3ΔR~i,i+1​ΔR~i+1,i+2​Exp(−ΔR~i+1,i+2T​Jr,i​δbig​Δt)Exp(−Jri+1​δbig​Δt)ΔR~i+2,i+3​…=4ΔR~ij​k=i∏j−1​Exp(−ΔR~k+1,jT​Jrk​δbig​Δt)≈ΔR~ij​Exp(−k=i∑j−1​ΔR~k+1,jT​Jrk​Δ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​((ω~k​−big​)Δ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=i∑j−1​ΔR~k+1,jT​Jrk​Δ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=i∑j−1​ΔR~k+1,jT​Jrk​Δt=−k=i∑j−2​(ΔR~k+1,jT​Jrk​Δt)−ΔR~j,jT​Jrj−1​Δt=1−k=i∑j−2​((ΔR~k+1,j−1​ΔR~j−1,j​)TJrk​Δt)−Jrj−1​Δt=−ΔR~j,j−1​k=i∑j−2​(ΔR~k+1,j−1T​Jrk​Δt)−Jrj−1​Δt=ΔR~j,j−1​∂big​∂ΔR~ij−1​​−Jrj−1​Δ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} δϕ ​ij−1​→δϕ ​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=i∑j−1​[ΔR~ik​⋅(a~k​−bia​)⋅Δ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=i∑j−1​[ΔR^ik​(a~k​−bia​−δbia​)Δt]=k=i∑j−1​ΔR~ik​Exp(∂big​∂ΔR~ik​​δbig​)(a~k​−bia​−δbia​)Δt=1k=i∑j−1​ΔR~ik​(I+(∂big​∂ΔR~ik​​δbig​)∧)(a~k​−bia​−δbia​)Δt≈2Δv~ij​−k=i∑j−1​ΔR~ik​Δtδbia​−k=i∑j−1​ΔR~ik​(a~k​−bia​)∧∂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=i∑j−1​ΔR~ik​Δtδbia​−k=i∑j−1​ΔR~ik​(a~k​−bia​)∧∂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~ij​​∂bia​∂Δv~ij​​​=−k=i∑j−1​ΔR~ik​(a~k​−bia​)∧∂big​∂ΔR~ik​​Δt=1∂big​∂Δv~ij−1​​−(ΔR~ij−1​(a~j−1​−bia​)∧∂big​∂ΔR~ij−1​​Δt)=−k=i∑j−1​ΔR~ik​Δt=2∂bia​∂Δv~ij−1​​−ΔR~ij−1​Δt​

其中1、2处直接进行加项拆分即可完成推导。这和前文 δ v i j − 1 → δ v i j \delta\mathbf{v}_{i j-1}\rightarrow\delta\mathbf{v}_{i j} δvij−1​→δ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=i∑j−1​[Δv~ik​Δt+21​ΔR~ik​⋅(a~k​−bia​)Δ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=i∑j−1​[Δv^ik​Δt+21​ΔR^ik​⋅(a~k​−bia​−δbia​)Δt2]=1k=i∑j−1​[(Δv~ik​+∂bia​∂Δv~ik​​δbia​+∂big​∂Δv~ik​​δbig​)Δt+21​ΔR~ik​(I+(∂big​∂ΔR~ik​​δbig​)∧)(a~k​−bia​−δbia​)Δt2]=2Δp~​ij​+k=i∑j−1​[∂bia​∂Δv~ik​​Δt−21​ΔR~ik​Δt2]δbia​+k=i∑j−1​[∂big​∂Δv~ik​​Δt−21​ΔR~ik​(a~k​−bia​)∧∂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=i∑j−1​[∂bia​∂Δv~ik​​Δt−21​ΔR~ik​Δt2]δbia​+k=i∑j−1​[∂big​∂Δv~ik​​Δt−21​ΔR~ik​(a~k​−bia​)∧∂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~​ij​​∂bia​∂Δp~​ij​​​=k=i∑j−1​[∂big​∂Δv~ik​​Δt−21​ΔR~ik​(a~k​−bia​)∧∂big​∂ΔR~ik​​Δt2]=1∂big​∂Δp~​ij−1​​+[∂big​∂Δv~ij−1​​Δt−21​ΔR~ij−1​(a~j−1​−bia​)∧∂big​∂ΔR~ij−1​​Δt2]=k=i∑j−1​[∂bia​∂Δv~ik​​Δt−21​ΔR~ik​Δt2]=2∂bia​∂Δp~​ij−1​​+[∂bia​∂Δv~ij−1​​Δt−21​ΔR~ij−1​Δt2]​

其中1、2处直接进行加项拆分即可完成推导。这和前文 δ p i j − 1 → δ p i j \delta\mathbf{p}_{i j-1}\rightarrow\delta\mathbf{p}_{i j} δpij−1​→δ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预积分避免重新积分,降低运算量的关键。


相关阅读