android - 如何从 Android 3 轴加速度计中的加速度计读数中删除重力因子

标签 android accelerometer

谁能帮忙去除加速度计读数中的 g 因子?

我正在使用带有 onSensorChanged() 方法的 SensorEventListener 来获取 Sensor.TYPE_ACCELEROMETER 数据。我只需要各个方向的纯加速度值。所以在任何状态下,如果设备是稳定的(或恒速),它应该大致给出(0.0,0.0,0.0)。

目前,根据它的俯仰和滚动,它会根据作用在每个轴上的 g 力为我提供可变输出。

我希望有一些公式可以删除它,因为我还从 Sensor.TYPE_ORIENTATION 监听器获取方向值(俯仰和滚动)。我用过一些,但没有用。

最佳答案

您可以使用低通滤波器。

对每个传感器值执行此操作:

g = 0.9 * g + 0.1 * v

其中 v 是您当前的传感器值,g 是初始设置为零的全局变量。请注意,您需要与轴一样多的 g 变量。

使用 v = v - g,您可以从传感器值中消除重力因素。

关于android - 如何从 Android 3 轴加速度计中的加速度计读数中删除重力因子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3377288/

相关文章:

java - 如何在单击按钮时停止播放声音以启动另一个声音文件?

android - 安卓开发App Key和App Secret

ios - 奇怪的加速度计行为(CoreMotion)

ios - 在 XCode 中使用加速度计模拟器

java - 如何基于设备切换加速度计 Axis ?

android - NFC typeb 卡未被任何 NFC 应用程序检测到(如 :nfctaginfo)

java - Android:如何从InputStream中随机访问?

android - Android 中使用 build.gradle 进行混淆、缩小

accelerometer - ADXL345数字加速度计中的寄存器地址

iphone - 在核心图中使用加速度计数据绘制图形