来自论文:A Lightweight and Accurate Localization Algorithm Using Multiple Inertial Measurement Units
一丶摘要
本文通过融合来自多个惯性测量单元(IMU)和传感器的信息,提出了一种新颖的惯性辅助定位方法。 IMU是一种低成本的运动传感器,可对移动平台的角速度和重力补偿的线性加速度进行测量,并广泛用于现代定位系统中。迄今为止,大多数现有的惯性辅助定位方法仅利用一个IMU。尽管单个IMU定位可以为不同的使用案例提供可接受的准确性和鲁棒性,但通过使用多个IMU可以进一步提高整体性能。为此,我们提出了一种轻量级且精确的算法,用于融合来自多个IMU和传感器的测量结果,该算法能够获得显着的性能提升,而不会产生额外的计算成本。为此,我们首先将所有IMU的测量概率映射到一个虚拟IMU上。该步骤通过使用最小二乘估计器进行随机估计以及IMU间旋转加速度的概率边缘化来执行。随后,还导出了虚拟IMU的状态和错误状态的传播模型,这使得可以使用基于经典滤波器或基于优化的传感器融合算法进行定位。最后,提供了来自仿真和真实世界测试的结果,这些结果表明,提出的算法以明显的优势胜过竞争算法。
二丶单一IMU测量方法
1.IMU测量方程 ω m = I ω + b g + n g , n g ∽ N ( 0 , σ g 2 I 3 ) (1) \omega _m={^I}ω+b_g+n_g,n_g \backsim \mathcal N(0,\sigma^2_gI_3) \tag{1} ωm=Iω+bg+ng,ng∽N(0,σg2I3)(1) a m = I R G ( G a − G g ) + b a + n a , n a ∽ N ( 0 , σ g 2 I 3 ) (2) a _m={^I}R _G({^G}a-{^G}{g})+b_a+n_a,n_a \backsim \mathcal N(0,\sigma^2_gI_3) \tag{2} am=IRG(Ga−Gg)+ba+na,na∽N(0,σg2I3)(2)
其中 ω m \omega _m ωm和 a m ∈ R 3 a _m \in \mathbb R^3 am∈R3是陀螺仪和加速度计的测量值, I ω {^I}ω Iω和 G a {^G}a Ga分别代表IMU角速度和线加速度在坐标系 I I I和 G G G中表示, I R G {^I}R_G IRG代表坐标系 G G G和坐标系 I I I之间的变换, n a n_a na和 n g n_g ng为高斯噪声, b g b_g bg和 b a b_a ba为随机游走测量偏差模型,而 G g {^G}g Gg为全局坐标系下已知的重力向量。
2.IMU状态向量和误差状态
IMU的状态定义为: x = [ I G q ˉ T , b g T , G v I T , b a T , G p I T ] T ∈ R 16 (3) x=[{^G_I}\bar{q}^T,b_g^T,{^G}v_I^T,b_a^T,{^G}p_I^T]^T \in \mathbb R^{16} \tag{3} x=[IGqˉT,bgT,GvIT,baT,GpIT]T∈R16(3)其中, I G q ˉ T ∈ R 4 {^G_I} \bar{q}^T \in \mathbb R^4 IGqˉT∈R4代表从IMU坐标系到全局坐标系的四元数变换, G p I ^Gp_I GpI和 G v I ^Gv_I GvI分别代表IMU的位置和速度。
IMU的连续时间运动动力学描述为: x ˙ = f ( x , ω m , a m ) (4) \dot{x}=f(x,\omega_m,a_m) \tag{4} x˙=f(x,ωm,am)(4)其详细形式为: G p ˙ I ( t ) = G v I ( t ) , b ˙ g ( t ) = n w g ( t ) , b ˙ a ( t ) = n w a ( t ) {^G} \dot{p}_I(t)={^G}v_I(t),\dot b_g(t)=n_{wg}(t),\dot b_a(t)=n_{wa}(t) Gp˙I(t)=GvI(t),b˙g(t)=nwg(t),b˙a(t)=nwa(t) G v ˙ I ( t ) = G a I ( t ) = I R G T ( a m − b a − n a ) + G g {^G}\dot v_I(t)={^G}a_I(t)={^I}R^T_G(a_m-b_a-n_a)+{^G}g Gv˙I(t)=GaI(t)=IRGT(am−ba−na)+Gg I G q ˉ ˙ ( t ) = 1 2 Ω ( I ω ( t ) I G q ˉ ( t ) ) = 1 2 ( ω m − b g − n g ) I G q ˉ ( t ) {^G_I}\dot{\bar{q}}(t)={1 \over 2}\Omega({^I}\omega(t){^G_I}\bar{q}(t))={1\over 2}(\omega_m-b_g-n_g){^G_I\bar{q}(t)} IGqˉ˙(t)=21Ω(Iω(t)IGqˉ(t))=21(ωm−bg−ng)IGqˉ(t)其中, n w g ∽ N ( 0 , σ w g 2 I 3 ) , n w a ∽ N ( 0 , σ w a 2 I 3 ) n_{wg} \backsim \mathcal N(0,\sigma^2_{wg}I_3),n_{wa} \backsim \mathcal N(0,\sigma^2_{wa}I_3) nwg∽N(0,σwg2I3),nwa∽N(0,σwa2I3) Ω ( I ω ) = [ 0 − I ω T I ω − ⌊ I ω ⌋ ] (8) \Omega({^I}\omega)=\left[ \begin{array}{cc} 0 & -{^I}\omega^T \\ {^I} \omega & -\lfloor{^I}\omega \rfloor \\\end{array}\right] \tag{8} Ω(Iω)=[0Iω−IωT−⌊Iω⌋](8) ⌊ . ⌋ \lfloor . \rfloor ⌊.⌋代表反对称矩阵。
IMU的误差状态定义为: x ~ = [ I θ ~ T , b ~ g T , G v ~ I T , b ~ a T , G p ~ I T ] T ∈ R 15 (9) \tilde x=[{^I} \tilde{\theta}^T,\tilde b_g^T,{^G}\tilde v_I^T,\tilde b_a^T,{^G}\tilde p_I^T]^T \in \mathbb R^{15}\tag{9} x~=[Iθ~T,b~gT,Gv~IT,b~aT,Gp~IT]T∈R15(9)其中标准加性误差定义用于位置、速度和偏差。四元数局部误差 I θ ~ {^I} \tilde{\theta} Iθ~的定义如下: I R G ≅ ( I 3 − ⌊ I θ ~ ⌋ ) I R ^ G (10) {^I}R_G \cong (I_3 -\lfloor{^I}\tilde \theta \rfloor ){^I}\hat{R}_G \tag{10} IRG≅(I3−⌊Iθ~⌋)IR^G(10)这里的 I R ^ G {^I}\hat{R}_G IR^G代表 I R G {^I}R_G IRG估计值。
3.IMU传播方程
为了实现概率估计,一般的方法是推导一个预测状态估计的非线性方程 x ^ \hat{x} x^和一个线性化的描述误差状态的方程 x ~ \tilde{x} x~。 x ^ ˙ = f ( x ^ , ω m , a m ) (11) \dot{\hat{x}}=f(\hat{x},\omega_m,a_m)\tag{11} x^˙=f(x^,ωm,am)(11) x ~ ˙ = F x ~ + G n c (12) \dot{\tilde{x}}=F\tilde x+Gn_c\tag{12} x~˙=Fx~+Gnc(12)其中 F F F和 G G G表示连续时间线性化的状态转移矩阵和噪声雅可比矩阵, n c n_c nc是过程噪声。一旦定义以上两个公式, IMU测量值可以直接集成到不同类型的定位估计器中,用于运动估计。
三丶虚拟IMU
我们制定多重IMU算法的高级设计原则是在没有非概率假设的情况下,推导出符合以上两个公式结构的IMU传播方程。所提出的算法可以直接集成到各种现有的惯性辅助定位系统中,而无需任何复杂的软件重新设计。
依靠多个IMU信息产生一个“虚拟”IMU测量值,被用于代替上式中的 ω m \omega_m ωm和 a m a_m am,以下通过两个IMU的案例进行说明。
“虚拟”IMU测量值:假设IMU A和B给出了同步测量 ω m A ω_{mA} ωmA, ω m B ω_{mB} ωmB, a m A a_{mA} amA和 a m B a_{mB} amB,以及他们的外参 ( A R B , B p A ) ({^A}R_B,{^B}p_A) (ARB,BpA),假设虚拟IMU相对于IMU A的外参数为 ( A R V , V p A ) ({^A}R_V,{^V}p_A) (ARV,VpA),对应的虚拟陀螺仪和加速度计测量值可以生成为: ω m V = N + ω m (13) \omega_{mV}=N^+\omega_m\tag{13} ωmV=N+ωm(13) a m V = T ( a m − S ( ω m V ) ) (14) a_{mV}=T(a_m-S(\omega_{mV}))\tag{14} amV=T(am−S(ωmV))(14)其中, N = [ A R V B R V ] , Y = [ A R V ⌊ V p A ⌋ B R V ⌊ V p B ⌋ ] , T = ( Z T N ) + Z T (15) N=\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right],Y=\left[ \begin{array}{cc} {^A}R_V \lfloor {^{V}}p_A \rfloor\\ {^B}R_V \lfloor {^{V}}p_B \rfloor \\\end{array}\right],T=(Z^TN)^+Z^T\tag{15} N=[ARVBRV],Y=[ARV⌊VpA⌋BRV⌊VpB⌋],T=(ZTN)+ZT(15) ω m = [ ω m A ω m B ] , a m = [ a m A a m B ] , S ( ⋅ ) = [ A R V ⌊ . ⌋ 2 V p A B R V ⌊ . ⌋ 2 V p B ] (16) \omega_m=\left[ \begin{array}{cc} \omega_{mA} \\ \omega_{mB} \\\end{array}\right],a_m=\left[ \begin{array}{cc} a_{mA} \\ a_{mB}\\\end{array}\right],S(\cdot)=\left[ \begin{array}{cc} {^A}R_V \lfloor . \rfloor{^{2V}}p_A \\ {^B}R_V \lfloor . \rfloor{^{2V}}p_B \\\end{array}\right] \tag{16} ωm=[ωmAωmB],am=[amAamB],S(⋅)=[ARV⌊.⌋2VpABRV⌊.⌋2VpB](16) Z T Z^T ZT是 Y Y Y的左零空间投影,即 Z T Y = 0 Z^TY=0 ZTY=0, A + A^+ A+为矩阵 A A A广义的逆矩阵: A + = ( A T A ) − 1 A T (17) A^+=(A^TA)^{-1}A^T\tag{17} A+=(ATA)−1AT(17)在实践中,对于多个IMU的 N = [ 1 R V T , 2 R V T , . . . , n 1 R V T ] T N=[{^1}R_V^T,{^2}R_V^T,...,{^{n1}}R_V^T]^T N=[1RVT,2RVT,...,n1RVT]T,其广义逆矩阵 N + N^+ N+的计算可以简化为 N + = N T / n I N^+=N^T/n_I N+=NT/nI。利用生成的虚拟IMU测量值 ω m V , a m V \omega_{mV},a_{mV} ωmV,amV,可以不做任何修改而使用IMU状态估计的预测方程 x ^ ˙ = f ( x ^ , ω m , a m ) \dot{\hat{x}}=f(\hat{x},\omega_m,a_m) x^˙=f(x^,ωm,am)。
1.虚拟陀螺模型
首先,我们使用以下等式:
A
ω
=
A
R
V
V
ω
,
B
ω
=
B
R
V
V
ω
(18)
{^A}\omega={^A}R_V{^V}\omega,{^B}\omega={^B}R_V{^V}\omega \tag{18}
Aω=ARVVω,Bω=BRVVω(18)结合式子
ω
m
=
I
ω
+
b
g
+
n
g
,
n
g
∽
N
(
0
,
σ
g
2
I
3
)
\omega _m={^I}ω+b_g+n_g,n_g \backsim \mathcal N(0,\sigma^2_gI_3)
ωm=Iω+bg+ng,ng∽N(0,σg2I3)可推到得到:
[
ω
m
A
ω
m
B
]
=
[
A
R
V
B
R
V
]
V
ω
+
[
b
g
A
b
g
B
]
+
[
n
g
A
n
g
B
]
(19)
\left[ \begin{array}{cc} \omega_{mA} \\ \omega_{mB} \\\end{array}\right]=\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{^V}{\omega}+\left[ \begin{array}{cc} b_{gA} \\ b_{gB} \\\end{array}\right]+\left[ \begin{array}{cc} n_{gA} \\ n_{gB} \\\end{array}\right]\tag{19}
[ωmAωmB]=[ARVBRV]Vω+[bgAbgB]+[ngAngB](19)
根据IMU A和B的测量结果,虚拟IMU角速度的最佳估计为:
V
ω
^
=
a
r
g
m
i
n
ω
∥
[
ω
m
A
σ
g
A
ω
m
B
σ
g
B
]
−
[
1
σ
g
A
A
R
V
1
σ
g
B
B
R
V
]
V
ω
−
[
b
g
A
σ
g
A
b
g
B
σ
g
B
]
∥
2
2
(20)
{^V}{\hat \omega}=arg \underset{\omega} {min} \begin{Vmatrix}{\left[ \begin{array}{cc} \omega_{mA} \over \sigma_{gA} \\ \omega_{mB} \over \sigma_{gB} \\\end{array}\right] -\left[ \begin{array}{cc} {1 \over \sigma_{gA}}{^A}R_V \\ {1 \over \sigma_{gB}}{^B}R_V \\\end{array}\right]{^V}{\omega} -\left[ \begin{array}{cc} b_{gA} \over \sigma_{gA} \\ b{gB} \over \sigma_{gB} \\\end{array}\right]}\end{Vmatrix}^2_2\tag{20}
Vω^=argωmin∥∥∥∥∥[σgAωmAσgBωmB]−[σgA1ARVσgB1BRV]Vω−[σgAbgAσgBbgB]∥∥∥∥∥22(20)为了简化分析,假设
σ
g
A
=
σ
g
B
\sigma_{gA}=\sigma_{gB}
σgA=σgB,当使用相同类型的IMU时,假设也会很精确。求解上式得到线性最小二乘估计:
V
ω
^
=
N
+
[
ω
m
A
ω
m
B
]
−
N
+
[
b
g
A
b
g
B
]
(21)
{^V}{\hat \omega}=N^+\left[ \begin{array}{cc} \omega_{mA} \\ \omega_{mB} \\\end{array}\right]-N^+\left[ \begin{array}{cc} b_{gA} \\ b_{gB} \\\end{array}\right]\tag{21}
Vω^=N+[ωmAωmB]−N+[bgAbgB](21)其中,
N
=
[
A
R
V
B
R
V
]
,
N
+
=
(
N
T
N
)
−
1
N
T
N=\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right],N^+=(N^TN)^{-1}N^T
N=[ARVBRV],N+=(NTN)−1NT,然后带入上式Eq.19,可推导得到:
V
ω
^
=
N
+
(
[
A
R
V
B
R
V
]
V
ω
+
[
b
g
A
b
g
B
]
+
[
n
g
A
n
g
B
]
)
−
N
+
[
b
g
A
b
g
B
]
{^V}{\hat \omega}=N^+\left({\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{^V}{\omega}+\left[ \begin{array}{cc} b_{gA} \\ b_{gB} \\\end{array}\right]+\left[ \begin{array}{cc} n_{gA} \\ n_{gB} \\\end{array}\right]}\right)-N^+\left[ \begin{array}{cc} b_{gA} \\ b_{gB} \\\end{array}\right]
Vω^=N+([ARVBRV]Vω+[bgAbgB]+[ngAngB])−N+[bgAbgB]
⇒
V
ω
^
=
N
+
(
[
A
R
V
B
R
V
]
V
ω
+
[
n
g
A
n
g
B
]
)
\Rightarrow {^V}{\hat \omega}=N^+\left({\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{^V}{\omega}+\left[ \begin{array}{cc} n_{gA} \\ n_{gB} \\\end{array}\right]}\right)
⇒Vω^=N+([ARVBRV]Vω+[ngAngB])因为
N
+
N^+
N+为矩阵
N
N
N的广义逆矩阵,因此:
N
+
∗
N
=
E
N^+*N=E
N+∗N=E,所以得到:
⇒
V
ω
^
=
V
ω
+
N
+
[
n
g
A
n
g
B
]
(22)
\Rightarrow {^V}{\hat \omega}={^V}{\omega}+{N^+}\left[ \begin{array}{cc} n_{gA} \\ n_{gB} \\\end{array}\right]\tag{22}
⇒Vω^=Vω+N+[ngAngB](22)通过以上两个式子,我们可以将虚拟陀螺仪的测量值,与原始IMU的测量值类似表示为:
ω
m
V
=
V
ω
+
b
g
V
+
n
g
V
,
n
g
V
∽
N
(
0
,
Q
g
V
)
(23)
\color{red}{\omega _{mV}={^V}ω+b_{gV}+n_{gV},n_{gV} \backsim \mathcal N(0,Q_{gV})\tag{23}}
ωmV=Vω+bgV+ngV,ngV∽N(0,QgV)(23)
ω
m
V
,
b
g
V
,
n
g
V
ω_{mV}, b_{gV}, n_{gV}
ωmV,bgV,ngV分别是“虚拟”IMU的测量值,偏置向量和噪声:
ω
m
V
=
△
N
+
[
ω
m
A
ω
m
B
]
,
b
g
V
=
△
N
+
[
b
g
A
b
g
B
]
,
n
g
V
=
△
N
+
[
n
g
A
n
g
B
]
(24)
\omega_{mV}\overset{△}{=}N^+\left[ \begin{array}{cc} \omega_{mA} \\ \omega_{mB} \\\end{array}\right],b_{gV}\overset{△}{=}N^+\left[ \begin{array}{cc}b_{gA} \\ b_{gB} \\\end{array}\right],n_{gV}\overset{△}{=}N^+\left[ \begin{array}{cc}n_{gA} \\ n_{gB} \\\end{array}\right]\tag{24}
ωmV=△N+[ωmAωmB],bgV=△N+[bgAbgB],ngV=△N+[ngAngB](24)噪声协方差矩阵
Q
g
V
Q_{gV}
QgV可计算为:
Q
g
V
=
σ
g
A
2
N
+
N
+
T
=
σ
g
A
2
(
[
A
R
V
B
R
V
]
T
[
A
R
V
B
R
V
]
)
−
1
=
σ
g
A
2
2
I
3
(25)
Q_{gV}=\sigma^2_{gA}N^+{N^+}^T=\sigma^2_{gA}\left({\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]^T\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]}\right)^{-1}={\sigma^2_{gA} \over 2}I_3\tag{25}
QgV=σgA2N+N+T=σgA2([ARVBRV]T[ARVBRV])−1=2σgA2I3(25)根据Eq. 24,
b
g
V
b_{gV}
bgV的连续时间动力学可以描述为:
b
˙
g
V
(
t
)
=
n
w
g
V
(
t
)
,
n
(
w
g
V
)
∽
N
(
0
,
Q
w
g
V
)
(26)
\dot{b}_{gV}(t)=n_{wgV}(t),n(wgV)\backsim \mathcal N(0,Q_{wgV}) \tag{26}
b˙gV(t)=nwgV(t),n(wgV)∽N(0,QwgV)(26)将上述噪声建模为:
Q
w
g
V
=
△
N
+
[
σ
w
g
A
2
I
3
0
0
σ
w
g
B
2
I
3
]
(
N
+
)
T
(27)
Q_{wgV}\overset{△}{=}N^+\left[ \begin{array}{cc} \sigma^2_{wgA}I_3 & 0 \\ 0 & \sigma^2_{wgB}I_3 \\\end{array}\right] \tag{27}(N^+)^T
QwgV=△N+[σwgA2I300σwgB2I3](N+)T(27)与Eq. 25类似,Eq. 27也表明通过产生虚拟测量,相应的陀螺仪的偏置漂移较慢。
2.虚拟加速度计模型
与虚拟陀螺仪类似,为了推导虚拟加速度计的模型,我们从等式开始: G p A = G p V + G R V V p A (28) {^G}p_A={^G}p_V+{^G}{R_V}{^V}p_A \tag{28} GpA=GpV+GRVVpA(28)上式可理解为平移+旋转,对Eq.28求一阶导数和二阶导数可得: G v A = G v v + G R V ⌊ V ω ⌋ V p A {^G}v_A={^G}v_v+{^G}R_V \lfloor {^{V}}\omega \rfloor {^V}p_A GvA=Gvv+GRV⌊Vω⌋VpA G a A = G a V + G R V ⌊ V ω ⌋ 2 V p A + G R V ⌊ V ϕ ⌋ V p A {^G}a_A={^G}a_V+{^G}R_V \lfloor {^{V}}\omega \rfloor^2 {^V}p_A+{^G}R_V \lfloor {^{V}}\phi \rfloor {^V}p_A GaA=GaV+GRV⌊Vω⌋2VpA+GRV⌊Vϕ⌋VpA其中 V ω , V ϕ ∈ R 3 {^{V}}\omega,{^{V}}\phi∈\mathbb R^3 Vω,Vϕ∈R3为全局帧中虚拟IMU帧的角速度和角加速度。将EQ.2带入上式可得出: a m = I R G ( G a − G g ) + b a + n a , n a ∽ N ( 0 , σ g 2 I 3 ) (2) a _m={^I}R _G({^G}a-{^G}{g})+b_a+n_a,n_a \backsim \mathcal N(0,\sigma^2_gI_3) \tag{2} am=IRG(Ga−Gg)+ba+na,na∽N(0,σg2I3)(2) ⇒ a m A = A R G ( G a A − G g ) + b a A + n a A \Rightarrow a _{mA}={^A}R _G({^G}a_A-{^G}{g})+b_{aA}+n_{aA} ⇒amA=ARG(GaA−Gg)+baA+naA ⇒ a m A − b a A − n a A = A R G ( G a A − G g ) \Rightarrow a _{mA}-b_{aA}-n_{aA}={^A}R _G({^G}a_A-{^G}{g}) ⇒amA−baA−naA=ARG(GaA−Gg)带入: G a A = G a V + G R V ( ⌊ V ω ⌋ 2 V p A + ⌊ V ϕ ⌋ V p A ) {^G}a_A={^G}a_V+{^G}R_V (\lfloor {^{V}}\omega \rfloor^2 {^V}p_A+ \lfloor {^{V}}\phi \rfloor {^V}p_A) GaA=GaV+GRV(⌊Vω⌋2VpA+⌊Vϕ⌋VpA) a m A − b a A − n a A = A R G ( G a V + G R V ( ⌊ V ω ⌋ 2 V p A + ⌊ V ϕ ⌋ V p A ) − G g ) a _{mA}-b_{aA}-n_{aA}={^A}R _G( {^G}a_V+{^G}R_V (\lfloor {^{V}}\omega \rfloor^2 {^V}p_A+ \lfloor {^{V}}\phi \rfloor {^V}p_A)-{^G}{g}) amA−baA−naA=ARG(GaV+GRV(⌊Vω⌋2VpA+⌊Vϕ⌋VpA)−Gg) ⇒ a m A − b a A − n a A = A R G ( G a V − G g ) + A R V ( ⌊ V ω ⌋ 2 V p A + ⌊ V ϕ ⌋ V p A ) \Rightarrow a _{mA}-b_{aA}-n_{aA}={^A}R _G( {^G}a_V-{^G}{g})+{^A}R_V (\lfloor {^{V}}\omega \rfloor^2 {^V}p_A+ \lfloor {^{V}}\phi \rfloor {^V}p_A) ⇒amA−baA−naA=ARG(GaV−Gg)+ARV(⌊Vω⌋2VpA+⌊Vϕ⌋VpA)且 s V = △ V R G ( G a V − G g ) , a ⌊ b ⌋ = − b ⌊ a ⌋ s_V\overset{△}{=}{^V}R_G({^G}a_V-{^G}{g}), a\lfloor b \rfloor=-b\lfloor a \rfloor sV=△VRG(GaV−Gg),a⌊b⌋=−b⌊a⌋ a m A − b a A − n a A = A R V ( s V + ⌊ V ω ⌋ 2 V p A − ⌊ V p A ⌋ V ϕ ) (30) a _{mA}-b_{aA}-n_{aA}={^A}R_V (s_V+\lfloor {^{V}}\omega \rfloor^2 {^V}p_A-\lfloor {^V}p_A \rfloor{^{V}}\phi) \tag{30} amA−baA−naA=ARV(sV+⌊Vω⌋2VpA−⌊VpA⌋Vϕ)(30)类似于计算EQ.20中 ω \omega ω的最佳估计值,叠加来自两个IMU的加速度计测量值EQ.30: s ^ V = a r g m i n s V ∥ [ a m A a m B ] − [ A R V B R V ] s V + Y V ϕ − S ( V ω ) − [ b a A b a B ] ∥ 2 2 (32) \hat{s}_V=arg \underset{{s}_V} {min}\begin{Vmatrix}{\left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{s_V} +Y{^V}\phi-S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right]}\end{Vmatrix}^2_2 \tag{32} s^V=argsVmin∥∥∥∥[amAamB]−[ARVBRV]sV+YVϕ−S(Vω)−[baAbaB]∥∥∥∥22(32)其中,矩阵 Y Y Y和运算符 S ( ⋅ ) S(\cdot) S(⋅)在EQ.15和EQ.16处定义。在上式EQ.32中,旋转加速度 V ϕ {^V}\phi Vϕ是未知的,并且是无法直接由IMU传感器测量得到,如果 V ϕ {^V}\phi Vϕ不能被正确的得到, s V s_V sV也不能准确的表示。由未知的视觉特征被概率地边缘化所启发,通过 Z T Z^T ZT左零空间投影,EQ.32等价于: s ^ V = a r g m i n s V × ∥ Z T ( [ a m A a m B ] − [ A R V B R V ] s V − S ( V ω ) − [ b a A b a B ] ) ∥ 2 2 (33) \hat{s}_V=arg \underset{{s}_V} {min}\times \begin{Vmatrix}{Z^T \left( \left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{s_V} -S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right] \right)} \end{Vmatrix}^2_2 \tag{33} s^V=argsVmin×∥∥∥∥ZT([amAamB]−[ARVBRV]sV−S(Vω)−[baAbaB])∥∥∥∥22(33) 0 = Z T ( [ a m A a m B ] − [ A R V B R V ] s ^ V − S ( V ω ) − [ b a A b a B ] ) 0=Z^T \left( \left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{\hat{s}_V} -S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right] \right) 0=ZT([amAamB]−[ARVBRV]s^V−S(Vω)−[baAbaB]) Z T [ A R V B R V ] s ^ V = Z T ( [ a m A a m B ] − S ( V ω ) − [ b a A b a B ] ) , T = ( Z T N ) + Z T Z^T\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]{\hat{s}_V}=Z^T \left( \left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right] \right),T=(Z^TN)^+Z^T ZT[ARVBRV]s^V=ZT([amAamB]−S(Vω)−[baAbaB]),T=(ZTN)+ZT s ^ V = ( Z T [ A R V B R V ] ) + Z T ( [ a m A a m B ] − S ( V ω ) − [ b a A b a B ] ) {\hat{s}_V}=\left (Z^T\left[ \begin{array}{cc} {^A}R_V \\ {^B}R_V \\\end{array}\right]\right)^+ Z^T \left( \left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right] \right) s^V=(ZT[ARVBRV])+ZT([amAamB]−S(Vω)−[baAbaB]) ⇒ s ^ V = T ( [ a m A a m B ] − S ( V ω ) − [ b a A b a B ] ) (34) \Rightarrow \hat{s}_V=T \left( \left[ \begin{array}{cc} a_{mA} \\a_{mB} \\\end{array}\right] -S({^V\omega})-\left[ \begin{array}{cc} b_{aA} \\b_{aB} \\\end{array}\right] \right) \tag{34} ⇒s^V=T([amAamB]−S(Vω)−[baAbaB])(34)其中 T = ( Z T N ) + Z T T=(Z^TN)^+Z^T T=(ZTN)+ZT, Z T Z^T ZT可以通过QR分解来计算,结合: a m V = T ( a m − S ( ω m V ) ) a_{mV}=T(a_m-S(\omega_{mV})) amV=T(am−S(ωmV)) a m A − b a A − n a A = A R V ( s V + ⌊ V ω ⌋ 2 V p A − ⌊ V p A ⌋ V ϕ ) a _{mA}-b_{aA}-n_{aA}={^A}R_V (s_V+\lfloor {^{V}}\omega \rfloor^2 {^V}p_A-\lfloor {^V}p_A \rfloor{^{V}}\phi) amA−baA−naA=ARV(sV+⌊Vω⌋2VpA−⌊VpA⌋Vϕ) ⇒ a m V = s V + b a V + n a V − T ⋅ S a (35) \Rightarrow \color{red}{a_{mV}=s_V+b_{aV}+n_{aV}-T \cdot S_a} \tag{35} ⇒amV=sV+baV+naV−T⋅Sa(35) b a V = △ T [ b a A b a B ] , n a V = △ T [ n a A n a B ] (36) b_{aV}\overset{△}{=}T\left[ \begin{array}{cc}b_{aA} \\ b_{aB} \\\end{array}\right],n_{aV}\overset{△}{=}T\left[ \begin{array}{cc}n_{aA} \\ n_{aB} \\\end{array}\right]\tag{36} baV=△T[baAbaB],naV=△T[naAnaB](36) S a = S ( ω m V − V ω ) = [ A R V ζ V p A B R V ζ V p B ] , ζ = ⌊ ω m V ⌋ 2 − ⌊ V ω ⌋ 2 (37) S_a=S(\omega_{mV}-{^V}\omega)=\left[ \begin{array}{cc} {^A}R_V\zeta{^V}p_A \\ {^B}R_V\zeta{^V}p_B \\\end{array}\right],\zeta=\lfloor \omega_{mV} \rfloor^2-\lfloor {^V}\omega \rfloor^2 \tag{37} Sa=S(ωmV−Vω)=[ARVζVpABRVζVpB],ζ=⌊ωmV⌋2−⌊Vω⌋2(37)虚拟加速度计的测量会受到陀螺仪偏差、加速度计偏差、陀螺仪噪声和原加速度计噪声的影响。这不同于原始的IMU测量方程,即Eq. 1和2,在这些方程中,测量噪声是不相关的,偏差是独立的。
3.虚拟IMU传播
在本节中,提出了一种集成虚拟IMU测量的方法,对于IMU状态和误差,即公式13和14。与单IMU的情况类似,即公式3和9,我们定义虚拟IMU的状态和误差为: x V = [ G V q ˉ T , b g V T , G v V T , b a V T , G p V T ] T ∈ R 16 (40) x_V=[{{^G}_V} \bar{q}^T,b_{gV}^T,{^G}{v_V}^T,b_{aV}^T,{^G}{p_V}^T]^T \in \mathbb R^{16} \tag{40} xV=[GVqˉT,bgVT,GvVT,baVT,GpVT]T∈R16(40) x ~ = [ V θ ~ T , b ~ g V T , G v ~ V T , b ~ a V T , G p V ~ T ] T ∈ R 15 (41) \tilde x=[{^V} \tilde{\theta}^T,\tilde b_{gV}^T,{^G}{\tilde v_V}^T,\tilde b_{aV}^T,{^G}\tilde {p_V}^T]^T \in \mathbb R^{15}\tag{41} x~=[Vθ~T,b~gVT,Gv~VT,b~aVT,GpV~T]T∈R15(41)它的连续时间传播方程为: x ^ ˙ V = f ( x ^ , ω m V , a m V ) (42) \dot{\hat{x}}_V=f(\hat{x},\omega_{mV},a_{mV})\tag{42} x^˙V=f(x^,ωmV,amV)(42) x ~ ˙ V = F V x ~ V + G V n V (43) \dot{\tilde{x}}_V=F_V\tilde x_V+G_Vn_V\tag{43} x~˙V=FVx~V+GVnV(43)其中, n V = [ n g V T , n w g V T , n a V T , n w a V T ] T ∈ R 12 (44) n_V=[{n_{gV}}^T,{n_{wgV}}^T,{n_{aV}}^T,{n_{waV}}^T]^T \in \mathbb R^{12} \tag{44} nV=[ngVT,nwgVT,naVT,nwaVT]T∈R12(44)式42和43提供了基于虚拟IMU的执行状态和错误状态传播的核心方程。这种传播可以直接集成到不同类型的紧密耦合定位算法中,与使用单个IMU的过程相同。为了实现Eq. 42,我们首先通过Eq. 13和14生成所有IMU的虚拟IMU测量值,其余的位姿积分步骤与Eq.11相同。通过表示: ω ^ = ω V m − b ^ g V , a ^ V = a V m − b ^ a V + T S ^ a (45) \hat{\omega}=\omega_{V_m}-\hat{b}_{gV},\hat{a}_V=a_{Vm}-\hat{b}_{aV}+T\hat{S}_a \tag{45} ω^=ωVm−b^gV,a^V=aVm−b^aV+TS^a(45)状态转移矩阵和噪声雅可比矩阵可由Eq.43计算得出,详细的表达式如下: F V = [ − ⌊ ω ^ ⌋ − I 3 0 3 0 3 0 3 0 3 0 3 0 3 0 3 0 3 − V R ^ G T ⌊ a ^ V ⌋ − V R ^ G T T Ψ 0 3 − V R ^ G T 0 3 0 3 0 3 0 3 0 3 0 3 0 3 0 3 I 3 0 3 0 3 ] F_V=\left[ \begin{array}{cc} -\lfloor \hat{\omega} \rfloor & -I_3& 0_3 & 0_3 & 0_3 \\ 0_3& 0_3& 0_3& 0_3& 0_3 \\ -{^V}\hat{R}^T_G\lfloor \hat{a}_V \rfloor &-{^V}\hat{R}^T_G T\Psi &0_3 &-{^V}\hat{R}^T_G&0_3 \\ 0_3& 0_3& 0_3& 0_3& 0_3 \\ 0_3& 0_3& I_3& 0_3& 0_3\\\end{array}\right] FV=⎣⎢⎢⎢⎢⎡−⌊ω^⌋03−VR^GT⌊a^V⌋0303−I303−VR^GTTΨ030303030303I30303−VR^GT03030303030303⎦⎥⎥⎥⎥⎤ G V = [ − I 3 0 3 0 3 0 3 0 3 I 3 0 3 0 3 0 3 − V R ^ G T T Ξ − V R ^ G T 0 3 0 3 0 3 0 3 I 3 0 3 0 3 0 3 0 3 ] G_V=\left[ \begin{array}{cc} -I_3& 0_3 & 0_3 & 0_3 \\ 0_3& I_3&0_3& 0_3 \\0_3 &-{^V}\hat{R}^T_G T\Xi &-{^V}\hat{R}^T_G&0_3 \\ 0_3& 0_3& 0_3& I_3 \\ 0_3& 0_3& 0_3& 0_3\\\end{array}\right] GV=⎣⎢⎢⎢⎢⎡−I30303030303I3−VR^GTTΞ03030303−VR^GT0303030303I303⎦⎥⎥⎥⎥⎤与单一IMU情况相比, F V F_V FV和 G V G_V GV增加了以下非零项: ∂ G v ~ ˙ V ∂ b ~ g V = − V R ^ G T T Ψ , ∂ G v ~ ˙ V ∂ n g V = − V R ^ G T T Ξ (47) {∂{^G}\dot{\tilde{v}}_V \over ∂{\tilde{b}}_{gV}}=-{^V}\hat{R}^T_G T\Psi , {∂{^G}\dot{\tilde{v}}_V \over ∂n_{gV}}=-{^V}\hat{R}^T_G T\Xi \tag{47} ∂b~gV∂Gv~˙V=−VR^GTTΨ,∂ngV∂Gv~˙V=−VR^GTTΞ(47)其中, Ψ = Ξ = [ A R V ( − ⌊ V ω ^ ⌋ ⌊ V p A ⌋ − ⌊ ⌊ V ω ^ ⌋ V p A ⌋ ) B R V ( − ⌊ V ω ^ ⌋ ⌊ V p B ⌋ − ⌊ ⌊ V ω ^ ⌋ V p B ⌋ ) ] (48) \Psi=\Xi=\left[ \begin{array}{cc} {^A}R_V (-\lfloor {^V}\hat{\omega} \rfloor \lfloor {^V}p_A \rfloor-\lfloor \lfloor {^V}\hat{\omega} \rfloor {^V}p_A \rfloor ) \\ {^B}R_V (-\lfloor {^V}\hat{\omega} \rfloor \lfloor {^V}p_B \rfloor-\lfloor \lfloor {^V}\hat{\omega} \rfloor {^V}p_B \rfloor ) \\\end{array}\right] \tag{48} Ψ=Ξ=[ARV(−⌊Vω^⌋⌊VpA⌋−⌊⌊Vω^⌋VpA⌋)BRV(−⌊Vω^⌋⌊VpB⌋−⌊⌊Vω^⌋VpB⌋)](48)