『imu_tk』工具标定IMU的基本原理
IMU误差模型
- 对于加速度计和陀螺仪,定义正交系AOF(GOF)和非正交系AF(GF):
- AOF(GOF)系的x轴与AF(GF)系x轴重合
- AOF(GOF)系的y轴与AF(GF)系的xy平面重合
- 同时,定义正交系BF为载体系,非正交系S为传感器系。在旋转的角度较小时,可以定义非正交系中的测量
s
S
s^S
sS到正交系B的变换为:
s B = T s S , T = [ 1 − β y z β z y β x z 1 − β z x − β x y β y x 1 ] s^B=Ts^S, \ \ \ T = \begin{bmatrix} 1 & -\beta_{yz} & \beta_{zy}\\ \beta_{xz} & 1 & -\beta_{zx} \\ -\beta_{xy} & \beta_{yx} & 1 \end{bmatrix} sB=TsS, T= 1βxz−βxy−βyz1βyxβzy−βzx1
其中, β i j \beta_{ij} βij代表S系中的 i i i轴绕BF系中 j j j轴的旋转。
对于IMU标定,可以分为加速度计标定和陀螺仪标定两部分。其中,二者待标定参数的形式上是相同的。(其中,上标 s s s代表非正交系中的向量,上标 o o o代表正交系中的向量)
- 加速度计模型
(
a
c
c
)
(acc)
(acc):
a O = T a K a ( a S + b a + v a ) a^O = T^aK^a(a^S+b^a+v^a) aO=TaKa(aS+ba+va) - 陀螺仪模型
(
g
y
r
o
)
(gyro)
(gyro):
w O = T g K g ( w S + b g + v g ) w^O = T^gK^g(w^S+b^g+v^g) wO=TgKg(wS+bg+vg) - 对于加速度计和陀螺仪的每个轴上都有比例因子误差和交轴耦合误差,分别定义为 K g , K a K^g,K^a Kg,Ka 和 T g , T a T^g,T^a Tg,Ta。对于二者的量测噪声 v g , v a v^g,v^a vg,va,可以看做是高斯白噪声,由于本文采用静止区间取测量均值的方法进行计算,故可直接忽略该项。
其中,
T
g
=
[
1
−
γ
y
z
γ
z
y
γ
x
z
1
−
γ
z
x
−
γ
x
y
γ
y
x
1
]
,
K
g
=
[
s
x
g
0
0
0
s
y
g
0
0
0
s
z
g
]
T^g = \begin{bmatrix} 1 & -\gamma_{yz} & \gamma_{zy}\\ \gamma_{xz} & 1 & -\gamma_{zx} \\ -\gamma_{xy} & \gamma_{yx} & 1 \end{bmatrix},K^g = \begin{bmatrix} s^g_x & 0 &0 \\ 0 & s^g_y & 0\\ 0 & 0 & s^g_z \end{bmatrix}
Tg=
1γxz−γxy−γyz1γyxγzy−γzx1
,Kg=
sxg000syg000szg
我们定义AOF系与BF系完全重合,故
T
a
T^a
Ta 可以简化为:
T
a
=
[
1
−
α
y
z
α
z
y
0
1
−
α
z
x
0
0
1
]
,
K
a
=
[
s
x
a
0
0
0
s
y
a
0
0
0
s
z
a
]
T^a = \begin{bmatrix} 1 & -\alpha_{yz} & \alpha_{zy}\\ 0 & 1 & -\alpha_{zx} \\ 0 & 0 & 1 \end{bmatrix},K^a = \begin{bmatrix} s^a_x & 0 &0 \\ 0 & s^a_y & 0\\ 0 & 0 & s^a_z \end{bmatrix}
Ta=
100−αyz10αzy−αzx1
,Ka=
sxa000sya000sza
利用优化的方法求解
对于加速度计,我们定义损失函数:(
g
g
g是当地重力加速度)
L
(
θ
a
c
c
)
=
∑
k
=
1
M
(
∣
∣
g
∣
∣
2
−
∣
∣
a
O
∣
∣
2
)
2
L(\theta^{acc})=\sum^M_{k=1}(||\bold{g}||^2-||\bold{a}^O||^2)^2
L(θacc)=k=1∑M(∣∣g∣∣2−∣∣aO∣∣2)2
对于陀螺仪,我们定义损失函数:
L
(
θ
g
y
r
o
)
=
∑
k
=
2
M
∣
∣
u
a
,
k
−
u
g
,
k
∣
∣
2
L(\theta^{gyro})=\sum^M_{k=2}{||\bold{u}_{a,k}-\bold{u}_{g,k}||^2}
L(θgyro)=k=2∑M∣∣ua,k−ug,k∣∣2
其中,
M
M
M代表记录的
M
M
M个方向,
u
g
,
k
=
ψ
[
w
i
S
,
u
a
,
k
−
1
]
\bold{u}_{g,k}=\psi[w^S_i,\bold{u}_{a,k-1}]
ug,k=ψ[wiS,ua,k−1]定义为由
k
−
1
k-1
k−1时刻的重力加速度向量和
k
−
1
k-1
k−1到
k
k
k时刻区间内陀螺仪积分计算出的
k
k
k时刻重力加速度方向(由于校准加速度计在前,此时可认为其测量值无偏)。本文采用
L
e
v
e
n
b
e
r
g
−
M
a
r
q
u
a
r
d
t
Levenberg-Marquardt
Levenberg−Marquardt算法最小化损失函数。
校准步骤
参数设置
- 文中推荐 N N N 取 36 → 50 36 \to 50 36→50 个位置数据
- 设定初始静止区间长度 T i n i t T_{init} Tinit,文中推荐值为 50 s 50s 50s
- 设定间隔区间长度 T w a i t T_{wait} Twait, 推荐取值 1 → 4 s 1 \to 4s 1→4s
- 设定时间窗 w i n _ s i z e win\_size win_size大小,一般设置为静止区间长度的一半
步骤
- 根据时间戳,提取从 t 0 t_0 t0到 t 0 + T i n i t t_0+T_{init} t0+Tinit的数据序列
- 计算该序列数据的方差作为初始阈值 n o r m t h norm_{th} normth,乘以一个系数 t h m u l t th_{mult} thmult后作为当前阈值,根据当前阈值提取静态区间
- 根据当前提取出的静态区间校准加速度计
- 根据校准后的加速度计和动态区间陀螺仪的积分校准陀螺仪
校准结果
-
提取出的静态区间如图所示:
局部放大后:
可以看到,静止区间提取的都很恰当,如果提取不完整或者有其他问题,酌情修改 w i n _ s i z e win\_size win_size和间隔区间大小即可。 -
去除 b i a s bias bias后的陀螺仪数据如下:
局部放大后:
经过四阶龙格库塔法积分后,即可得到 Δ t \Delta{t} Δt时间内IMU旋转角度,并根据 t t t时刻的 a t O a^O_{t} atO计算出 t + 1 t+1 t+1时刻的 a ′ {a}' a′,通过迭代求解,使得 a ′ {a}' a′趋近于 a t + 1 O a^O_{t+1} at+1O。
残差
一般来说,算法收敛后,加速度计和陀螺仪 c o s t cost cost值都至少应该在 1 0 − 3 10^{-3} 10−3数量级才能保证校准精度。我实际校准MPU6050,是可以保证这一点的。
附上论文中校准后的参数:
我自己校准的结果:
Accelerometers calibration: Better calibration obtained using threshold multiplier 8 with residual 0.000701741
Misalignment Matrix
1 -9.40579e-05 -0.00345677
0 1 0.00620255
-0 0 1
Scale Matrix
1.00179 0 0
0 1.00076 0
0 0 0.979337
Bias Vector
0.286974
-0.244268
-0.869412
Accelerometers calibration: inverse scale factors:
0.998216
0.999239
1.0211
Gyroscopes calibration: residual 0.000793112
Misalignment Matrix
1 0.00171194 0.00134399
0.0022529 1 -0.01433
0.00430149 -0.0174916 1
Scale Matrix
1.00817 0 0
0 1.0098 0
0 0 1.0088
Bias Vector
-0.149787
-0.0270851
-0.0147985
Gyroscopes calibration: inverse scale factors:
0.991895
0.990297
0.991278
由于我采集的时候陀螺仪单位是 ° / s \degree/s °/s,而程序中默认单位是 r a d / s rad/s rad/s,所以在读取数据的时候我将数据从角度制转化成了弧度制,因而这里的bias单位是 r a d / s rad/s rad/s
注意事项
- 静止区间内一定要保证IMU处于静止状态
- 动态区间要尽量保证数据平滑