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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 卡尔曼滤波在我当学生的时候就用过,但是当年我似乎就是套公式,没有理解其精髓,加之时间久了有点模糊,突然需要指导学生...
    Roger_罗杰阅读 84,862评论 41 159
  • 2017年无人驾驶还处于积极研发和普及期,民用的测试和技术探索也主要在小型汽车方面,各大巨头都将2020年作为一个...
    方弟阅读 7,277评论 1 16
  • 经过看各种博客和文章,让我最清楚明白的,是xiahouzuoxin 的博客,之后又看了一些国外的文献进行自己的理解...
    marine0131阅读 7,558评论 4 11
  • 一、课程大纲1.1课程内容介绍1.1.1 Supervised Learning关于监督型学习方法,本课程涉及到的...
    xiaorun阅读 1,339评论 0 1
  • 2016年,我23岁了。 父亲那个时候,颠颠簸簸的我都已经4岁,他早早担起家庭的责任,而我怎么感觉还是一个没长大的...
    简爱3阅读 382评论 0 0