Basic Sensor Calibration (1) -- 加速计传感器校准

本章简要介绍加速计(Accelerometer), 陀螺仪(Gyroscop)和地磁(Magnetic Field)传感器校准的基础知识。更复杂更精确的校准需要有专门的算法库来执行,本章不涉及。校准(Calibration)和融合(Fusion)是密不可分的,传感器器件供应商一般会提供一个算法库给手机设备厂商进行集成。

校准是通过计算来补偿由于环境因素和器件自身的因素造成的各种误差,之后得到比较接近于真实测量对象的值的过程。

移动设备坐标系
Basic Sensor Calibration (1) -- 加速计传感器校准_第1张图片

1. 加速计校准.
加速计传感器可以检测设备在三个轴(x, y, z)上的加速度的值。测量的加速度包含物理加速度(设备本身运动速度的变化)和地球重力加速度(Gravity)。在Android Accelerometer Sensor 里,测量值反映在(x, y, z)三轴的数据上。

  • 设备自由落体时的三轴(x, y, z)标准加速度值都应该接近于0 米每平方秒(m/s^2);
  • 设备正面朝上平放在桌面,然后向右翻转左侧向下下时,x轴上的加速度值应该为正数;
  • 设备正面朝上平放在桌面静止时,z轴的加速度值应该是 +9.81 m/s^2 (=1g), 此时设备本身的运动加速度应该为 0 m/s^2 (减去重力加速度, -9.81 m/s^2);
  • 设备正面朝上平放在桌面,然后向上运动时,z轴的加速度值应该大于+9.81 m/s^2 (> 1g),此时设备本身的运动加速度应该为正数(减去重力加速度后,-9.81 m/s^2);

加速计传感器的校准包含:

  • 温度补偿 (temperature compensation)
    一般来说,温度补偿是调整由于温度变化对系统性能产生的影响进行的补偿。在传感器领域,温度变化对性能的影响是线性的(Temperature coefficient),sensor 厂商会在发布的 datasheet里说明相应的规格参数。温度补偿一般在硬件里完成。

  • 偏差校准 (bias calibration, or offset calibration)
    这里介绍一个简单的 offset 校准方法。以 z 轴为例,设备正面朝上静止放置在水平面上时,z 测量值计为Z_up; 设备正面朝下静止放置在水平面上时, z 测量值计为 Z_dwn; 理想情况下 Z_up = +9.81 m/s^2, Z_dwn = -9.81 m/s^2。当然实际上由于 offset 的存在,Z_up 和 Z_dwn都会有偏差。offset的计算公式就是:

    /* 偏差 = (向上 + 向下)/ 2 */
    Z_offset = (Z_up + Z_dwn)/2.

    /* 稍微精确一些,例如取100个Z_up, 求均值 Z_up_mean, 取100个 Z_dwn,求均值Z_dwn_mean.*/
    Z_offset = (Z_up_mean + Z_dwn_mean) / 2

Basic Sensor Calibration (1) -- 加速计传感器校准_第2张图片

下面列举一个实际的例子,设备朝上和朝下分别取100个数据并分别求平均值,代入上面的公式求出offset。然后验证,用原来的数据减去offset,得出校准后的数据。

这个简单的校准方法,在设备静态时粗略计算offset,校准后的数据比较接近理想值:

Basic Sensor Calibration (1) -- 加速计传感器校准_第3张图片

  • 尺度校准 (scale calibration)

    加速计传感器是有量程(Range)的,例如±4G, 意思是可以测量到最高4 个G的加速度。因为轴有正负,所以量程也标正负。
    测量到的三轴加速度的原始数据,放在物理寄存器中供外界读取。传感器可以决定用多少个字节表示一个轴的数据,就引入了位宽(bitwidth)的概念,比如用一个 16 比特位宽的有符号值表示x或y或z轴的数据。

/* 有符号的16比特的最大值 */
2^15 = 32768/* 最大是4G range, 测得1G时的值 */
32768 / 4 = 8192/* 理想情况下的 resolution 或称为灵敏度,即最小可测量到的加速度变化值 */
9.81 / 8192 = 0.0011975 m/s^2 每 LSB;

/* 还是以Z轴为例 Z_up 和 Z_dwn 分别代表朝上和朝下时的加速度值,
尺度误差公式 scale = 实际测量范围 / 理想测量范围 */
Z_scale = (Z_up - Z_dwn) / (9.81 * 2);

把 offset 校准和 scale 校准结合起来使用,得到一个加速计的简单校准公式:

/* 校准后数据 Z_calib, 校准前数据 Z_raw, 偏差 Z_offset, 尺度误差 Z_scale */
Z_calib = (Z_raw - Z_offset) / Z_scale; 
  • 低通滤波(Low Pass Filter)
    加速计传感器响应较慢,属于低频信号,适用于描述设备倾角,运动方向和加速度的变化。因此可以用一个低通滤波器,来排除信号突然变化导致测量异常,以获取更精确运动加速度。低通滤波在传感器融合算法用处较大,比如可以跟陀螺仪融合计算出重力加速度(Gravity)和线性加速度(Linear Acceleration),也可以通过补偿陀螺仪计算更精确的旋转矢量(Rotation Vector).

Sensor types

你可能感兴趣的:(Android,Sensor,sensor,加速计)