IMU原理
加速度计
加速度计输出为补偿a-g后的值f(相反力/m),称为比力:
f=a−g
其中a为实际加速度。
根据a可以被位置矢量r表示 :
\mathbf{a}=\left.\frac{d^{2} \mathbf{r}}{d t^{2}}\right|_{i}=\ddot{\mathbf{r}}$$。
已知引力场向量为:
$$\overline{\mathbf{g}}=\mathbf{g}+\Omega_{i e} \Omega_{i e} \mathbf{r}
最终得到比力和位置矢量的关系:
f=dt2d2r∣∣i−g−ΩieΩier
陀螺仪
测量body相对惯性系的角速度在body frame下的值:
ωibb=ωieb+ωenb+ωnbb
计算方法
IMU误差
系统误差
系统误差可以在标定后进行补偿。
Bias Offset
Scale Factor Error
Non-linearity
不对称与死区
Quantization Error
来自模数转换
Non-orthogonality Error 非正交误差
传感器各敏感轴不垂直
Non-orthogonality Error 安装误差
随机误差
Run-to-Run Bias Offset
bias offset每次都变,不可重复。
Bias Drift/ Scale Factor Instability
单次运行bias / scale factor 不断变动
white errors
IMU实际测量模型
陀螺仪测量模型
ω~ibb=ωibb+bg+Sωibb+Nωibb+εg
ω~ibb 是陀螺仪角速度测量值 (deg/h)
ωibb 是角速度真值 (deg/h)
bg bias (deg/h)
Sgscale_factor
Ng代表非正交误差的矩阵
εg 陀螺仪噪声 (deg/h)
Ng=⎣⎡1θg,yxθg,zxθg,xy1θg,zyθg,xzθg,yz1⎦⎤
Sg=⎣⎡sg,x000sg,y000sg,z⎦⎤
加速度计测量模型
f~b=fb+ba+S1f+S2f2+Naf+δg+εa
fb加速度计加速度测量值
ba加速度真值
S1线性scale_factor
S2非线性scale_factor
Na代表非正交矩阵的误差
δg异常的重力向量(如与理论重力的偏离)
εa加速度计噪声
Na=⎣⎡1θa,yxθa,zxθa,xy1θa,zyθa,xzθa,yz1⎦⎤
S1=⎣⎡s1,x000s1,y000s1,z⎦⎤
S2=⎣⎡s2,x000s2,y000s2,z⎦⎤
IMU初始化与校准
因为INS得到速度、姿态或位置需要通过积分来完成,所以需要指定一个初值。
指定速度与位置的过程称为初始化(initialization),指定姿态初值的过程称为校准(alignment)。
位速初始化
如果有外部传感器如GPS,可以直接用外部传感值初始化位置;如果没有,可以用移动前的位置初始化(如SLAM建的全局地图)。
还有一种情况是已知位置先验,则可以用先验初始化。
如果有机器人静止,速度可以初始化为0; 如果机器人运动且有外部传感,速度可以通过如GPS的方式初始化。
姿态校准
- 先通过加速度计获取pitch和roll
fb=Rlb(−gl)=(Rbl)T(−gl)
gl=[00−g]T
fb=⎣⎡fxfyfz⎦⎤
根据上式可以得到 roll 和 pitch
- 再通过陀螺仪获取yaw。
ωibb=ωieb+ωebb
ωibbωibbωibbωibb=ωieb+0=Rebωiee=RlbRelωiee=(Rbl)T(Rle)Tωiee
ωiee=[00ωe]T
ωe 大约为15.04 deg/h。
因为roll,pitch已知,可以算出yaw。
如果机器人在接近平面的位置,可以通过小角近似roll与pitch.
最后,如果IMU比较low,不能用上面的方法算yaw角,噪声量级掩盖自转。这时可以用罗盘,磁力计,GPS等给出yaw角。
IMU标定
//TODO
ros imu
//TODO
参考
[1] Noureldin A, Karamat T B, Georgy J. Fundamentals of inertial navigation, satellite-based positioning and their integration[J]. 2013.