IMU预积分推导(一)

IMU Pre Integration

IMU预积分推导系列文章
IMU预积分推导(一)
IMU预积分推导(二)
IMU预积分推导(三)

1、预积分的引入

1.1、IMU积分

i i i时刻,系统的状态量为IMU相对世界坐标系的旋转矩阵,速度,位置和偏置
x i = [ R i , v i , p i , b g , i , b a , i ] T \mathbf{x}_{i}=[\mathbf{R}_{i},\mathbf{v}_{i},\mathbf{p}_{i},\mathbf{b}_{g,i},\mathbf{b}_{a,i}]^T xi=[Ri,vi,pi,bg,i,ba,i]T
在一次积分的基础上,对IMU数据进行二次积分,从 i i i时刻一直递推到与其相差较多时间步的 j j j时刻,即
R j = R i ∏ k = i j − 1 E x p ( ( ω ~ k − b g , k − η g d , k ) Δ t ) v j = v i + g Δ t i j + ∑ k = i j − 1 R k ( a ~ k − b a , k − η a d , k ) Δ t p j = p i + ∑ k = i j − 1 v k Δ t + 1 2 ∑ k = i j − 1 g Δ t 2 + 1 2 ∑ k = i j − 1 R k ( a ~ k − b a , k − η a d , k ) Δ t 2 \begin{align*} \mathbf{R}_{j}&=\mathbf{R}_{i}\prod_{k=i}^{j-1}\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,k}-\boldsymbol{\eta}_{gd,k})\Delta{t})\tag{1a}\\ \mathbf{v}_{j}&=\mathbf{v}_{i}+\mathbf{g}\Delta{t}_{ij}+\sum_{k=i}^{j-1}\mathbf{R}_{k}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k}-\boldsymbol{\eta}_{ad,k})\Delta{t}\tag{1b}\\ \mathbf{p}_{j}&=\mathbf{p}_{i}+\sum_{k=i}^{j-1}\mathbf{v}_k\Delta{t}+\frac{1}{2}\sum_{k=i}^{j-1}\mathbf{g}\Delta{t}^{2}+\frac{1}{2}\sum_{k=i}^{j-1}\mathbf{R}_{k}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k}-\boldsymbol{\eta}_{ad,k})\Delta{t}^{2}\tag{1c}\\ \end{align*} Rjvjpj=Rik=ij1Exp((ω~kbg,kηgd,k)Δt)=vi+gΔtij+k=ij1Rk(a~kba,kηad,k)Δt=pi+k=ij1vkΔt+21k=ij1gΔt2+21k=ij1Rk(a~kba,kηad,k)Δt2(1a)(1b)(1c)
其中 Δ t i j = ∑ k = i j − 1 Δ t \Delta{t}_{ij}=\sum_{k=i}^{j-1}\Delta{t} Δtij=k=ij1Δt

1.2、预积分定义

直接积分的缺点是,它描述的过程和状态量有关,即如果第 i i i时刻的状态量发生改变,则 i + 1 , ⋯   , j − 1 i+1,\cdots,j-1 i+1,,j1时刻的状态量也会发生改变,这时需要重新计算积分,这对于需要频繁进行优化,且对实时性要求高的系统来说是不可接受的。可以定义相对状态量,使其计算与第 i i i时刻状态量无关,该相对量称为预积分
Δ R i j = d e f R i T R j = ∏ k = i j − 1 E x p ( ( ω ~ k − b g , k − η g d , k ) Δ t ) Δ v i j = d e f R i T ( v j − v i − g Δ t i j ) = ∑ k = i j − 1 Δ R i k ( a ~ k − b a , k − η a d , k ) Δ t Δ p i j = d e f R i T ( p j − p i − v i Δ t i j − 1 2 Δ t i j 2 ) = ∑ k = i j − 1 [ Δ v i k Δ t + 1 2 Δ R i k ( a ~ k − b a , k − η a d , k ) Δ t 2 ] \begin{align*} \Delta\mathbf{R}_{ij}&\overset{\mathrm{def}}{=}\mathbf{R}_{i}^{T}\mathbf{R}_{j}=\prod_{k=i}^{j-1}\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,k}-\boldsymbol{\eta}_{gd,k})\Delta{t})\tag{2a}\\ \Delta\mathbf{v}_{ij}&\overset{\mathrm{def}}{=}\mathbf{R}_{i}^{T}(\mathbf{v}_{j}-\mathbf{v}_{i}-\mathbf{g}\Delta{t}_{ij})=\sum_{k=i}^{j-1}\Delta\mathbf{R}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k}-\boldsymbol{\eta}_{ad,k})\Delta{t}\tag{2b}\\ \Delta\mathbf{p}_{ij}&\overset{\mathrm{def}}{=}\mathbf{R}_{i}^{T}\left(\mathbf{p}_{j}-\mathbf{p}_{i}-\mathbf{v}_{i}\Delta{t}_{ij}-\frac{1}{2}\Delta{t}_{ij}^{2}\right)=\sum_{k=i}^{j-1}\left[\Delta\mathbf{v}_{ik}\Delta{t}+\frac{1}{2}\Delta\mathbf{R}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k}-\boldsymbol{\eta}_{ad,k})\Delta{t}^{2}\right]\tag{2c}\\ \end{align*} ΔRijΔvijΔpij=defRiTRj=k=ij1Exp((ω~kbg,kηgd,k)Δt)=defRiT(vjvigΔtij)=k=ij1ΔRik(a~kba,kηad,k)Δt=defRiT(pjpiviΔtij21Δtij2)=k=ij1[ΔvikΔt+21ΔRik(a~kba,kηad,k)Δt2](2a)(2b)(2c)
下面假设在相邻两个图像关键帧之间零偏是固定不变的,即满足
b g , k = b g , i = b g , i + 1 = ⋯ = b g , j − 1 b a , k = b a , i = b a , i + 1 = ⋯ = b a , j − 1 \begin{align*} \mathbf{b}_{g,k}&=\mathbf{b}_{g,i}=\mathbf{b}_{g,i+1}=\cdots=\mathbf{b}_{g,j-1}\\ \mathbf{b}_{a,k}&=\mathbf{b}_{a,i}=\mathbf{b}_{a,i+1}=\cdots=\mathbf{b}_{a,j-1} \end{align*} bg,kba,k=bg,i=bg,i+1==bg,j1=ba,i=ba,i+1==ba,j1

故在两帧之间,预积分状态 Δ x i j = [ Δ R i j , Δ v i j , Δ p i j ] \Delta\mathbf{x}_{ij}=[\Delta\mathbf{R}_{ij},\Delta\mathbf{v}_{ij},\Delta\mathbf{p}_{ij}] Δxij=[ΔRij,Δvij,Δpij]

2、噪声分离

现在希望将陀螺仪测量噪声 η a d , k \boldsymbol{\eta}_{ad,k} ηad,k和加速度计测量噪声 η g d , k \boldsymbol{\eta}_{gd,k} ηgd,k分离出去。

定义仅由IMU数据计算得到的与噪声无关的预积分测量值 Δ x ~ i j = [ Δ R ~ i j , Δ v ~ i j , Δ p ~ i j ] \Delta\tilde{\mathbf{x}}_{ij}=[\Delta\tilde{\mathbf{R}}_{ij},\Delta\tilde{\mathbf{v}}_{ij},\Delta\tilde{\mathbf{p}}_{ij}] Δx~ij=[ΔR~ij,Δv~ij,Δp~ij],其中 Δ R ~ i j , Δ v ~ i j , Δ p ~ i j \Delta\tilde{\mathbf{R}}_{ij},\Delta\tilde{\mathbf{v}}_{ij},\Delta\tilde{\mathbf{p}}_{ij} ΔR~ij,Δv~ij,Δp~ij分别是预积分旋转测量值,预积分速度测量值,预积分位移测量值,三者形式如下
Δ R ~ i j = d e f ∏ k = i j − 1 E x p ( ( ω ~ k − b g , k ) Δ t ) Δ v ~ i j = d e f ∑ k = i j − 1 Δ R ~ i k ( a ~ k − b a , k ) Δ t Δ p ~ i j = d e f ∑ k = i j − 1 [ Δ v ~ i k Δ t + 1 2 Δ R ~ i k ( a ~ k − b a , k ) Δ t 2 ] \begin{align*} \Delta\tilde{\mathbf{R}}_{ij}&\overset{\mathrm{def}}{=}\prod_{k=i}^{j-1}\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,k})\Delta{t})\tag{3a}\\ \Delta\tilde{\mathbf{v}}_{ij}&\overset{\mathrm{def}}{=}\sum_{k=i}^{j-1}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k})\Delta{t}\tag{3b}\\ \Delta\tilde{\mathbf{p}}_{ij}&\overset{\mathrm{def}}{=}\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{v}}_{ik}\Delta{t}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k})\Delta{t}^{2}\right]\tag{3c} \end{align*} ΔR~ijΔv~ijΔp~ij=defk=ij1Exp((ω~kbg,k)Δt)=defk=ij1ΔR~ik(a~kba,k)Δt=defk=ij1[Δv~ikΔt+21ΔR~ik(a~kba,k)Δt2](3a)(3b)(3c)
记预积分误差为 δ ( Δ x i j ) = [ δ ( Δ ϕ i j ) T , δ ( Δ v i j ) T , δ ( Δ p i j ) T ] T \delta(\Delta\mathbf{x}_{ij})=[\delta(\Delta\boldsymbol{\phi}_{ij})^{T},\delta(\Delta\mathbf{\mathbf{v}}_{ij})^{T},\delta(\Delta\mathbf{\mathbf{p}}_{ij})^{T}]^{T} δ(Δxij)=[δ(Δϕij)T,δ(Δvij)T,δ(Δpij)T]T,其中 δ ( Δ ϕ i j ) , δ ( Δ v i j ) , δ ( Δ p i j ) \delta(\Delta\boldsymbol{\phi}_{ij}),\delta(\Delta\mathbf{\mathbf{v}}_{ij}),\delta(\Delta\mathbf{\mathbf{p}}_{ij}) δ(Δϕij),δ(Δvij),δ(Δpij)分别是预积分旋转误差,预积分速度误差,预积分位移误差。为简便起见,后文将上述三个值分别简记为 δ ϕ i j , δ v i j , δ p i j \delta\boldsymbol{\phi}_{ij},\delta\mathbf{\mathbf{v}}_{ij},\delta\mathbf{\mathbf{p}}_{ij} δϕij,δvij,δpij。预积分状态变量真值,预积分测量值,预积分误差之间应该满足 Δ x i j = Δ x ~ i j ⊕ ( − δ ( Δ x i j ) ) \Delta\mathbf{x}_{ij}=\Delta\tilde{\mathbf{x}}_{ij}\oplus(-\delta(\Delta\mathbf{x}_{ij})) Δxij=Δx~ij(δ(Δxij)),该关系也是预积分误差的定义,其中 ⊖ \ominus 表示广义减法,即
Δ R i j = Δ R ~ i j E x p ( − δ ϕ i j ) Δ v i j = Δ v ~ i j − δ v i j Δ p i j = Δ p ~ i j − δ p i j \begin{align*} \Delta\mathbf{R}_{ij}&=\Delta\tilde{\mathbf{R}}_{ij}\mathrm{Exp}(-\delta\boldsymbol{\phi}_{ij})\tag{4a}\\ \Delta\mathbf{v}_{ij}&=\Delta\tilde{\mathbf{v}}_{ij}-\delta\mathbf{\mathbf{v}}_{ij}\tag{4b}\\ \Delta\mathbf{p}_{ij}&=\Delta\tilde{\mathbf{p}}_{ij}-\delta\mathbf{\mathbf{p}}_{ij}\tag{4c}\\ \end{align*} ΔRijΔvijΔpij=ΔR~ijExp(δϕij)=Δv~ijδvij=Δp~ijδpij(4a)(4b)(4c)
特别注意, ( 1 ) , ( 2 ) , ( 3 ) , ( 4 ) (1),(2),(3),(4) (1),(2),(3),(4)其中求和号和求积号应该按照§2来理解, ( 1 ) (1) (1)中的下标可以用任意满足 i ⩽ k ⩽ j i\leqslant{k}\leqslant{j} ikj k k k代替, ( 2 ) , ( 3 ) , ( 4 ) (2),(3),(4) (2),(3),(4)中的下标可以用任意满足 i ⩽ m ⩽ n ⩽ j i\leqslant{m}\leqslant{n}\leqslant{j} imnj m , n m,n m,n代替,计算方式不变。

下面推导满足上式的预积分误差表达式

2.1、预积分旋转误差表达式
Δ R i j = ∏ k = i j − 1 E x p ( ( ω ~ k − b g , i − η g d , k ) Δ t ) ≈ ∏ k = i j − 1 [ E x p ( ( ω ~ k − b g , i ) Δ t ) E x p ( − J r , k η g d , k Δ t ) ] = E x p ( ( ω ~ i − b g , i ) Δ t ) E x p ( − J r , i η g d , i Δ t ) E x p ( ( ω ~ i + 1 − b g , i + 1 ) Δ t ) E x p ( − J r , i + 1 η g d , i + 1 Δ t ) ⋯ = Δ R ~ i , i + 1 E x p ( − J r , i η g d , i Δ t ) Δ R ~ i + 1 , i + 2 ⏟ ≈ Δ R ~ i + 1 , i + 2 E x p ( − Δ R ~ i + 1 , i + 2 T J r , i η g d , i Δ t ) E x p ( − J r , i + 1 η g d , i + 1 Δ t ) ⋯ ≈ Δ R ~ i , i + 2 E x p ( − Δ R ~ i + 1 , i + 2 T J r , i η g d , i Δ t ) E x p ( − J r , i + 1 η g d , i + 1 Δ t ) Δ R ~ i + 2 , i + 3 ⋯ = Δ R ~ i j ∏ k = i j − 1 E x p ( − Δ R ~ k + 1 , j T J r , k η g d , k Δ t ) \begin{align*} \Delta\mathbf{R}_{ij} &=\prod_{k=i}^{j-1}\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,i}-\boldsymbol{\eta}_{gd,k})\Delta{t})\\ &\approx\prod_{k=i}^{j-1}[\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,i})\Delta{t})\mathrm{Exp}(-\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t})]\\ &=\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{i}-\mathbf{b}_{g,i})\Delta{t})\mathrm{Exp}(-\mathbf{J}_{r,i}\boldsymbol{\eta}_{gd,i}\Delta{t})\mathrm{Exp}((\tilde{\boldsymbol{\omega}}_{i+1}-\mathbf{b}_{g,i+1})\Delta{t})\mathrm{Exp}(-\mathbf{J}_{r,i+1}\boldsymbol{\eta}_{gd,i+1}\Delta{t})\cdots\\ &=\Delta\tilde{\mathbf{R}}_{i,i+1}\underbrace{\mathrm{Exp}(-\mathbf{J}_{r,i}\boldsymbol{\eta}_{gd,i}\Delta{t})\Delta\tilde{\mathbf{R}}_{i+1,i+2}}_{\approx\Delta\tilde{\mathbf{R}}_{i+1,i+2}\mathrm{Exp}(-\Delta\tilde{\mathbf{R}}_{i+1,i+2}^{T}\mathbf{J}_{r,i}\boldsymbol{\eta}_{gd,i}\Delta{t})}\mathrm{Exp}(-\mathbf{J}_{r,i+1}\boldsymbol{\eta}_{gd,i+1}\Delta{t})\cdots\\ &\approx\Delta\tilde{\mathbf{R}}_{i,i+2}\mathrm{Exp}(-\Delta\tilde{\mathbf{R}}_{i+1,i+2}^{T}\mathbf{J}_{r,i}\boldsymbol{\eta}_{gd,i}\Delta{t})\mathrm{Exp}(-\mathbf{J}_{r,i+1}\boldsymbol{\eta}_{gd,i+1}\Delta{t})\Delta\tilde{\mathbf{R}}_{i+2,i+3}\cdots\\ &=\Delta\tilde{\mathbf{R}}_{ij}\prod_{k=i}^{j-1}\mathrm{Exp}(-\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t})\tag{5} \end{align*} ΔRij=k=ij1Exp((ω~kbg,iηgd,k)Δt)k=ij1[Exp((ω~kbg,i)Δt)Exp(Jr,kηgd,kΔt)]=Exp((ω~ibg,i)Δt)Exp(Jr,iηgd,iΔt)Exp((ω~i+1bg,i+1)Δt)Exp(Jr,i+1ηgd,i+1Δt)=ΔR~i,i+1ΔR~i+1,i+2Exp(ΔR~i+1,i+2TJr,iηgd,iΔt) Exp(Jr,iηgd,iΔt)ΔR~i+1,i+2Exp(Jr,i+1ηgd,i+1Δt)ΔR~i,i+2Exp(ΔR~i+1,i+2TJr,iηgd,iΔt)Exp(Jr,i+1ηgd,i+1Δt)ΔR~i+2,i+3=ΔR~ijk=ij1Exp(ΔR~k+1,jTJr,kηgd,kΔt)(5)
其中其中第一行推至第二行应利用了BCH近似,右雅可比采取简化写法,省略对应的向量,即记 J r , k = J r ( ( ω ~ k − b g , i ) Δ t ) \mathbf{J}_{r,k}=\mathbf{J}_{r}((\tilde{\boldsymbol{\omega}}_{k}-\mathbf{b}_{g,i})\Delta{t}) Jr,k=Jr((ω~kbg,i)Δt)。第四行推导至第五行用到了 ( A 1 ) \mathrm{(A1)} (A1)

比较 ( 4 a ) \mathrm{(4a)} (4a) ( 5 ) (5) (5),可以得到
δ ϕ i j = − L o g ( ∏ k = i j − 1 E x p ( − Δ R ~ k + 1 , j T J r , k η g d , k Δ t ) ) (6) \delta\boldsymbol{\phi}_{ij}=-\mathrm{Log}(\prod_{k=i}^{j-1}\mathrm{Exp}(-\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t}))\tag{6} δϕij=Log(k=ij1Exp(ΔR~k+1,jTJr,kηgd,kΔt))(6)
2.2、预积分速度误差表达式
Δ v i j = ∑ k = i j − 1 Δ R i k ( a ~ k − b a , i − η a d , k ) Δ t = ∑ k = i j − 1 Δ R ~ i k E x p ( − δ ϕ i k ) ( a ~ k − b a , i − η a d , k ) Δ t ≈ ∑ k = i j − 1 Δ R ~ i k ( I − δ ϕ i k ∧ ) ( a ~ k − b a , i − η a d , k ) Δ t ≈ ∑ k = i j − 1 [ Δ R ~ i k ( a ~ k − b a , k ) Δ t + Δ R ~ i k ( a ~ k − b a , k ) ∧ δ ϕ i k Δ t − Δ R ~ i k η a d , k Δ t ] = Δ v ~ i j + ∑ k = i j − 1 [ Δ R ~ i k ( a ~ k − b a , i ) ∧ δ ϕ i k Δ t − Δ R ~ i k η a d , k Δ t ] \begin{align*} \Delta\mathbf{v}_{ij}&=\sum_{k=i}^{j-1}\Delta\mathbf{R}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i}-\boldsymbol{\eta}_{ad,k})\Delta{t}\\ &=\sum_{k=i}^{j-1}\Delta\tilde{\mathbf{R}}_{ik}\mathrm{Exp}(-\delta\boldsymbol{\phi}_{ik})(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i}-\boldsymbol{\eta}_{ad,k})\Delta{t}\\ &\approx\sum_{k=i}^{j-1}\Delta\tilde{\mathbf{R}}_{ik}(\mathbf{I}-\delta\boldsymbol{\phi}_{ik}^{\wedge})(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i}-\boldsymbol{\eta}_{ad,k})\Delta{t}\\ &\approx\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k})\Delta{t}+\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,k})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}-\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}\right]\\ &=\Delta\tilde{\mathbf{v}}_{ij}+\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}-\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}\right]\tag{7} \end{align*} Δvij=k=ij1ΔRik(a~kba,iηad,k)Δt=k=ij1ΔR~ikExp(δϕik)(a~kba,iηad,k)Δtk=ij1ΔR~ik(Iδϕik)(a~kba,iηad,k)Δtk=ij1[ΔR~ik(a~kba,k)Δt+ΔR~ik(a~kba,k)δϕikΔtΔR~ikηad,kΔt]=Δv~ij+k=ij1[ΔR~ik(a~kba,i)δϕikΔtΔR~ikηad,kΔt](7)
第二行推导至第三行是根据 ( 6 ) (6) (6),考虑到 δ ϕ i j \delta\boldsymbol{\phi}_{ij} δϕij比较小,利用矩阵指数函数的一阶近似化简。第三行推导至第四行运用了外积的反交换律,并舍去含 δ ϕ i j ∧ η a d , k \delta\boldsymbol{\phi}_{ij}^{\wedge}\boldsymbol{\eta}_{ad,k} δϕijηad,k的高阶小项。

比较 ( 4 b ) \mathrm{(4b)} (4b) ( 7 ) (7) (7),可以得到
δ v i j = ∑ k = i j − 1 [ Δ R ~ i j η a d , k Δ t − Δ R ~ i j ( a ~ k − b a , i ) ∧ δ ϕ i j Δ t ] (8) \delta\mathbf{\mathbf{v}}_{ij}=\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{R}}_{ij}\boldsymbol{\eta}_{ad,k}\Delta{t}-\Delta\tilde{\mathbf{R}}_{ij}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ij}\Delta{t}\right]\tag{8} δvij=k=ij1[ΔR~ijηad,kΔtΔR~ij(a~kba,i)δϕijΔt](8)
2.3、预积分位移误差表达式
Δ p i j = ∑ k = i j − 1 [ Δ v i k Δ t + 1 2 Δ R i k ( a ~ k − b a , i − η a d , k ) Δ t 2 ] = ∑ k = i j − 1 [ ( Δ v ~ i k − δ v i k ) Δ t + 1 2 Δ R ~ i k ( I − δ ϕ i k ∧ ) ( a ~ k − b a , i − η a d , k ) Δ t 2 ] ≈ ∑ k = i j − 1 [ ( Δ v ~ i k − δ v i k ) Δ t + 1 2 Δ R ~ i k ( I − δ ϕ i k ∧ ) ( a ~ k − b a , i ) Δ t 2 − 1 2 Δ R ~ i k η a d , k Δ t 2 ] = ∑ k = i j − 1 [ Δ v ~ i k Δ t + 1 2 Δ R ~ i k ( a ~ k − b a , i ) Δ t 2 − δ v i k Δ t + 1 2 Δ R ~ i k ( a ~ k − b a , i ) ∧ δ ϕ i k Δ t 2 − 1 2 Δ R ~ i k η a d , k Δ t 2 ] \begin{align*} \Delta\mathbf{p}_{ij}&=\sum_{k=i}^{j-1}\left[\Delta\mathbf{v}_{ik}\Delta{t}+\frac{1}{2}\Delta\mathbf{R}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i}-\boldsymbol{\eta}_{ad,k})\Delta{t}^{2}\right]\\ &=\sum_{k=i}^{j-1}\left[(\Delta\tilde{\mathbf{v}}_{ik}-\delta\mathbf{\mathbf{v}}_{ik})\Delta{t}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\mathbf{I}-\delta\boldsymbol{\phi}_{ik}^{\wedge})(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i}-\boldsymbol{\eta}_{ad,k})\Delta{t}^{2}\right]\\ &\approx\sum_{k=i}^{j-1}\left[(\Delta\tilde{\mathbf{v}}_{ik}-\delta\mathbf{\mathbf{v}}_{ik})\Delta{t}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\mathbf{I}-\delta\boldsymbol{\phi}_{ik}^{\wedge})(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})\Delta{t}^{2}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}^{2}\right]\\ &=\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{v}}_{ik}\Delta{t}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})\Delta{t}^{2}-\delta\mathbf{\mathbf{v}}_{ik}\Delta{t}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}^{2}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}^{2}\right]\tag{9} \end{align*} Δpij=k=ij1[ΔvikΔt+21ΔRik(a~kba,iηad,k)Δt2]=k=ij1[(Δv~ikδvik)Δt+21ΔR~ik(Iδϕik)(a~kba,iηad,k)Δt2]k=ij1[(Δv~ikδvik)Δt+21ΔR~ik(Iδϕik)(a~kba,i)Δt221ΔR~ikηad,kΔt2]=k=ij1[Δv~ikΔt+21ΔR~ik(a~kba,i)Δt2δvikΔt+21ΔR~ik(a~kba,i)δϕikΔt221ΔR~ikηad,kΔt2](9)
比较 ( 4 c ) \mathrm{(4c)} (4c) ( 9 ) (9) (9),可以得到
δ p i j = ∑ k = i j − 1 [ δ v i k Δ t − 1 2 Δ R ~ i k ( a ~ k − b a , i ) ∧ δ ϕ i k Δ t 2 + 1 2 Δ R ~ i k η a d , k Δ t 2 ] (10) \delta\mathbf{\mathbf{p}}_{ij}=\sum_{k=i}^{j-1}\left[\delta\mathbf{\mathbf{v}}_{ik}\Delta{t}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}^{2}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}^{2}\right]\tag{10} δpij=k=ij1[δvikΔt21ΔR~ik(a~kba,i)δϕikΔt2+21ΔR~ikηad,kΔt2](10)

3、误差传播

为避免大量的重复计算,下面考虑预积分误差 δ ( Δ x i , j ) \delta(\Delta\mathbf{x}_{i,j}) δ(Δxi,j) δ ( Δ x i , j − 1 ) \delta(\Delta\mathbf{x}_{i,j-1}) δ(Δxi,j1)之间的递推关系

3.1、预积分旋转误差传播

考虑到预积分旋转误差表达式 ( 5 ) (5) (5)较为复杂,不方便递推,下面对其进行线性化。记 ξ k = Δ R ~ k + 1 , j T J r , k η g d , k Δ t \boldsymbol{\xi}_{k}=\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t} ξk=ΔR~k+1,jTJr,kηgd,kΔt,则
δ ϕ i j = − L o g ( ∏ k = i j − 1 E x p ( − ξ k ) ) = − L o g ( E x p ( − ξ i ) E x p ( − ξ i + 1 ) ⋯ E x p ( − ξ j − 1 ) ) ≈ − L o g ( E x p ( − ξ i − J r − 1 ( − ξ i ) ξ i + 1 ) ⋯ E x p ( − ξ j − 1 ) ) ≈ − L o g ( E x p ( − ∑ k = i j − 1 ξ k ) ) = ∑ k = i j − 1 ξ k \begin{align*} \delta\boldsymbol{\phi}_{ij} &=-\mathrm{Log}(\prod_{k=i}^{j-1}\mathrm{Exp}(-\boldsymbol{\xi}_{k}))\\ &=-\mathrm{Log}(\mathrm{Exp}(-\boldsymbol{\xi}_{i})\mathrm{Exp}(-\boldsymbol{\xi}_{i+1})\cdots\mathrm{Exp}(-\boldsymbol{\xi}_{j-1}))\\ &\approx-\mathrm{Log}(\mathrm{Exp}(-\boldsymbol{\xi}_{i}-\mathbf{J}_{r}^{-1}(-\boldsymbol{\xi}_{i})\boldsymbol{\xi}_{i+1})\cdots\mathrm{Exp}(-\boldsymbol{\xi}_{j-1}))\\ &\approx-\mathrm{Log}(\mathrm{Exp}(-\sum_{k=i}^{j-1}\boldsymbol{\xi}_{k}))\\ &=\sum_{k=i}^{j-1}\boldsymbol{\xi}_{k} \end{align*} δϕij=Log(k=ij1Exp(ξk))=Log(Exp(ξi)Exp(ξi+1)Exp(ξj1))Log(Exp(ξiJr1(ξi)ξi+1)Exp(ξj1))Log(Exp(k=ij1ξk))=k=ij1ξk
其中第三行推导至第四行是考虑到 ξ k \boldsymbol{\xi}_{k} ξk为小量,其和仍为小量,因此每个右雅可比都接近单位阵。将 ξ k \boldsymbol{\xi}_{k} ξk的定义代回,得到
δ ϕ i j = ∑ k = i j − 1 Δ R ~ k + 1 , j T J r , k η g d , k Δ t (11) \delta\boldsymbol{\phi}_{ij}=\sum_{k=i}^{j-1}\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t}\tag{11} δϕij=k=ij1ΔR~k+1,jTJr,kηgd,kΔt(11)
j > i j>i j>i,则可将预积分旋转误差表达式 ( 11 ) (11) (11)写成递推形式
δ ϕ i j = ∑ k = i j − 1 Δ R ~ k + 1 , j T J r , k η g d , k Δ t = ∑ k = i j − 2 Δ R ~ k + 1 , j T ⏟ ( Δ R ~ k + 1 , j − 1 Δ R ~ j − 1 , j ) T J r , k η g d , k Δ t + Δ R ~ j , j T ⏟ I J r , j − 1 η g d , j − 1 Δ t = Δ R ~ j − 1 , j T ∑ k = i j − 2 Δ R ~ k + 1 , j − 1 T J r , k η g d , k Δ t + J r , j − 1 η g d , j − 1 Δ t = Δ R ~ j − 1 , j T δ ϕ i , j − 1 + J r , j − 1 η g d , j − 1 Δ t \begin{align*} \delta\boldsymbol{\phi}_{ij}&=\sum_{k=i}^{j-1}\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t}\\ &=\sum_{k=i}^{j-2}\underbrace{\Delta\tilde{\mathbf{R}}_{k+1,j}^{T}}_{(\Delta\tilde{\mathbf{R}}_{k+1,j-1}\Delta\tilde{\mathbf{R}}_{j-1,j})^{T}}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t}+\underbrace{\Delta\tilde{\mathbf{R}}_{j,j}^{T}}_{\mathbf{I}}\mathbf{J}_{r,j-1}\boldsymbol{\eta}_{gd,j-1}\Delta{t}\\ &=\Delta\tilde{\mathbf{R}}_{j-1,j}^{T}\sum_{k=i}^{j-2}\Delta\tilde{\mathbf{R}}_{k+1,j-1}^{T}\mathbf{J}_{r,k}\boldsymbol{\eta}_{gd,k}\Delta{t}+\mathbf{J}_{r,j-1}\boldsymbol{\eta}_{gd,j-1}\Delta{t}\\ &=\Delta\tilde{\mathbf{R}}_{j-1,j}^{T}\delta\boldsymbol{\phi}_{i,j-1}+\mathbf{J}_{r,j-1}\boldsymbol{\eta}_{gd,j-1}\Delta{t}\tag{12} \end{align*} δϕij=k=ij1ΔR~k+1,jTJr,kηgd,kΔt=k=ij2(ΔR~k+1,j1ΔR~j1,j)T ΔR~k+1,jTJr,kηgd,kΔt+I ΔR~j,jTJr,j1ηgd,j1Δt=ΔR~j1,jTk=ij2ΔR~k+1,j1TJr,kηgd,kΔt+Jr,j1ηgd,j1Δt=ΔR~j1,jTδϕi,j1+Jr,j1ηgd,j1Δt(12)

3.2、预积分速度误差传播

j > i j>i j>i,则可将预积分速度误差表达式 ( 8 ) (8) (8)写成递推形式
δ v i j = ∑ k = i j − 1 [ Δ R ~ i j η a d , k Δ t − Δ R ~ i j ( a ~ k − b a , i ) ∧ δ ϕ i j Δ t ] = ∑ k = i j − 2 [ Δ R ~ i j η a d , k Δ t − Δ R ~ i j ( a ~ k − b a , i ) ∧ δ ϕ i j Δ t ] + Δ R ~ i , j − 1 η a d , j − 1 Δ t − Δ R ~ i , j − 1 ( a ~ j − 1 − b a , i ) ∧ δ ϕ i , j − 1 Δ t = δ v i , j − 1 + Δ R ~ i , j − 1 η a d , j − 1 Δ t − Δ R ~ i , j − 1 ( a ~ j − 1 − b a , i ) ∧ δ ϕ i , j − 1 Δ t \begin{align*} \delta\mathbf{\mathbf{v}}_{ij}&=\sum_{k=i}^{j-1}\left[\Delta\tilde{\mathbf{R}}_{ij}\boldsymbol{\eta}_{ad,k}\Delta{t}-\Delta\tilde{\mathbf{R}}_{ij}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ij}\Delta{t}\right]\\ &=\sum_{k=i}^{j-2}\left[\Delta\tilde{\mathbf{R}}_{ij}\boldsymbol{\eta}_{ad,k}\Delta{t}-\Delta\tilde{\mathbf{R}}_{ij}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ij}\Delta{t}\right]+ \Delta\tilde{\mathbf{R}}_{i,j-1}\boldsymbol{\eta}_{ad,j-1}\Delta{t}-\Delta\tilde{\mathbf{R}}_{i,j-1}(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{i,j-1}\Delta{t}\\ &=\delta\mathbf{\mathbf{v}}_{i,j-1}+ \Delta\tilde{\mathbf{R}}_{i,j-1}\boldsymbol{\eta}_{ad,j-1}\Delta{t}-\Delta\tilde{\mathbf{R}}_{i,j-1}(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{i,j-1}\Delta{t}\tag{13} \end{align*} δvij=k=ij1[ΔR~ijηad,kΔtΔR~ij(a~kba,i)δϕijΔt]=k=ij2[ΔR~ijηad,kΔtΔR~ij(a~kba,i)δϕijΔt]+ΔR~i,j1ηad,j1ΔtΔR~i,j1(a~j1ba,i)δϕi,j1Δt=δvi,j1+ΔR~i,j1ηad,j1ΔtΔR~i,j1(a~j1ba,i)δϕi,j1Δt(13)
3.3、预积分位移误差传播

j > i j>i j>i,则可将预积分位移误差表达式 ( 1 i 0 ) (1i_0) (1i0)写成递推形式
δ p i j = ∑ k = i j − 1 [ δ v i k Δ t − 1 2 Δ R ~ i k ( a ~ k − b a , i ) ∧ δ ϕ i k Δ t 2 + 1 2 Δ R ~ i k η a d , k Δ t 2 ] = ∑ k = i j − 2 [ δ v i k Δ t − 1 2 Δ R ~ i k ( a ~ k − b a , i ) ∧ δ ϕ i k Δ t 2 + 1 2 Δ R ~ i k η a d , k Δ t 2 ] + δ v i , j − 1 Δ t − 1 2 Δ R ~ i , j − 1 ( a ~ j − 1 − b a , i ) ∧ δ ϕ i , j − 1 Δ t 2 + 1 2 Δ R ~ i , j − 1 η a d , j − 1 Δ t 2 = δ p i , j − 1 + δ v i , j − 1 Δ t − 1 2 Δ R ~ i , j − 1 ( a ~ j − 1 − b a , i ) ∧ δ ϕ i , j − 1 Δ t 2 + 1 2 Δ R ~ i , j − 1 η a d , j − 1 Δ t 2 \begin{align*} \delta\mathbf{\mathbf{p}}_{ij} &=\sum_{k=i}^{j-1}\left[\delta\mathbf{\mathbf{v}}_{ik}\Delta{t}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}^{2}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}^{2}\right]\\ &=\sum_{k=i}^{j-2}\left[\delta\mathbf{\mathbf{v}}_{ik}\Delta{t}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{ik}\Delta{t}^{2}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{ik}\boldsymbol{\eta}_{ad,k}\Delta{t}^{2}\right]+ \delta\mathbf{\mathbf{v}}_{i,j-1}\Delta{t}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{i,j-1}(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{i,j-1}\Delta{t}^{2}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{i,j-1}\boldsymbol{\eta}_{ad,j-1}\Delta{t}^{2}\\ &=\delta\mathbf{\mathbf{p}}_{i,j-1}+\delta\mathbf{\mathbf{v}}_{i,j-1}\Delta{t}-\frac{1}{2}\Delta\tilde{\mathbf{R}}_{i,j-1}(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{a,i})^{\wedge}\delta\boldsymbol{\phi}_{i,j-1}\Delta{t}^{2}+\frac{1}{2}\Delta\tilde{\mathbf{R}}_{i,j-1}\boldsymbol{\eta}_{ad,j-1}\Delta{t}^{2}\tag{14} \end{align*} δpij=k=ij1[δvikΔt21ΔR~ik(a~kba,i)δϕikΔt2+21ΔR~ikηad,kΔt2]=k=ij2[δvikΔt21ΔR~ik(a~kba,i)δϕikΔt2+21ΔR~ikηad,kΔt2]+δvi,j1Δt21ΔR~i,j1(a~j1ba,i)δϕi,j1Δt2+21ΔR~i,j1ηad,j1Δt2=δpi,j1+δvi,j1Δt21ΔR~i,j1(a~j1ba,i)δϕi,j1Δt2+21ΔR~i,j1ηad,j1Δt2(14)
3.4、预积分误差传播

定义IMU测量噪声为 η d , k = [ η g d , k T , η a d , k T ] T \boldsymbol{\eta}_{d,k}=[\boldsymbol{\eta}_{gd,k}^{T},\boldsymbol{\eta}_{ad,k}^{T}]^{T} ηd,k=[ηgd,kT,ηad,kT]T

j > i j>i j>i,则可根据 ( 12 ) , ( 13 ) , ( 14 ) (12),(13),(14) (12),(13),(14)将预积分误差写成递推形式
δ ( Δ x i j ) = A j − 1 δ ( Δ x i , j − 1 ) + B j − 1 η d , j − 1 (15) \delta(\Delta\mathbf{x}_{ij})=\mathbf{A}_{j-1}\delta(\Delta\mathbf{x}_{i,j-1})+\mathbf{B}_{j-1}\boldsymbol{\eta}_{d,j-1}\tag{15} δ(Δxij)=Aj1δ(Δxi,j1)+Bj1ηd,j1(15)
其中系数矩阵为
A j − 1 = [ Δ R ~ j − 1 , j T O O − Δ R ~ i j ( a ~ k − b a , i ) ∧ Δ t I O − 1 2 Δ R ~ i , j − 1 ( a ~ j − 1 − b a , i ) ∧ Δ t 2 Δ t I O ] B j − 1 = [ J r , j − 1 Δ t O O Δ R ~ i , j − 1 Δ t O 1 2 R ~ i , j − 1 Δ t 2 ] \mathbf{A}_{j-1}= \begin{bmatrix} \Delta\tilde{\mathbf{R}}_{j-1,j}^{T}&\mathbf{O}&\mathbf{O}\\ -\Delta\tilde{\mathbf{R}}_{ij}(\tilde{\mathbf{a}}_{k}-\mathbf{b}_{a,i})^{\wedge}\Delta{t}&\mathbf{I}&\mathbf{O}\\ -\frac{1}{2}\Delta\tilde{\mathbf{R}}_{i,j-1}(\tilde{\mathbf{a}}_{j-1}-\mathbf{b}_{a,i})^{\wedge}\Delta{t}^{2}&\Delta{t}\mathbf{I}&\mathbf{O} \end{bmatrix}\quad \mathbf{B}_{j-1}= \begin{bmatrix} \mathbf{J}_{r,j-1}\Delta{t}&\mathbf{O}\\ \mathbf{O}&\Delta\tilde{\mathbf{R}}_{i,j-1}\Delta{t}\\ \mathbf{O}&\frac{1}{2}\tilde{\mathbf{R}}_{i,j-1}\Delta{t}^{2} \end{bmatrix} Aj1= ΔR~j1,jTΔR~ij(a~kba,i)Δt21ΔR~i,j1(a~j1ba,i)Δt2OIΔtIOOO Bj1= Jr,j1ΔtOOOΔR~i,j1Δt21R~i,j1Δt2
Σ ( η d , k ) ∈ R 6 × 6 \boldsymbol{\Sigma}(\boldsymbol{\eta}_{d,k})\in\mathbb{R}^{6\times6} Σ(ηd,k)R6×6 η d , k \boldsymbol{\eta}_{d,k} ηd,k的协方差矩阵,该矩阵在不同时刻恒定,且已给定,又记为 Σ ( η d ) \boldsymbol{\Sigma}(\boldsymbol{\eta}_{d}) Σ(ηd)
Σ ( δ ( Δ x i j ) ) = A j − 1 Σ ( δ ( Δ x i , j − 1 ) ) A j − 1 T + B j − 1 Σ ( η d ) B j − 1 T (16) \boldsymbol\Sigma(\delta(\Delta\mathbf{x}_{ij}))=\mathbf{A}_{j-1}\boldsymbol\Sigma(\delta(\Delta\mathbf{x}_{i,j-1}))\mathbf{A}_{j-1}^{T}+\mathbf{B}_{j-1}\boldsymbol{\Sigma}(\boldsymbol{\eta}_{d})\mathbf{B}_{j-1}^{T}\tag{16} Σ(δ(Δxij))=Aj1Σ(δ(Δxi,j1))Aj1T+Bj1Σ(ηd)Bj1T(16)
因为 δ ( Δ x i i ) = 0 \delta(\Delta\mathbf{x}_{ii})=\mathbf{0} δ(Δxii)=0,而常量的协方差矩阵是零矩阵,因此初始值 Σ ( δ ( Δ x i i ) ) = O \boldsymbol\Sigma(\delta(\Delta\mathbf{x}_{ii}))=\mathbf{O} Σ(δ(Δxii))=O

根据 ( 15 ) (15) (15)可知,在递推过程中预积分误差均值保持为 0 \mathbf{0} 0,故 δ ( Δ x i j ) ∼ N ( 0 , Σ ( δ ( Δ x i j ) ) \delta(\Delta\mathbf{x}_{ij})\sim\mathcal{N}(\mathbf{0},\boldsymbol\Sigma(\delta(\Delta\mathbf{x}_{ij})) δ(Δxij)N(0,Σ(δ(Δxij))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小于小于大橙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值