2012-12-20 31 views
4

可能重複:
Getting displacement from accelerometer data with Core Motion
Android accelerometer accuracy (Inertial navigation)是否可以使用核心運動距離測量

我想使用核心運動用戶的加速度值,然後雙擊將其集成到派生距離覆蓋。我沿着它的Y軸線將我的iPhone線性移動到桌子上的30釐米的原木尺上。首先,我讓設備靜止10秒,然後通過平均相應的用戶加速度值來計算沿三個軸的偏移量。 當我嘗試計算覆蓋距離時,從加速度值中減去X,Y和Z偏移量。減去偏移量後,這些值分別通過低通濾波器和中值濾波器。濾波器是線性濾波器,截止頻率由平均值爲低通的相鄰值的數量和中值濾波器的中值來確定。我已經試驗了從1到100這個數字的不同值。最後,這些濾波值使用梯形法則進行雙重積分以獲得距離。但是,計算出的距離不是接近30釐米的地方。我得到的最接近的值是一些-22釐米(我想知道爲什麼我會得到負值,即使我沿正Y方向移動設備)。我也遇到過這種情況: http://ajnaware.wordpress.com/2008/09/05/accelerating-iphones/ 它的舊帖子講述的是同樣的事情,這表明返回的加速度計讀數似乎以約0.18m/s^2的量級(即約0.018g),導致一個大的累積錯誤很快。因此,對於這個錯誤實際上並不重要,人們將不得不加速器近1.8m/s^2,這對於距離/長度測量目的來說實際上是不可能的。對於小的運動,看起來不存在通過使用最優濾波器和更高階數值積分方法來計算距離的可能性,而沒有像這樣的不切實際的速度/加速度約束。可能嗎? 如何使用我的加速度vs時間戳數據插值隨時間增長的多項式,因爲我獲得了越來越多的運動更新,它近似表示加速度與時間曲線。多項式的雙積分將是一塊蛋糕。但是,對於小距離,多項式將具有很大的誤差分量。使用可預測的已知運動,我的設備將受到影響,我希望拍攝大量快照(計算距離與實際已知距離),以類似的方式計算我的誤差多項式,然後從我的第一個多項式中減去它。這可以工作嗎?

+2

這是一個很好的問題,但它會很高興看到您的隨行代碼... – foundry

+0

@SonuJha上述問題是關於Android,但同樣適用於ios核心運動。總之,不,你不能做雙積分,這些傳感器不夠準確。 – Ali

+0

這是另一個:[需要使用陀螺儀加速度計找到距離](http://stackoverflow.com/questions/6647314/need-to-find-distance-using-gyroaccelerometer)。在底線上,由於可怕的錯誤是不可能的。 – Kay

回答

3

雖然這不適合StackOverflow,因爲它不是一個問題,而是一個討論,我會盡量總結我的想法。

如前所述,加速度計非常不準確,您需要非常好的精度來完成這類任務,尤其是在您要測量這種短距離時。此外,加速度計因設備而異,因此對於使用不同設備的相同移動,您將得到不同的結果。再加上一個非常大的隨機錯誤。

我的猜測是,您可以通過校準設備並使「測量移動」執行幾次(例如10次)來消除大部分隨機性/錯誤。之後,你有足夠的數據來獲得可能接近實際價值的平均值。

校準是一個關鍵部分,您必須考慮一種聰明的校準方式,比如讓用戶以不同的速度在不同的距離上移動設備。

但這一切都只是理論。我真的很想看到你的結果,但是我懷疑你使用最好的濾波器/算法能夠工作得很好,因爲噪聲太多了。