VINS-Mono-IMU预积分 (六:离散时间预积分误差传递)


为了求出连续时间的变化量,所以要求出连续时间误差量的变化量的导数,因为是误差卡尔曼滤波,所以是对误差量进行求导。
而实际系统的数据肯定是离散的。
现在要根据前面连续时间的方程推导出离散下的变化
上一节的方程的简洁表达式为 Δ x ˙ = F t ⋅ Δ x + G t ⋅ n t \dot{Δx}=F_{t}·Δx+G_{t}·n_{t} Δx˙=FtΔx+Gtnt Δ x ∈ 15 × 1 , F t ∈ 15 × 15 , G t ∈ 15 × 12 , n t ∈ 12 × 1 Δx∈15×1,F_{t}∈15×15,G_{t}∈15×12,n_{t}∈12×1 Δx15×1,Ft15×15,Gt15×12,nt12×1
只有连续的才可以求导,离散的是无法求导的,现在要求出离散时间下的变化关系是什么, Δ x k Δx_{k} Δxk Δ x k + 1 Δx_{k+1} Δxk+1 之间的变化关系是什么,在已知 Δ x k Δx_{k} Δxk 的情况下推导出 Δ x k + 1 Δx_{k+1} Δxk+1

导数的定义 f ( x + Δ x ) = f ( x ) + J ( x ) ⋅ Δ x f(x+Δx)=f(x)+J(x)·Δx f(x+Δx)=f(x)+J(x)Δx
Δ x Δx Δx 同样适用 = > Δ x k + 1 = Δ x k + Δ x ˙ ⋅ Δ t =>Δx_{k+1}=Δx_{k}+\dot{Δx}·Δt =>Δxk+1=Δxk+Δx˙Δt,把 Δ x ˙ = F t ⋅ Δ x + G t ⋅ n t \dot{Δx}=F_{t}·Δx+G_{t}·n_{t} Δx˙=FtΔx+Gtnt 代入得
= > Δ x k + 1 = Δ x k + ( F t ⋅ Δ x + G t ⋅ n t ) ⋅ Δ t =>Δx_{k+1}=Δx_{k}+(F_{t}·Δx+G_{t}·n_{t})·Δt =>Δxk+1=Δxk+(FtΔx+Gtnt)Δt 这里的 Δ x ˙ \dot{Δx} Δx˙仍然是连续时间的导数
= > Δ x k + 1 = ( I + F t Δ t ) ⋅ Δ x k + G t ⋅ Δ t ⋅ n t =>Δx_{k+1}=(I+F_{t}Δt)·Δx_{k}+G_{t}·Δt·n_{t} =>Δxk+1=(I+FtΔt)Δxk+GtΔtnt 这里面把 Δ x Δx Δx 近似成了 Δ x k Δx_{k} Δxk 后面会详细推导这个近似的过程
由于中值积分的原因, n t ∈ [ n a k n w k n a k + 1 n w k + 1 n b a n b w ] ∈ 18 × 1 n_{t}∈\begin{bmatrix} n_{ak} \\ n_{wk} \\ n_{ak+1}\\ n_{wk+1}\\ n_{ba}\\ n_{bw}\\ \end{bmatrix}∈18×1 nt naknwknak+1nwk+1nbanbw 18×1 ,这里面认为零偏是不会变化的,所以没有k+1时刻的零偏的噪声,零偏的导数就是高斯噪声。
其中 Δ x k + 1 ∈ 15 × 1 , ( I + F t Δ t ) ∈ 15 × 15 , Δ x k ∈ 15 × 1 , G t ⋅ Δ t ∈ 15 × 18 Δx_{k+1}∈15×1,(I+F_{t}Δt)∈15×15,Δx_{k}∈15×1,G_{t}·Δt∈15×18 Δxk+115×1(I+FtΔt)15×15Δxk15×1GtΔt15×18

上述方程的矩阵具体形式如下:
在这里插入图片描述
上面可以表示为
Δ x k + 1 = F ⋅ Δ x k + G ⋅ n k Δx_{k+1}=F·Δx_{k}+G·n_{k} Δxk+1=FΔxk+Gnk
表示为从 Δ x k Δx_{k} Δxk 时刻的误差转移到 Δ x k + 1 Δx_{k+1} Δxk+1 时刻的误差,代码中也是构造 F ,G矩阵

接下来将对每一项进行推导

离散时间角度误差推导

先列出连续时间积分的角度的导数
Δ θ ˙ = − ( w ^ t − b w t ) ^ Δ θ − n w − Δ b w t \dot{Δθ}=-(\hat{w}_{t}-b_{wt})^{\hat{}}Δθ-n_{w}-Δb_{wt} Δθ˙=(w^tbwt)^ΔθnwΔbwt
根据导数的定义
Δ θ k + 1 = Δ θ k + Δ θ ˙ ⋅ Δ t Δθ_{k+1}=Δθ_{k}+\dot{Δθ}·Δt Δθk+1=Δθk+Δθ˙Δt
然后把 Δ θ ˙ \dot{Δθ} Δθ˙ 代入
= > Δ θ k + 1 = Δ θ k − [ ( w ^ t − b w t ) ^ Δ θ + n w + Δ b w t ] ⋅ Δ t =>Δθ_{k+1}=Δθ_{k}-[(\hat{w}_{t}-b_{wt})^{\hat{}}Δθ+n_{w}+Δb_{wt}]·Δt =>Δθk+1=Δθk[(w^tbwt)^Δθ+nw+Δbwt]Δt
通过中值积分来近似表达 w t w_{t} wt n w n_{w} nw
= > Δ θ k + 1 = Δ θ k − [ ( ( w k + w k + 1 2 ) − b w t ) ^ Δ θ k + n w + Δ b w t ] ⋅ Δ t =>Δθ_{k+1}=Δθ_{k}-[((\frac{w_{k}+w_{k+1}}{2})-b_{wt})^{\hat{}}Δθ_{k}+n_{w}+Δb_{wt}]·Δt =>Δθk+1=Δθk[((2wk+wk+1)bwt)^Δθk+nw+Δbwt]Δt
整理一下
= > [ I − ( w k + w k + 1 2 − b w ) ^ ⋅ Δ t ] ⋅ Δ θ k − Δ t ⋅ n w k + n w k + 1 2 − Δ t ⋅ Δ b w =>[I-(\frac{w_{k}+w_{k+1}}{2}-b_{w})^{\hat{}}·Δt]·Δθ_{k}-Δt·\frac{n_{wk}+n_{wk+1}}{2}-Δt·Δb_{w} =>[I(2wk+wk+1bw)^Δt]ΔθkΔt2nwk+nwk+1ΔtΔbw 这个对应 f 11 f_{11} f11

离散时间速度误差推导

先列出连续时间积分的速度的导数
Δ β ˙ = − R t ( a ^ − b a t ) ^ Δ θ − R t Δ b a t − R t n a \dot{Δβ}=-R_{t}(\hat{a}-b_{at})^{\hat{}}Δθ-R_{t}Δb_{at}-R_{t}n_{a} Δβ˙=Rt(a^bat)^ΔθRtΔbatRtna
根据导数的定义
Δ β k + 1 = Δ β k + Δ β ˙ ⋅ Δ t Δβ_{k+1}=Δβ_{k}+\dot{Δβ}·Δt Δβk+1=Δβk+Δβ˙Δt
Δ β ˙ \dot{Δβ} Δβ˙ 代入
= > Δ β k + 1 = Δ β k − [ R t ( a ^ − b a t ) ^ Δ θ + R t Δ b a t + R t n a ] ⋅ Δ t =>Δβ_{k+1}=Δβ_{k}-[R_{t}(\hat{a}-b_{at})^{\hat{}}Δθ+R_{t}Δb_{at}+R_{t}n_{a}]·Δt =>Δβk+1=Δβk[Rt(a^bat)^Δθ+RtΔbat+Rtna]Δt
然后用中值积分近似 R t , a k , θ k R_{t},a_{k},θ_{k} Rt,ak,θk
= > Δ β k + 1 = Δ β k − [ 1 2 [ R k ( a k − b a ) ^ Δ θ k + R k + 1 ( a k + 1 − b a ) ^ Δ θ k + 1 ] + 1 2 ( R k + R k + 1 ) ⋅ Δ b a + 1 2 ( R k n k + R k + 1 n k + 1 ) ] ⋅ Δ t =>Δβ_{k+1}=Δβ_{k}-[\frac{1}{2}[R_{k}(a_{k}-b_{a})^{\hat{}}Δθ_{k}+R_{k+1}(a_{k+1}-b_{a})^{\hat{}}Δθ_{k+1}]+\frac{1}{2}(R_{k}+R_{k+1})·Δb_{a}+\frac{1}{2}(R_{k}n_{k}+R_{k+1}n_{k+1})]·Δt =>Δβk+1=Δβk[21[Rk(akba)^Δθk+Rk+1(ak+1ba)^Δθk+1]+21(Rk+Rk+1)Δba+21(Rknk+Rk+1nk+1)]Δt

上面包含了 Δ θ k + 1 Δθ_{k+1} Δθk+1 ,然后把上面刚刚推导的 Δ θ k + 1 = [ I − ( w k + w k + 1 2 − b w ) ^ ⋅ Δ t ] ⋅ Δ θ k − Δ t ⋅ n w k + n w k + 1 2 − Δ t ⋅ Δ b w Δθ_{k+1}=[I-(\frac{w_{k}+w_{k+1}}{2}-b_{w})^{\hat{}}·Δt]·Δθ_{k}-Δt·\frac{n_{wk}+n_{wk+1}}{2}-Δt·Δb_{w} Δθk+1=[I(2wk+wk+1bw)^Δt]ΔθkΔt2nwk+nwk+1ΔtΔbw 代入进去,剩下的就是整理归纳系数了,自己归纳一下就能得到上面对应的值了

离散时间位置误差推导

连续时间下位置的导数
Δ α ˙ = Δ β \dot{Δα}=Δβ Δα˙=Δβ
根据导数的定义
Δ α k + 1 = Δ α k + Δ α ˙ ⋅ Δ t Δα_{k+1}=Δα_{k}+\dot{Δα}·Δt Δαk+1=Δαk+Δα˙Δt
代入 Δ α ˙ = Δ β \dot{Δα}=Δβ Δα˙=Δβ
= > Δ α k + 1 = Δ α k + Δ β ⋅ Δ t =>Δα_{k+1}=Δα_{k}+Δβ·Δt =>Δαk+1=Δαk+ΔβΔt
根据中值积分
= > Δ α k + 1 = Δ α k + Δ β k + Δ β k + 1 2 ⋅ Δ t =>Δα_{k+1}=Δα_{k}+\frac{Δβ_{k}+Δβ_{k+1}}{2}·Δt =>Δαk+1=Δαk+2Δβk+Δβk+1Δt
然后把上面的 Δ β k + 1 = Δ β k − [ 1 2 [ R k ( a k − b a ) ^ Δ θ k + R k + 1 ( a k + 1 − b a ) ^ Δ θ k + 1 ] + 1 2 ( R k + R k + 1 ) ⋅ Δ b a + 1 2 ( R k n k + R k + 1 n k + 1 ) ] ⋅ Δ t Δβ_{k+1}=Δβ_{k}-[\frac{1}{2}[R_{k}(a_{k}-b_{a})^{\hat{}}Δθ_{k}+R_{k+1}(a_{k+1}-b_{a})^{\hat{}}Δθ_{k+1}]+\frac{1}{2}(R_{k}+R_{k+1})·Δb_{a}+\frac{1}{2}(R_{k}n_{k}+R_{k+1}n_{k+1})]·Δt Δβk+1=Δβk[21[Rk(akba)^Δθk+Rk+1(ak+1ba)^Δθk+1]+21(Rk+Rk+1)Δba+21(Rknk+Rk+1nk+1)]Δt 代入进去
里面把 Δ β k , Δ θ k Δβ_{k},Δθ_{k} Δβk,Δθk 提取出来 ,然后还是基础的系数归纳

离散时间零偏误差推导

连续时间零偏的求导
Δ b a ˙ = n b a \dot{Δb_{a}}=n_{ba} Δba˙=nba
根据导数的定义
Δ b a k + 1 = Δ b a k + n b a Δ t Δb_{ak+1}=Δb_{ak}+n_{ba}Δt Δbak+1=Δbak+nbaΔt
陀螺仪的也是一样的
Δ b w k + 1 = Δ b w k + n b w Δ t Δb_{wk+1}=Δb_{wk}+n_{bw}Δt Δbwk+1=Δbwk+nbwΔt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rhys___

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

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

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

打赏作者

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

抵扣说明:

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

余额充值