6轴IMU包含3轴加速度计与3轴陀螺仪(9轴IMU还包含磁力计),加速度计输出三轴独立的加速度信号,陀螺仪输出独立的三轴角速度信号。下面重点分析一下IMU的误差模型。
一、IMU误差来源
1.1 轴偏角误差(Axis Misalignments)
理想情况下,XYZ三轴相互正交,且加速度计与陀螺仪相互重合,但一般加速度计与陀螺仪分开制造,其坐标系并不重合,且加速度计与陀螺仪三轴也分开制造,其三轴也不完全正交,因此带来了轴偏角误差,用公式
T
T
T表示轴偏角误差的变换矩阵。其中陀螺仪与加速度计的轴偏角通过坐标系转换可以得到(假定x轴重合):
T
g
=
[
1
−
γ
y
z
γ
z
y
γ
x
z
1
−
γ
z
x
−
γ
x
y
γ
y
x
1
]
T^g= \begin{bmatrix} 1 & -\gamma_{yz} & \gamma_{zy}\\ \gamma_{xz} & 1 & -\gamma_{zx}\\ -\gamma_{xy} & \gamma_{yx} & 1 \end{bmatrix}
Tg=⎣⎡1γxz−γxy−γyz1γyxγzy−γzx1⎦⎤
T
a
=
[
1
−
α
y
z
α
z
y
0
0
−
α
z
x
0
0
1
]
T^a= \begin{bmatrix} 1 & -\alpha_{yz} & \alpha_{zy}\\ 0 & 0 & -\alpha_{zx}\\ 0 & 0 & 1 \end{bmatrix}
Ta=⎣⎡100−αyz00αzy−αzx1⎦⎤
1.2 温漂
除了常见的AD转换器带来的高斯白噪声之外,IMU内部随着时间跟温度的变化,还会带来温度漂移,随着温度的变化,温漂不断变化,近似直线。
1.3 尺度因子
传感器数字信号向物理信号转换时带来的误差称为尺度因子,用公式
K
K
K表示。其中加速度计与陀螺仪的尺度因子分别记作:
K
a
=
[
s
x
a
0
0
0
s
y
a
0
0
0
s
z
a
]
K^a= \begin{bmatrix} s_x^a & 0 & 0\\ 0 & s_y^a & 0\\ 0 & 0 & s_z^a \end{bmatrix}
Ka=⎣⎡sxa000sya000sza⎦⎤
K ω = [ s x ω 0 0 0 s y ω 0 0 0 s z ω ] K^\omega= \begin{bmatrix} s_x^\omega & 0 & 0\\ 0 & s_y^\omega & 0\\ 0 & 0 & s_z^\omega \end{bmatrix} Kω=⎣⎡sxω000syω000szω⎦⎤
1.4 噪声
一般是由AD转换器带来的外部噪声,其服从高斯分布,用公式 n n n表示。
1.5 零偏(Bias)
当IMU静止放置时,加速度计三轴应输出 [ 0 , 0 , g ] [0, 0, g] [0,0,g],其中 g g g为重力加速度,陀螺仪三轴应输出 [ 0 , 0 , 0 ] [0, 0, 0] [0,0,0],但因加工工艺不可避免带来误差,导致静止输出非前述所示,其输出会随着时间产生缓慢变化,造成数据漂移。零偏,即随机游走,可视为布朗运动。用公式 b b b表示。
二、IMU误差表达式
加速度计与陀螺仪的公式为:
a
=
T
a
K
a
(
a
m
−
b
a
−
b
a
−
n
a
)
a=T^aK^a(a_m-b_a-b^a-n^a)
a=TaKa(am−ba−ba−na)
ω
=
T
g
K
g
(
ω
m
−
b
w
−
b
g
−
n
g
)
\omega=T^gK^g(\omega_m-b_w-b^g-n^g)
ω=TgKg(ωm−bw−bg−ng)
b
a
T
=
k
a
∗
T
+
c
a
b_a^T=k_a*T+c_a
baT=ka∗T+ca
b
o
m
e
g
a
T
=
k
o
m
e
g
a
∗
T
+
c
o
m
e
g
a
b_omega^T=k_omega*T+c_omega
bomegaT=komega∗T+comega
其中
a
a
a表示加速度计,
g
g
g表示陀螺仪,
a
m
a_m
am与
ω
m
\omega_m
ωm表示测量值。
b
a
b_a
ba与
b
ω
b_\omega
bω分别表示恒温零漂,
k
a
k_a
ka,
c
a
c_a
ca,
k
ω
k_\omega
kω,
c
ω
c_\omega
cω分别表示加速度计与陀螺仪的温漂系数。
三、IMU标定
在SLAM领域中,单纯的视觉传感器在现阶段无法通过计算机视觉完成精确的位姿计算,一般采用imu作为补充,进行多传感器的融合处理。在进行紧耦合之前,需要矫正imu的内参,即标定上述的imu误差,提高位姿精度。其中轴偏角误差,尺度因子,温漂等属于确定性误差,我们通过imu_tk工具进行标定;噪声及零偏属于随机误差,我们通过imu_utils工具进行标定。
微信公众号:Quant_Times