windows手机加速度计抖动



我想每10ms从我的Windows Phone 8中获得一次加速度计读数,但我观察到了一些抖动:读数之间的间隔将是8,10,12,9,等等。所以大约是10,但不完全是。

我想知道是否有人能提出一种获得更可靠读数的方法。

我的代码的核心如下:

var accelerometer = Windows.Devices.Sensors.Accelerometer.GetDefault();
accelerometer.ReadingChanged += accelerometer_ReadingChanged;
accelerometer.ReportInterval = 10;

手机报告MiminumReportingInterval为10,所以应该没问题。我的回拨只是将号码添加到一个列表中,最后我会通过网络发送。

我在加速度计ReadingChangedEventArgs.Timestamp中查看时间,这就是我发现间隔并不总是10ms的地方。以下是最新测量中的时间:105118128134146157163177187198208213232245255263279285295303313324334345355363375385

那么:我能做些什么来获得更精确的间隔测量吗?或者这只是这个特定硬件所能做的最好的事情?

Windows Phone开发者博客上有一篇很棒的文章,详细介绍了加速度计。

这篇文章的一点是,是的,值流可能而且很可能会"抖动",所以你应该实现一些过滤方法。一种这样的方法是低通滤波器。

过滤后的数据越平滑,实际变化和读数之间的延迟就越大。换句话说,如果你在游戏中使用加速度计作为"方向盘",大量的过滤会导致汽车转弯较晚,但没有过滤可能会导致汽车抖动。因此,最好将其设置在两者之间的某个位置,具体取决于用例。

最新更新