我想从 Windows Phone 8 中每 10 毫秒获取一次加速度计读数,但我却观察到一些抖动:读数之间的间距为 8、10、12、9 等。所以大约是 10,但不完全是。
我想知道是否有人可以建议一种获得更可靠读数的方法。
我的代码的核心如下所示:
var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault();
accelerometer.ReadingChanged += accelerometer_ReadingChanged;
accelerometer.ReportInterval = 10;
手机报告的 MiminumReportingInterval 为 10,因此应该没问题。我的回调只是将号码添加到列表中,最后我将通过网络发送该列表。
我正在查看 AccelerometerReadingChangedEventArgs.Timestamp 中的时间,我发现间隔并不总是 10 毫秒。以下是最新测量中的时间:105,118,128,134,146,157,163,177,187,198,208,213,232,238,245,255,263,279,285,295,303,313,324,334,345,355,363,37 5,385
那么:我可以做些什么来获得更精确的间隔测量吗?或者这只是这个特定硬件所能做到的最好的?
最佳答案
有a great article on Windows Phone Developer Blog其中详细介绍了加速度计。
本文的要点之一是,是的,值流可能而且很可能会“不稳定”,因此您应该实现某种过滤方法。其中一种方法是低通滤波器。
滤波后的数据越平滑,实际变化与读取之间的延迟就会越大。换句话说,如果您在游戏中使用加速度计作为“方向盘”,大量过滤将导致汽车迟转,但不过滤可能会导致汽车抖动。因此,最好的方法是将其设置在两者之间,具体取决于用例。
关于c# - Windows Phone 加速度计抖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22029995/