电子说
0.说在最前面的话
在阅读论文 《A Robust and Easy to Implement Method for IMU Calibration without External Equipments》的时候了解到,IMU-TK 这个开源工具是基于此论文为理论依据开发的。IMU-TK 这个工具用来标定确定性误差(系统误差),是一个基于C++的开源IMU数据处理库,用于处理惯性测量单元(IMU)数据,包括加速度计、陀螺仪和磁力计等传感器。该库提供了一组API,可以用于读取IMU数据、进行校准、等操作。
1.算法思想
加速度计的标定利用了加速度计在静止状态下的三轴数据模值等于重力加速度这一条件,采集加速度计在不同状态的静止数据(测量值),通过测量值与真实值,构建最小二乘法问题,LM求解,即可求出标定参数。
陀螺仪的标定需要加速度计数据的参与,所以需要先标定好加速度计。在标定陀螺仪时,IMU从静止状态A,通过一段时间,到了静止状态B,通过陀螺仪可以算出来A到B的旋转矩阵,而通过加速度数据也可以算出来A到B的旋转矩阵,最小化这一差异即可实现优化求解。
2.误差模型
论文中详细的推到了误差模型的方程,这里直接给出整理过的误差模型方程
在网络上可以找到大量的对此论文的详解和学习笔记,我推荐查阅作者为:声时刻 的博文。作者不仅对文中提到的论文有深厚的理解,而且还自己发布了一篇 《Low-Cost Inertial Measurement Unit Calibration With Nonlinear Scale Factors》并且利用 matlab 自己写了一个类似ICRA2014论文的算法。
3.校准流程
为了避免标定参数估计中的不可观察性,至少需要收集IMU9个不同姿态的数据,姿态数越多,标定结果越准确。
初始化时间 T一般取 50s,旋转后保持静态时间t 取1∼4s,旋转次数 N 取36∼50次。
4.生成标定参数
生成两个标定文件test_imu_acc.calib、test_imu_gyro.calib ,分别为陀螺仪和加速度计的 旋转矩阵(misalignment matrix),刻度因数(scale matrix)和零偏(bias),格式如下:
general case: [ 1 -mis_yz mis_zy ] T = [ mis_xz 1 -mis_zx ] [ -mis_xy mis_yx 1 ] "body" frame spacial case: [ 1 -mis_yz mis_zy ] T = [ 0 1 -mis_zx ] [ 0 0 1 ] Scale matrix: [ s_x 0 0 ] K = [ 0 s_y 0 ] [ 0 0 s_z ] Bias vector: [ b_x ] B = [ b_y ] [ b_z ]
给定原始传感器读数X(例如加速度),计算校准的"无偏"读数 X'
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !