我对android加速度计值有几个问题。
请注意我使用的是2.2版本(我知道的旧手机),因此无法获得线性加速度值。
我正在使用加速计测量我项目的一些步态模式。
所以我的第一个问题是,为什么加速度计在连接到腿部时会给出高值,如+ -10-40 m / s ^ 2?考虑到尤塞恩博尔特的加速度大约为10m / s ^ 2,人类不可能达到这种加速度吗?
我的第二个问题是,如何从传感器值中手动移除重力?是什么导致了高价值?我在Android文档中看到了这段代码:
public void onSensorChanged(SensorEvent event)
{
// alpha is calculated as t / (t + dT)
// with t, the low-pass filter's time-constant
// and dT, the event delivery rate
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];
}
如何获得引力[0]等的初始值?因为它看起来像一个圆形参考(用于获得重力的公式[0]也使用重力[0] - 我没有)。除非这个公式意味着使用另一个传感器来获得重力?
谢谢。
答案 0 :(得分:0)
它不测量速度。它测量相对于设备加速度计的加速度。您可以使用Maps API获得速度。
gravity []数组是加速度计值。在此示例中,它们乘以alpha以创建低通滤波器,因为传感器非常敏感。要消除重力常数,请减去重力。您可以从SensorManager.GRAVITY_EARTH获得重力恒定。
答案 1 :(得分:0)
对于第二个问题,我也感到困惑,您只需要在第一个循环中使用event.values初始化引力即可。