【问题标题】:Detect device motion with respect to gravity检测设备相对于重力的运动
【发布时间】:2017-05-16 11:57:01
【问题描述】:

我正在尝试构建一个我想要检测设备运动的应用程序。 基本上我需要检测设备的跌落。 任何人都可以帮助我如何使用与重力相关的加速度计来做到这一点?

【问题讨论】:

    标签: android gravity motion-detection


    【解决方案1】:

    必须使用高通滤波器。如果我们使用高通滤波器过滤掉缓慢变化的力,如重力,那么剩余的力就是快速变化的力,如垂直方向施加在手机上的力。

    这就是加速度的分量如何分解成每个轴:

     values[0] //acceleration on x axis
     values[1] //acceleration on y axis
     values[2] //acceleration on z axis
    

    您需要找到重力作用的方向,然后将其分解为各个组成部分。重力的大小将始终为 9.8,但方向以及它分解为组件的方式会发生变化。假设我们可以得到重力的值并将该向量存储在像重力[3]这样的数组中:

    gravity[0] //gravity x axis
     gravity[1] //gravity y axis
     gravity[2] //gravity z axis
    
    The total acceleration, T, on the phone is T = g + a. To get just a we would need a = T - g:
    
     linear_acceleration[0] = event.values[0] - gravity[0];
     linear_acceleration[1] = event.values[1] - gravity[1];
     linear_acceleration[2] = event.values[2] - gravity[2];
    

    请注意这是如何逐个元素计算所有内容的,因为它是向量运算。 提取所有值后,我们必须应用高通滤波器并将 linear_acceleration[2] 与阈值进行比较(也许你可以将其保持在 9 左右)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 2013-03-14
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多