【问题标题】:Questions about the Android Accelerometer Values关于 Android 加速度计值的问题
【发布时间】: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


    【解决方案1】:

    它不测量速度。它测量相对于设备加速度计的加速度。您可以使用 Maps API 加快速度。

    gravity[] 数组是加速度计的值。在此示例中,它们乘以 alpha 以创建低通滤波器,因为传感器非常敏感。要去除重力常数,请减去重力。您可以从 SensorManager.GRAVITY_EARTH 获取重力常数。

    【讨论】:

    • 是的,我知道这一点,我也追求加速而不是速度(我意识到我输入了速度,我编辑了它)。只是我读到了这个wired.com/wiredscience/2012/08/…,它说最大值是10左右,人类不能容忍更多的东西。那么加速度计获得像我这样的高值是否正常?
    • 另外,event.values 数组不是包含加速度计值的数组吗?谢谢!
    • 它测量重力。应该有大约 9.8m/s^2 的恒定净力。获得这样的值是完全正常的。它不是速度速度将以 m/s 来衡量,而不是 m/s^2
    • 是的。它们将 values[] * (1-alpha) 的内容相乘,然后将较少的值加载到 linear_accel 中。用加速度计计算速度并不容易。
    【解决方案2】:

    对于你的第二个问题,我也很困惑,你只需要在第一个循环中用 event.values 初始化重力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多