2012-06-18 135 views
1

我想計算一個小型遙控車的位置(相對於起始位置)。汽車在平坦的表面上移動,例如:房間地板。 現在,我正在使用加速度計和陀螺儀。準確地說,這塊板 - >http://www.sparkfun.com/products/9623使用加速度計+陀螺儀對小型車型進行位置計算

作爲第一步,我只是將x和y軸上的加速度計數據(因爲汽車在表面上移動)並將數據雙重集成以獲取位置。我使用的公式爲:

vel_new = vel_old + (acc_old + ((acc_new - acc_old)/2.0)) * SAMPLING_TIME; 
pos_new = pos_old + (vel_old + ((vel_new - vel_old)/2.0)) * SAMPLING_TIME; 
vel_old = vel_new; 
pos_old = pos_new; 
acc_new = measured value from accelerometer 

以上公式是根據本文件:http://perso-etis.ensea.fr/~pierandr/cours/M1_SIC/AN3397.pdf

然而,這是給可怕錯誤。

在閱讀本論壇上的其他類似問題後,我發現我需要通過陀螺儀以某種方式從上面的加速度值(每次來自acc_new)中減去重力的分量。 Google技術講座視頻Sensor Fusion on Android Devices: A Revolution in Motion Processing在23:49時很好地解釋了這個想法。

現在我的問題是如何減去重力組件? 我從陀螺儀獲得角速度。如何將其轉換爲加速度,以便從加速度計的輸出中減去它?

+0

哈哈..其實這個項目已經很久了。我們的教授真的堅持這樣一個觀點,即這個位置的計算是可能的,因爲其他一些教授告訴他,他的團隊已經設法達到95%的準確度。但最後我們設法說服我們的教授這是不可能的。在這一切中,我忘記接受答案。所以遲到比從未更好! – GuiccoPiano

回答

2

It won't work,這些傳感器不夠精確以計算位置。

原因在您所指的視頻中也有解釋。

您可以做的最好的方法是根據車輪的轉速獲取速度。如果您也知道屬於速度的標題,則可以整合速度以獲取位置。這並不完美,但它應該給你合理的估計。

我不知道你怎麼能得到汽車的方向,這取決於你的硬件。

+1

嗨阿里。由於車輪編碼器的空間限制,我們無法實施航位推算(計算車輪的轉速)。現在我們也可以忘記標題。讓我們假設汽車沿已知方向沿着直線移動。我只是想知道,使用加速度計和陀螺儀數據,該車從其起始位置移動了多少。我怎樣才能最小化錯誤? – GuiccoPiano

+1

我再說一遍:它不起作用,這些傳感器不夠精確來計算位置。對不起......( – Ali

+0

)嗨,我明白你的觀點阿里,但這是我的項目,我必須嘗試,現在我的準確度是這樣的:如果我把傳感器沿着一條直線移動40釐米,例如:測試1:位置= 51釐米,測試2:位置= 46釐米,測試3:位置= 76釐米,加速計數據(假設我剛剛獲得線性加速度),我會得到完全隨機的位置。 ,測試4:位置= 19釐米,測試5:位置= 109釐米。使用陀螺儀可以獲得更接近或最小的恆定誤差嗎? – GuiccoPiano

0

對於這些設備,恐怕阿里的回答是非常真實的。但是你爲什麼不嘗試搜索arduino的死盤算法,這將涵蓋嘗試類似棋盤的人的故事?

這裏有一個鏈接,搜索後出現的,我認爲可以幫助你:

Converting IMU to INS

即使好像所有的人都失敗了,你可能碰到的解決方法,這將減少誤差到可接受的金額或校準您的算法與其他一些傳感器一起將其作爲加速度的平方誤差以及陀螺儀白噪聲破壞準確度。

0

你有一個巨大的錯誤的原因之一是,該方程似乎是錯誤的。

示例:要獲取最新的vel,請使用.. Velnew=velold+((accelold+accelnew)/2)*sampletime

看起來你在等式中有一個額外的加速項。單獨使用它不會糾正所有的錯誤....需要你說的正確的重力和其他事情的影響。

相關問題