首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >线性加速度计的稳定性?安卓

线性加速度计的稳定性?安卓
EN

Stack Overflow用户
提问于 2014-10-24 13:46:07
回答 2查看 165关注 0票数 0

我正在使用线性加速度计来检测震动,我使用的是这个代码:

代码语言:javascript
复制
            float x = event.values[0] ;
            float y = event.values[1] ;
            float z = event.values[2] ;
            float acceleration = (float) Math.sqrt(x * x + y * y + z * z);
            if(acceleration > 5)
            {
               Toast.makeText(this,"shaking",Toast.Length_long).show();
             }

问题是当我摇动设备时,加速度变为10,但当我停止摇动设备时,加速度并不会立即恢复为零,这需要几秒钟的时间!

代码语言:javascript
复制
             -      shaking the device          -               no shaking              -
acceleration =    20 19 22 23 24 20 24  25 30   - 19 18 17 15 13 0000000000             -

为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

发布于 2014-11-01 03:22:41

您使用的线性加速度是一种合成(而不是物理)传感器类型。这意味着它的“读数”来自物理加速度计读数,其中当然包括线性加速度运动和重力分量。基本上,这两个组件是通过使用过滤器来分离的。例如,低通滤波器只允许缓慢变化的信号(如重力),并衰减快速变化的信号(如摇晃运动)。根据过滤器的实际设计,它们通常在响应时间方面存在延迟,这是您所经历的延迟。

如果你想减少延迟,尝试直接使用原始的物理加速度计读数,并实现自己的高通滤波器来消除重力分量。您可以尝试使用高阶过滤器,这可以减少延迟,但代价是引入了工件。我有很好的使用Butterworth filter的经验,如果你想先试试的话。

票数 0
EN

Stack Overflow用户

发布于 2021-07-16 20:45:20

我们在应用程序/驱动程序级别上获得了两种类型的Accel数据:

IIR过滤数据(通常为移动平均或 filter)

  1. Un-filtered Accel data

Accel的任何突然变化都不会在过滤后的数据上观察到,因为它需要很少的样本或时间才能稳定下来。但你可以用未过滤的数据观察突然的变化。

未过滤的数据将用于自由落体、震动检测等用例。过滤后的数据将用于慢/中运动,如盖子角度检测等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26542192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档