Android IMU标定

因为实验室的事情,需要做一下android手机IMU的标定,那就做一下吧,主要是计算加速度计(accelerometer)和陀螺仪(gyroscope)的bias和noise。
我查了一下,中文相关的文档很少。英文的话还是比较多的。如果想详细了解的话最好还是去看看英文相关资料,我只能告诉你怎么做。

大部分计算IMU噪声都是通过Allan方差来计算的,什么是Allan方差,大家可以自己去看看维基百科上的定义。也可以看看这个,一个标定工具,里面有简单的介绍。
首先计算bias,这个比较简单,我是通过将传感器静置在水平桌面上100s,以50hz的频率收集100s的传感器数据,然后计算平均值来计算的,gyroscope的z轴方向需要减去当地的重力加速度。
因为懒,所以不想自己去算Allan方差,直接找个别人造的轮子吧,python或者matlab版本的都有。
我用的是matlab版本的。
首先你得收集数据,这个需要你掌握一些基础的android编程知识,大家自己学去吧,然后收集好数据之后,就可以用allantool来进行计算啦。
我的数据格式如下:
acce_x, acce_y, acce_z, gyro_x, gyro_y, gyro_z
之后可以用csvread来读取数据,然后直接
allan(data, tau, 'data', 2)
其中tau = 1,因为Allan方差tau为1s时对应的值为噪声值。
就能够得到计算结果了。
示例结果如下:

allan: input data statistics:
    numpoints: 1162
          max: 10.1897
          min: 9.6678
         mean: 9.9294
       median: 9.9311
       linear: [-1.3524e-04 9.9310]
          std: 0.0815
allan: 5x MAD value for outlier detection: 0.390455
allan: regular data (1162 data points @ 50 Hz)
allan: allowable tau range: 0.02 to 12 sec. (1/rate to total_time/2)
allan: calculating Allan deviation...
       1 
allan: Elapsed time for calculation: 5.460709e-03 seconds
allan: Minimum ADEV value: 0.0147884 at tau = 1 seconds

你可能感兴趣的:(Android IMU标定)