【SLAM】IMU预积分的理解、手把手推导(3/4)
由于篇幅设置,IMU预积分分为4篇完成:
- 【SLAM】IMU预积分的理解、手把手推导(1/4):概要介绍
- 【SLAM】IMU预积分的理解、手把手推导(2/4):噪声分离、分布形式、递推形式
- 【SLAM】IMU预积分的理解、手把手推导(3/4):零偏更新后的速算
- 【SLAM】IMU预积分的理解、手把手推导(4/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=i∏j−1Exp((ω~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−1Exp((ω~k−(big+δbig))Δt)=k=i∏j−1Exp((ω~k−big)Δt−δbigΔt)=1k=i∏j−1Exp((ω~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+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=i∏j−1Exp(−ΔR~k+1,jTJrkδbigΔt)≈ΔR~ijExp(−k=i∑j−1Δ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((ω~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,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=i∑j−1ΔR~k+1,jTJrkΔt=−k=i∑j−2(ΔR~k+1,jTJrkΔt)−ΔR~j,jTJrj−1Δt=1−k=i∑j−2((ΔR~k+1,j−1ΔR~j−1,j)TJrkΔt)−Jrj−1Δt=−ΔR~j,j−1k=i∑j−2(ΔR~k+1,j−1TJrkΔ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~ikExp(∂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预积分避免重新积分,降低运算量的关键。