所以我在 Android 上实现了一个简单的应用程序,它可以让球朝我倾斜手机的方向滚动。然而,保持球不动是不可能的,因为即使我认为我保持不动,传感器值也会不断变化。
所以我想我想要什么过滤掉小的变化?使用某种低通滤波器?
那我该怎么做呢?如果差异不大于某个阈值,则保留旧的旋转矩阵而不做任何更改?
所以我在 Android 上实现了一个简单的应用程序,它可以让球朝我倾斜手机的方向滚动。然而,保持球不动是不可能的,因为即使我认为我保持不动,传感器值也会不断变化。
所以我想我想要什么过滤掉小的变化?使用某种低通滤波器?
那我该怎么做呢?如果差异不大于某个阈值,则保留旧的旋转矩阵而不做任何更改?
低通滤波器可能会使移动看起来不正确,因为它根本不会移动小增量。您可能会更好地限制您的更新功能,以便它每隔一定的毫秒数更新一次。
限制(和去抖动)通常在 Javascript 中用于可能重复触发的事件,例如窗口大小调整。
如果你想让球在你倾斜手机的方向上滚动,我建议尝试在 x 和 y 方向上使用陀螺仪。但是,加速度计和陀螺仪的组合可以为您提供更好的结果。
这是了解传感器如何工作的好视频。它解释了传感器如何在移动设备中获取数据,以及如何使用传感器融合和过滤技术将错误降至最低。