VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导
文章目录
- VIO第3讲:基于优化的IMU与视觉信息融合之预积分残差雅可比推导
- 4 IMU 预积分残差的雅克比
- 4.1 预积分残差
- 4.2 残差对两个关键帧i、j状态量的雅可比
- ① 速度误差 r v r_{v} rv对`i`时刻状态量雅可比
- <1> 位移p
- <2> 旋转q
- <3> 速度v
- <4> 加速度偏置
- <5> 角速度偏置
- ② 角度误差 r q r_{q} rq对`i`时刻状态量雅可比
- <1> 位移p
- <2> 旋转q
- <3> 速度v
- <4> 角速度偏置
- <5> 加速度偏置
- ④ 总之还有很多,可以参考崔华坤推导,后续有时间再补充
???
4 IMU 预积分残差的雅克比
4.1 预积分残差
e B ( x i , x j ) = [ r p r q r v r b a r b g ] = [ q b i w ( p w b j − p w b i − v i w Δ t + 1 2 g w Δ t 2 ) − α b i b j 2 [ q b j b i ⊗ ( q b i w ⊗ q w b j ) ] x y z q b i w ( v j w − v i w + g w Δ t ) − β b i b j b j a − b i a b j g − b i g ] 15 × 1 \mathbf{e}_B(x_i,x_j)=\begin{bmatrix}\mathbf{r}_p\\\mathbf{r}_q\\\mathbf{r}_v\\\mathbf{r}_{ba}\\\mathbf{r}_{bg}\end{bmatrix}=\begin{bmatrix}\mathbf{q}_{b_iw}(\mathbf{p}_{wb_j}-\mathbf{p}_{wb_i}-\mathbf{v}_i^w\Delta t+\frac12\mathbf{g}^w\Delta t^2)-\mathbf{\alpha}_{b_ib_j}\\2[\mathbf{q}_{b_jb_i}\otimes(\mathbf{q}_{b_iw}\otimes\mathbf{q}_{wb_j})]_{xyz}\\\mathbf{q}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)-\boldsymbol{\beta}_{b_ib_j}\\\mathbf{b}_j^a-\mathbf{b}_i^a\\\mathbf{b}_j^g-\mathbf{b}_i^g\end{bmatrix}_{15\times1} eB(xi,xj)= rprqrvrbarbg = qbiw(pwbj−pwbi−viwΔt+21gwΔt2)−αbibj2[qbjbi⊗(qbiw⊗qwbj)]xyzqbiw(vjw−viw+gwΔt)−βbibjbja−biabjg−big 15×1
4.2 残差对两个关键帧i、j状态量的雅可比
对于状态量的雅可比,是比较好计算的,但对于偏差较为复杂
因为 i
时刻的 bias
相关的预积分计算是通过迭代一步一步累计递推的,可以算但是太复杂。所以对于预积分量直接在 i
时刻的 bias
附近用一阶泰勒展开来近似,而不用真的去迭代计算。
α b i b j = α b i b j + J b i a α δ b i a + J b i g α δ b i g β b i b j = β b i b j + J b i a β δ b i a + J b i g β δ b i g q b i b j = q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] \begin{aligned} &\boldsymbol{\alpha}_{b_{i}b_{j}} =\boldsymbol{\alpha}_{b_ib_j}+\mathbf{J}_{b_i^a}^\alpha\delta\mathbf{b}_i^a+\mathbf{J}_{b_i^g}^\alpha\delta\mathbf{b}_i^g \\ &\beta_{b_{i}b_{j}} =\beta_{b_ib_j}+\mathbf{J}_{b_i^a}^\beta\delta\mathbf{b}_i^a+\mathbf{J}_{b_i^g}^\beta\delta\mathbf{b}_i^g \\ &\mathbf{q}_{b_{i}}b_{j} =\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix} \end{aligned} αbibj=αbibj+Jbiaαδbia+Jbigαδbigβbibj=βbibj+Jbiaβδbia+Jbigβδbigqbibj=qbibj⊗[121Jbigqδbig]
下面式子表示了预积分量对i
时刻的bias
的导数
J b i a α = ∂ α b i b j ∂ δ b i a , J b i g α = ∂ α b i b j ∂ δ b i g , J b i a β = ∂ β b i b j ∂ δ b i a , J b i g β = ∂ β b i b j ∂ δ b i g , J b i g q = q b i b j ∂ b i g \begin{aligned}\mathbf{J}_{b_i^a}^\alpha=\frac{\partial\alpha_{b_ib_j}}{\partial\delta\mathbf{b}_i^a},\mathbf{J}_{b_i^g}^\alpha=\frac{\partial\alpha_{b_ib_j}}{\partial\delta\mathbf{b}_i^g},\mathbf{J}_{b_i^a}^\beta=\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^a},\mathbf{J}_{b_i^g}^\beta=\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^g},\mathbf{J}_{b_i^g}^q=\frac{\mathbf{q}_{b_ib_j}}{\partial\mathbf{b}_i^g}\end{aligned} Jbiaα=∂δbia∂αbibj,Jbigα=∂δbig∂αbibj,Jbiaβ=∂δbia∂βbibj,Jbigβ=∂δbig∂βbibj,Jbigq=∂bigqbibj
这些雅可比可以通过预积分中协方差传递公式进行一步步递推
J k + 1 = F J k \mathbf{J}_{k+1}=\mathbf{F}\mathbf{J}_k Jk+1=FJk
由于 r p r_{p} rp和 r v r_{v} rv的误差形式很相近,对各状态量求导的 Jacobian 形式也很相似,所以这里只对 r v r_{v} rv的推导进行详细介绍。
① 速度误差 r v r_{v} rv对i
时刻状态量雅可比
<1> 位移p
∂ r v ∂ δ p b i b i ′ = 0 \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{p}_{{b_ib_i}^{\prime}}}=\mathbf{0} ∂δpbibi′∂rv=0
<2> 旋转q
注意这里是四元数,四元素的导数等价于乘以一个微小的四元数,这些推导都可以在那个专门讲四元数的那个pdf
里面找到!
∂ r v ∂ δ θ b i b i ′ = ∂ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) − 1 ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ ( R w b i exp ( [ δ θ b i b i ′ ] × ) ) − 1 ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ exp ( [ − δ θ b i b i ′ ] × ) R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ \begin{aligned} \frac{\partial\mathbf{r}_v}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =\frac{\partial(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^{-1}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial(\mathbf{R}_{wb_i}\exp([\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times))^{-1}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial\exp([-\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_{\times})\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \end{aligned} ∂δθbibi′∂rv=∂δθbibi′∂(qwbi⊗[121δθbibi′])−1(vjw−viw+gwΔt)=∂δθbibi′∂(Rwbiexp([δθbibi′]×))−1(vjw−viw+gwΔt)=∂δθbibi′∂exp([−δθbibi′]×)Rbiw(vjw−viw+gwΔt)
这里实际上还是转为了相应的李代数,这样子好求导!
∂ r v ∂ δ θ b i b i ′ = ∂ ( I − [ δ θ b i b i ′ ] × ) R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ − [ δ θ b i b i ′ ] × R b i w ( v j w − v i w + g w Δ t ) ∂ δ θ b i b i ′ = ∂ [ R b i w ( v j w − v i w + g w Δ t ] × ) δ θ b i b i ′ ∂ δ θ b i b i ′ = [ R b i w ( v j w − v i w + g w Δ t ) ] × \begin{aligned} \frac{\partial\mathbf{r}_{v}}{\partial\delta\boldsymbol{\theta}_{b_{i}b_{i}^{\prime}}}& =\frac{\partial(\mathbf{I}-[\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times)\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-[\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}]_\times\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t)}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial[\mathbf{R}_{b_iw}(\mathbf{v}_j^w-\mathbf{v}_i^w+\mathbf{g}^w\Delta t]_\times)\delta\boldsymbol{\theta}_{b_ib_i^\prime}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^\prime}} \\ &=[\mathbf{R}_{b_{i}w}(\mathbf{v}_{j}^{w}-\mathbf{v}_{i}^{w}+\mathbf{g}^{w}\Delta t)]_{\times} \end{aligned} ∂δθbibi′∂rv=∂δθbibi′∂(I−[δθbibi′]×)Rbiw(vjw−viw+gwΔt)=∂δθbibi′∂−[δθbibi′]×Rbiw(vjw−viw+gwΔt)=∂δθbibi′∂[Rbiw(vjw−viw+gwΔt]×)δθbibi′=[Rbiw(vjw−viw+gwΔt)]×
<3> 速度v
∂ r v ∂ δ v i w = − R b i w \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{v}_i^w}=-\mathbf{R}_{b_iw} ∂δviw∂rv=−Rbiw
<4> 加速度偏置
注意 bias
量只和预积分 β
有关
∂ r v ∂ δ b i a = − ∂ β b i b j ∂ δ b i a = − J b i a β \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{b}_i^a}=-\frac{\partial\beta_{b_ib_j}}{\partial\delta\mathbf{b}_i^a}=-\mathbf{J}_{b_i^a}^\beta ∂δbia∂rv=−∂δbia∂βbibj=−Jbiaβ
<5> 角速度偏置
速度中没有角速度这种分量,导数是0
② 角度误差 r q r_{q} rq对i
时刻状态量雅可比
<1> 位移p
∂ r q ∂ δ p b i b i ′ = 0 \frac{\partial\mathbf{r}_q}{\partial\delta\mathbf{p}_{b_i}b_i^{\prime}}=\mathbf{0} ∂δpbibi′∂rq=0
<2> 旋转q
角标xyz
表示四元数的虚部,*表示四元数的逆
∂ r q ∂ δ θ b i b i ′ = ∂ 2 [ q b j b i ⊗ ( q b i w ⊗ q w b j ) ] x y z ∂ δ θ b i b i ′ = ∂ 2 [ q b i b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ∗ ⊗ q w b j ] x y z ∂ δ θ b i b i ′ = ∂ − 2 [ ( q b i b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ∗ ⊗ q w b j ) ∗ ] x y z ∂ δ θ b i b i ′ = ∂ − 2 [ q w b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ⊗ q b i b j ] x y z ∂ δ θ b i b i ′ \begin{aligned} \frac{\partial\mathbf{r}_q}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =\frac{\partial2[\mathbf{q}_{b_jb_i}\otimes(\mathbf{q}_{b_iw}\otimes\mathbf{q}_{wb_j})]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial2[\mathbf{q}_{b_ib_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^*\otimes\mathbf{q}_{wb_j}]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-2[(\mathbf{q}_{b_ib_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})^*\otimes\mathbf{q}_{wb_j})^*]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=\frac{\partial-2[\mathbf{q}_{wb_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix})\otimes\mathbf{q}_{b_ib_j}]_{xyz}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \end{aligned} ∂δθbibi′∂rq=∂δθbibi′∂2[qbjbi⊗(qbiw⊗qwbj)]xyz=∂δθbibi′∂2[qbibj∗⊗(qwbi⊗[121δθbibi′])∗⊗qwbj]xyz=∂δθbibi′∂−2[(qbibj∗⊗(qwbi⊗[121δθbibi′])∗⊗qwbj)∗]xyz=∂δθbibi′∂−2[qwbj∗⊗(qwbi⊗[121δθbibi′])⊗qbibj]xyz
这里实际上还是转为了相应的李代数,这样子好求导!
∂ r q ∂ δ θ b i b i ′ = − 2 [ 0 I ] ∂ q w b j ∗ ⊗ ( q w b i ⊗ [ 1 1 2 δ θ b i b i ′ ] ) ⊗ q b i b j ∂ δ θ b i b i ′ = − 2 [ 0 I ] ∂ [ q w b j ∗ ⊗ q w b i ] L [ q b i b j ] R [ 1 1 2 δ θ b i b i ′ ] ∂ δ θ b i b i ′ = − 2 [ 0 I ] [ q w b j ∗ ⊗ q w b i ] L [ q b i b j ] R [ 0 1 2 I ] \begin{aligned} \frac{\partial\mathbf{r}_q}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}}& =-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}\frac{\partial\mathbf{q}_{wb_j}^*\otimes(\mathbf{q}_{wb_i}\otimes\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^\prime}\end{bmatrix})\otimes\mathbf{q}_{b_ib_j}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^\prime}} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}\frac{\partial[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}]_L[\mathbf{q}_{b_ib_j}]_R\begin{bmatrix}1\\\frac12\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}\end{bmatrix}}{\partial\delta\boldsymbol{\theta}_{b_ib_i^{\prime}}} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}]_L[\mathbf{q}_{b_ib_j}]_R\begin{bmatrix}\mathbf{0}\\\frac12\mathbf{I}\end{bmatrix} \end{aligned} ∂δθbibi′∂rq=−2[0I]∂δθbibi′∂qwbj∗⊗(qwbi⊗[121δθbibi′])⊗qbibj=−2[0I]∂δθbibi′∂[qwbj∗⊗qwbi]L[qbibj]R[121δθbibi′]=−2[0I][qwbj∗⊗qwbi]L[qbibj]R[021I]
[ ⋅ ] L 和 [ ⋅ ] R [\cdot]_L\text{ 和 }[\cdot]_R [⋅]L 和 [⋅]R是四元数转为左/右旋转矩阵的算子,本质上是两个四元数乘法的不同表示!有的时候用L[q]
或R[q]
表示!
<3> 速度v
∂ r v ∂ δ v i w = 0 \frac{\partial\mathbf{r}_v}{\partial\delta\mathbf{v}_i^w}=0 ∂δviw∂rv=0
<4> 角速度偏置
注意 bias
量只和预积分 γ
有关
r q ∂ δ b i g = ∂ 2 [ ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ∗ ⊗ q w b i ∗ ⊗ q w b j ] x y z ∂ δ b i g = ∂ − 2 [ ( ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ∗ ⊗ q w b i ∗ ⊗ q w b j ) ∗ ] x y z ∂ δ b i g = ∂ − 2 [ q w b j ∗ ⊗ q w b i ⊗ ( q b i b j ⊗ [ 1 1 2 J b i g q δ b i g ] ) ] x y z ∂ δ b i g = − 2 [ 0 I ] [ q w b j ∗ ⊗ q w b i ⊗ q b i b j ] L [ 0 1 2 J b i g q ] \begin{aligned} \frac{\mathbf{r}_q}{\partial\delta\mathbf{b}_i^g}& =\frac{\partial2[(\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})^*\otimes\mathbf{q}_{wb_i}^*\otimes\mathbf{q}_{wb_j}]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=\frac{\partial-2[((\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})^*\otimes\mathbf{q}_{wb_i}^*\otimes\mathbf{q}_{wb_j})^*]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=\frac{\partial-2[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}\otimes(\mathbf{q}_{b_ib_j}\otimes\begin{bmatrix}1\\\frac12\mathbf{J}_{b_i^g}^q\delta\mathbf{b}_i^g\end{bmatrix})]_{xyz}}{\partial\delta\mathbf{b}_i^g} \\ &=-2\begin{bmatrix}\mathbf{0}&\mathbf{I}\end{bmatrix}[\mathbf{q}_{wb_j}^*\otimes\mathbf{q}_{wb_i}\otimes\mathbf{q}_{b_ib_j}]_L\begin{bmatrix}\mathbf{0}\\\frac12\mathbf{J}_{b_i^g}^q\end{bmatrix} \end{aligned} ∂δbigrq=∂δbig∂2[(qbibj⊗[121Jbigqδbig])∗⊗qwbi∗⊗qwbj]xyz=∂δbig∂−2[((qbibj⊗[121Jbigqδbig])∗⊗qwbi∗⊗qwbj)∗]xyz=∂δbig∂−2[qwbj∗⊗qwbi⊗(qbibj⊗[121Jbigqδbig])]xyz=−2[0I][qwbj∗⊗qwbi⊗qbibj]L[021Jbigq]
<5> 加速度偏置
角度中没有加速度这种分量,导数是0