2014-02-26 121 views
2

我想從我的Windows Phone 8中每10ms獲得一次加速度計讀數,但是我觀察到一些抖動:讀數之間的間距爲8,10,12,9或類似的。所以大約10,但不完全。windows手機加速度計抖動

我想知道是否有人可以建議一種方法來獲得更可靠的讀數。

我的代碼的核心是這樣的:

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

電話報告的10 MiminumReportingInterval,所以這應該是罰款。我的回調只是將數字添加到列表中,我將在最後通過網絡發送。

我正在看AccelerometerReadingChangedEventArgs.Timestamp中的時間,這就是我看到間隔不總是10ms的地方。下面是最新的測量看起來像時代: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,375,385

所以:有什麼我可以做的就是更精確地測量間隔?或者這只是這個特定硬件能夠做到的最好的?

回答

3

a great article on Windows Phone Developer Blog詳細說明了加速度計。

本文的要點之一是,是的,價值流可以和最可能會'緊張',所以你應該實施一些過濾方法。一種這樣的方法是低通濾波器。

過濾後的數據越平滑,實際更改和讀數之間的延遲就越大。換句話說,如果您在遊戲中將加速度計用作「方向盤」,那麼很多過濾都會導致車子晚點轉彎,但是沒有任何過濾功能可能會導致車輛緊張。所以,最好的是將它設置在兩者之間,這取決於用例。

+0

謝謝@igrali,但這篇文章談論的是測量值的錯誤,而不是我所問的測量時間錯誤。我理解過濾,但我希望可能有其他測量方法可以給我精確的間隔測量。 – fishingpole