![67e3a247c6f20ffdcce0fa631345fa56.png](https://i-blog.csdnimg.cn/blog_migrate/f8e58ae419d1dfb666c01b7c7e27346e.png)
现在先记录一下学习的内容,以后学的更深入的时候,再过来更新修改~
IMU标定
步骤
- 明确IMU模型
a-measured 是最终传感器输出,也就是我们采集到的数据。bias是零偏,就是我们什么都没干,坐标系的方位角也和电子罗盘的坐标系一样的时候的误差。本该是0,但是因为做工工艺问题,就是偏了一些。I是刻度系数,M是耦合系数矩阵。I的影响是,对于某个轴,加速度本该测出1,但是测出1.1, 本该测出20, 测出来个20.2, 本该测出50,测出来个50.5。那么对于这个轴,刻度系数的值应该是1.1。M表达的是x, y, z轴之间的互相影响。如果传感器完美,那么M应该全部等于零,I应该也都等于1。 I是一个对角矩阵,M是是非对角以外的地方有数值,这两个合起来,变成刻度耦合矩阵。
2. 获取静止状态时候的数据(加速度,角加速度等)
3. 通过拟合方程找出bias和刻度系数矩阵。(比如可以通过最小二乘法, 拟合)。下面是通过numpy的linalg.lstsq的函数得到的。
estimated_scaling_cross_coupling_matrix_and_bias[i,:] = np.linalg.lstsq(acceleration_vectors.T,
measured_acceleration_history[i, 1:])[0]
当然IMU出厂bias会在data sheet上找到。以上方式为找除了出厂bias以外的bias。
封面图片中,前面3x3是刻度耦合矩阵,最后一列是bias。
20191214