【发布时间】:2014-02-04 00:49:47
【问题描述】:
我有几个关于 android 加速度计值的问题。
请注意,我使用的是2.2版本(我知道很旧的手机),所以无法获得线性加速度值。
我正在使用加速度计为我的项目测量一些步态模式。
所以我的第一个问题是,为什么加速度计在连接到腿上时会给出高值,例如 +-10-40 m/s^2?考虑到 Usain Bolt 只以大约 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] - 我没有)。除非这个公式意味着使用另一个传感器来获得重力?
谢谢。
【问题讨论】:
标签: android accelerometer