Tightly Coupled LiDAR Inertial Odometry and Mapping源码解析(五)

Tightly Coupled LiDAR Inertial Odometry and Mapping源码解析(五)

3. Joint optimization

3.2 IMU preintegration

3.3.2 IMU preintegration

在开始后面的推导之前,我们先整理一下上一篇博客中推导的公式:
R i T R j = ∏ k = i j − 1 E x p ( ( w k ~ − η w k − b w k ) Δ t ) = Δ R i j R i T ( v j − v i − g Δ t i j ) = ∑ k = i j − 1 ( Δ R i k ( a k ~ − η a k − b a k ) Δ t ) = Δ v i j R i T ( p j − p i − 1 2 g Δ t i j 2 − v i Δ t i j ) = ∑ k = i j − 1 ( Δ v i k Δ t + 1 2 Δ R i k ( a ~ k − η a k − b a k ) Δ t 2 ) = Δ p i j R_i^TR_j=\prod_{k=i}^{j-1}Exp((\tilde{w_k}-\eta_{w}^k-b_w^k)\Delta t)=\Delta R_{ij}\\ R_i^T(v_j-v_i-g\Delta t_{ij})=\sum_{k=i}^{j-1}(\Delta R_{ik}(\tilde {a_k}-\eta_a^k-b_a^k)\Delta t)=\Delta v_{ij}\\ R_i^T(p_j-p_i-\frac{1}{2}g\Delta t_{ij}^2-v_i\Delta t_{ij})=\sum_{k=i}^{j-1}(\Delta v_{ik}\Delta t+\frac{1}{2}\Delta R_{ik}(\tilde a_k-\eta_a^k-b_a^k)\Delta t^2)=\Delta p_{ij} RiTRj=k=ij1Exp((wk~ηwkbwk)Δt)=ΔRijRiT(vjvigΔtij)=k=ij1(ΔRik(ak~ηakbak)Δt)=ΔvijRiT(pjpi21gΔtij2viΔtij)=k=ij1(ΔvikΔt+21ΔRik(a~kηakbak)Δt2)=Δpij
非常好,现在计算出来的增量 Δ = [ Δ R i j , Δ v i j , Δ p i j ] T \Delta =[\Delta R_{ij},\Delta v_{ij},\Delta p_{ij}]^T Δ=[ΔRij,Δvij,Δpij]T就不依赖于 i i i j j j时刻的状态了,但是还遗留了一个问题,就是推导出来的增量还依赖于偏置 b w , b a b_w,b_a bw,ba和噪声 η w , η a \eta_w,\eta_a ηw,ηa。在VINS的原始论文中,做了这样一个假设,即假设偏置在两个关键帧之间是不发生变化的,也即:
b a i = b a i + 1 = . . . = b a j − 1 , b w i = b w i + 1 = . . . = b w j − 1 b_a^i=b_a^{i+1}=...=b_a^{j-1},b_w^i=b_w^{i+1}=...=b_w^{j-1} bai=bai+1=...=baj1,bwi=bwi+1=...=bwj1
现在假设偏置 b a i b_a^i bai b w i b_w^{i} bwi已知,则可以将增量 Δ \Delta Δ进一步化简。为了简化书写,有的地方不再显示的书写叉乘 ∧ \wedge 符号,还请注意。我们首先来看旋转矩阵:
Δ R i j = ∏ k = i j − 1 E x p ( ( w k ~ − b w k − η w k ) Δ t ) \Delta R_{ij}=\prod_{k=i}^{j-1}Exp((\tilde{w_k}-b_w^k-\eta_{w}^k)\Delta t) ΔRij=k=ij1Exp((wk~bwkηwk)Δt)
怎样才能把噪声分离出来呢?我刚开始看的时候觉得,这还不简单吗,高中生都会啊 exp ⁡ ( a + b ) = exp ⁡ ( a ) exp ⁡ ( b ) \exp(a+b)=\exp(a)\exp(b) exp(a+b)=exp(a)exp(b),这不就把噪声分离出来了吗!后来仔细想了想,好像有一丝丝不对,对于标量来说上式肯定成立,但是我们可是矩阵的指数函数啊! exp ⁡ ( a ∧ + b ∧ ) = exp ⁡ ( a ∧ ) exp ⁡ ( b ∧ ) \exp(a\wedge+b\wedge)=\exp(a\wedge)\exp(b\wedge) exp(a+b)=exp(a)exp(b)成立吗?
我们从其表示的物理意义上考虑一下。 exp ⁡ ( a ∧ ) \exp(a\wedge) exp(a)表示的是旋转轴为向量a方向上的单位向量且旋转角为 ∣ ∣ a ∣ ∣ 2 ||a||_2 a2的旋转矩阵, exp ⁡ ( b ∧ ) \exp(b\wedge) exp(b)对应的是旋转轴为向量 b b b方向上的单位向量且旋转角度为 ∣ ∣ b ∣ ∣ 2 ||b||_2 b2的旋转矩阵,而 exp ⁡ ( a ∧ + b ∧ ) \exp(a\wedge+b\wedge) exp(a+b)表示的则是旋转轴为向量 a + b a+b a+b对应的单位向量且旋转角度为 ∣ ∣ a + b ∣ ∣ 2 ||a+b||_2 a+b2的旋转矩阵,如果上式成立,那岂不是说:
先绕 a a a旋转 ∣ ∣ a ∣ ∣ 2 ||a||_2 a2度,再绕 b b b旋转 ∣ ∣ b ∣ ∣ 2 ||b||_2 b2度,等同于绕轴 a + b a+b a+b旋转 ∣ ∣ a + b ∣ ∣ 2 ||a+b||_2 a+b2????再具体点,绕z轴 [ 0 , 0 , 1 ] T [0,0,1]^T [0,0,1]T旋转45度,再绕x轴 [ 1 , 0 , 0 ] T [1,0,0]^T [1,0,0]T旋转45度,等同于绕 [ 1 , 0 , 1 ] T [1,0,1]^T [1,0,1]T旋转 45 × 2 45\times\sqrt2 45×2 度????
这是什么神仙定律啊!!当然了,事实上这肯定是不对的,于是这可咋把噪声分离出来呢?聪明的数学家们人狠话不多,并直接向你脸上甩了个Baker-Campell-Hausdauff(BCH)公式,且当 a a a或者 b b b的其中一个模很小的时候,可以得到一阶近似:
{ exp ⁡ ( a ∧ + b ∧ ) ≈ exp ⁡ ( a ∧ ) exp ⁡ ( J r ( a ) b ∧ ) ,    b 为 穷 小 量 exp ⁡ ( a ∧ + b ∧ ) ≈ exp ⁡ ( J l ( b ) a ∧ ) exp ⁡ ( b ∧ ) ,    a 为 无 穷 小 量 \begin{cases} \exp(a\wedge+b\wedge)\approx\exp(a\wedge)\exp(J_r(a)b\wedge),\ \ b为穷小量\\ \exp(a\wedge+b\wedge)\approx\exp(J_l(b)a\wedge)\exp(b\wedge),\ \ a为无穷小量 \end{cases} {exp(a+b)exp(a)exp(Jr(a)b),  bexp(a+b)exp(Jl(b)a)exp(b)  a
虎扑J_r注意了,式中的 J r J_r Jr J l J_l Jl表示的可是 S O ( 3 ) SO(3) SO(3)的右雅克比和左雅克比。哭了,摊牌了,这个东西我真的推导不出来,关于这个BCH公式、BCH的无穷小一阶近似以及雅克比的具体形式的推导,感兴趣的可以去参考神书吧[1]。
总之有了这个公式后,我们可以把旋转矩阵中的噪声分离出来了,即:
Δ R i j ≈ ∏ k = i j − 1 exp ⁡ ( ( w ~ k − b w i ) Δ t ) exp ⁡ ( − J r η w k Δ t ) = Δ R i j ~ exp ⁡ ( − δ ϕ i j ) \Delta R_{ij}\approx\prod_{k=i}^{j-1}\exp((\tilde w_k-b_w^i)\Delta t)\exp(-J_r\eta_w^k\Delta t)=\Delta \tilde{R_{ij}}\exp(-\delta\phi_{ij}) ΔRijk=ij1exp((w~kbwi)Δt)exp(JrηwkΔt)=ΔRij~exp(δϕij)
接下来,为了求速度增量 v i j v_{ij} vij,我们需要把当前计算好的 Δ R i j \Delta R_{ij} ΔRij带入到 Δ v i j \Delta v_{ij} Δvij中,即:
Δ v i j ≈ ∑ k = i j − 1 ( Δ R i k ~ exp ⁡ ( − δ ϕ i j ) ( a k ~ − b a i − η a k ) Δ t ) \Delta v_{ij}\approx\sum_{k=i}^{j-1}(\Delta \tilde{R_{ik}}\exp(-\delta \phi_{ij})(\tilde {a_k}-b_a^i-\eta_a^k)\Delta t) Δvijk=ij1(ΔRik~exp(δϕij)(ak~baiηak)Δt)
为了把 δ ϕ i j \delta \phi_{ij} δϕij分离出来,我们需要对 exp ⁡ ( − δ ϕ i j ) \exp(-\delta \phi_{ij}) exp(δϕij)进行泰勒展开和一阶近似,即 e x p ( − δ ϕ i j ) ≈ I − δ ϕ i j exp(-\delta \phi_{ij})\approx I-\delta \phi_{ij} exp(δϕij)Iδϕij。然后将其带入上式:
Δ v i j ≈ ∑ k = i j − 1 ( Δ R i k ~ ( I − δ ϕ i j ) ( a k ~ − b a i − η a k ) Δ t ) = ( ∑ k = i j − 1 Δ R i k ~ ( a k ~ − b a i ) ) − δ v i j = Δ v i j ~ − δ v i j \Delta v_{ij}\approx\sum_{k=i}^{j-1}(\Delta \tilde{R_{ik}}(I-\delta \phi_{ij})(\tilde {a_k}-b_a^i-\eta_a^k)\Delta t)\\=(\sum_{k=i}^{j-1}\Delta \tilde{R_{ik}}(\tilde {a_k}-b_a^i))-\delta v_{ij}=\Delta \tilde{v_{ij}}-\delta v_{ij} Δvijk=ij1(ΔRik~(Iδϕij)(ak~baiηak)Δt)=(k=ij1ΔRik~(ak~bai))δvij=Δvij~δvij
同样可以得到关于位置的表示:
Δ p i j = Δ p i j ~ − δ p i j \Delta p_{ij}=\Delta \tilde{p_{ij}}-\delta p_{ij} Δpij=Δpij~δpij
最后整理一下:
Δ R i j ~ = R i T R j exp ⁡ ( δ ϕ i j ) Δ v i j ~ = R i T ( v j − v i − g Δ t i j ) + δ v i j Δ p i j ~ = R i T ( p j − p i − v i Δ t i j − 1 2 g Δ t i j 2 ) + δ p i j \Delta \tilde{R_{ij}}=R_i^TR_j\exp(\delta \phi_{ij})\\ \Delta \tilde{v_{ij}}=R_i^T(v_j-v_i-g\Delta t_{ij})+\delta v_{ij}\\ \Delta\tilde{p_{ij}}=R_i^T(p_j-p_i-v_i\Delta t_{ij}-\frac{1}{2}g\Delta t_{ij}^2)+\delta p_{ij} ΔRij~=RiTRjexp(δϕij)Δvij~=RiT(vjvigΔtij)+δvijΔpij~=RiT(pjpiviΔtij21gΔtij2)+δpij
看起来是不是很漂亮!!再对这些噪声做一个高斯噪声假设,再来个Negative-log,数学形式不要太完美。

3.3 Noise Propagation

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值