2011-11-25 69 views
13

我正在研究一個可以計算設備在6個方向上的運動的android應用程序。我想我可以使用加速度;使用加速度計,陀螺儀和指南針來計算3D世界中的設備運動

x = a.t^2」但a不是常數。這就是問題所在。我如何計算總運動量?

+0

您將需要輪詢'a'的值並計算平均加速度,並在輪詢之間的時間段內應用該平均值。 – Bringer128

+0

非常好奇,你是如何設法解決這個問題的,並且如果你弄懂了,那麼精確導航就是精確的。 – ina

回答

18

加速計給你三個方向(x,y,z)。它們是加速度測量,很難知道設備的位置。但是,請記住加速通過整合相關的位置:

a(t) = a[x] 
v(t) = a[x]t + c 
x(t) = a[x]t^2 + ct + d 

問題是你不知道c或d,因爲你採取的衍生常量輟學。所以有一些你不能正確的與c和d缺失。您可以嘗試通過記住上次使用的值來進行補償。所以抓住3個樣本後,你可以開始計算位置。

有大量關於如何解釋傳感器數據的信息。就像找出重力是在哪裏取向一樣,並減去重力以獲得線性加速度。

http://developer.android.com/reference/android/hardware/SensorEvent.html

這是一種方式來與位置使用加速度計以及一個算法詳細查找位置:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

+2

特別是第二個鏈接是我的金礦。非常感謝。 – kubudi

+0

只是一個警告:你會得到可怕的整合錯誤。 – Ali

+0

它會。等一下。 – kubudi

4

這是真的,你通過整合獲得位置線性加速兩次。 但錯誤是可怕的。在實踐中是無用的。

這裏是an explanation why (Google Tech Talk)在23:20。我強烈推薦這部影片。

這不是導致問題的加速度計噪聲,而是gyro white noise,請參見小節6.2.3傳播錯誤。 (順便說一句,你也需要陀螺儀。)

一個類似的問題是Distance moved by Accelerometer

+0

謝謝,但我認爲我不需要陀螺儀。你能解釋爲什麼你認爲找到距離移動是必要的嗎? – kubudi

+0

如果使用線性加速度,SensorManager需要陀螺儀。至於接受的答案,我希望你知道你得到的結果會很差。遠遠超出你的預期。 – Ali

+0

爲什麼?陀螺儀正在向您返回角速度。你需要加速嗎?我真的不明白。 – kubudi

相關問題