2014-02-28 37 views
0

我正在測試Android上的DeviceMotion事件,並在圖上繪製了這些值。由於它們是加速度值(無重力),因此如果設備處於靜止狀態,則這些值在技術上應爲零。然而,當我繪製出來的圖表它似乎並沒有這樣的情況:爲什麼DeviceMotion中的值不爲零?

enter image description here

http://jsfiddle.net/DerekL/Hgxde/17/show

正如你所看到的,ACC ž是大部分時間-0.7而其他人則在0附近。他們似乎也不是正確的加速度值。如果你看看t=0附近的值,那麼它們不在0,而設備實際上並沒有移動。爲什麼會發生這種情況,我該如何「修復」這一點?

回答

2

我假定Z軸爲-0.7,因爲軟件假定地球的引力是9.8(這在海平面上是平均的)。然而,傳感器的測量結果爲9.1,因此差異小於0.7(約減少7%)。

雖然地球的引力是變化的(見:http://en.wikipedia.org/wiki/Gravity_of_Earth),但最大變異約爲0.7%,比較山頂非常低的重力和北冰洋異常高的重力。

從維基百科頁面,我們發現方程:

gh = g * square(r/(r+h)) 

/* gh = gravity at h 
* h = height 
* r = earth's radius 
* g = earth's gravity 
*/ 

重新排列的公式得到:

h = r/sqrt(gh/g) - r 

計算你的測量重力(用大括號擺弄後)我插上這給谷歌:

(radius of earth/sqrt((9.1m/(s^2))/earth gravity)) - radius of earth 

而谷歌返回結果:243.012479公里

爲了便於比較,LEO衛星軌道從160km開始。所以你要麼在太空中,要麼你的Android設備沒有被校準。我猜測第二,因爲如果你在太空中,你會自由墜落,你的設備應該接近零重力而不是9.1。

至於小動作。那麼,除非你將設備完全從地面上隔離開來,否則大多數現代MEMS加速度計都足夠敏感,可以接收外面的車輛或走在房間裏的人的交通。如果你的Z軸沒有被校準,那麼如果你的其他軸也報告錯誤,我不會感到驚訝。

+0

嗯,這可能是我得到不準確的數據的原因。你知道是否有什麼方法可以重新校準Android中的加速度計? –

+0

不確定,我從來沒有做過Android編程。我所有使用加速度計的經驗都與爲嵌入式設備編寫固件有關。可能是一個新問題的候選人? – slebetman