`
前言
imu为什么要进行对准呢?因为imu的数据输出是其自身坐标系的,一般定位为b系,平时导航的是n系,从b系到n系需要进行旋转才能让2个坐标系重合,旋转矩阵定义为Cnb。如何求这个Cnb?
如果imu是高精度的,它的陀螺能感知地球的自转(15°/小时),那么我们可以通过静止时的重力g和地球自转角速率wie来求Cnb。
如果imu是低精度的,不能感知地球自转,那就只能通过其他传感器,例如gnss或者磁力计来辅助求解了。
一、解析粗对准
当载体静止时,我们能得到地球自转角速度g和重力矢量wie在初始坐标系的分量,imu器件中陀螺仪的角速度wib和加速度计的比力值fib也可以求出,且他们之间可以旋转矩阵Cnb进行转换
虽然可以得到上面2个等式,但还不能求出Cnb,我们通过叉乘(两个向量的叉乘出来的向量,分别垂直于这两个向量)的形式分别构造2个向量
将上面的公式整合到一起,就可以求出Cnb
式中的陀螺wibb和加计比力数据fibb用的是静止时间段内求的一个均值,目的是降低陀螺高频噪声和高频晃动的影响。
注:只有重力g和地球自转wie不共线时,才能求出上面的逆矩阵,故在地球两极不能用粗对准方法;由于测量误差的存在,姿态矩阵不是正交矩阵。
二、进阶版
三、代码实现
.链接: https://github.com/shaoudelaochao/ImuAlignment/tree/master/ImuAlignment
代码包含解析粗对准和基于速度误差的kalman精对准2部分。