重力加速计低通滤波算法——安卓开发文档

来源:互联网 发布:防晒霜推荐 知乎 编辑:程序博客网 时间:2024/06/05 21:12

重力为测量结果中的不变成分。因此在获取到三轴的加速度分量后,可以采用低通滤波的方式分离出重力分量,然后在原始值中减去重力。最后得到不含重力的手机加速度。

手机的x、y、z轴定义如图:


以下为安卓开发者文档中提供的低通滤波算法:

 public void onSensorChanged(SensorEvent event)     {          // alpha 由 t / (t + dT)得到          // t为滤波器时间常量,为传感器单次采样时间          // dT为采样频率          final float alpha = 0.8;          gravity[0] = alpha * gravity[0] + (1 - alpha) * event.values[0];          gravity[1] = alpha * gravity[1] + (1 - alpha) * event.values[1];          gravity[2] = alpha * gravity[2] + (1 - alpha) * event.values[2];          linear_acceleration[0] = event.values[0] - gravity[0];          linear_acceleration[1] = event.values[1] - gravity[1];          linear_acceleration[2] = event.values[2] - gravity[2];     } 

values数组分别存放手机x、y、z轴的原始加速度。

gravity为重力值。

linear_acceleration为最终结果。


0 0
原创粉丝点击