2013-02-21 37 views
2

我正在尋找室外定位的一個小虛擬現實POC我正在做。 我想用GPS和IMU傳感器控制遊戲角色的移動(不是IMU的旋轉)。位置傳感器融合代碼

我需要融合GPS和ACC傳感器以獲得儘可能少的延遲和錯誤。有沒有這種融合,或者我必須從頭開始創造它?

的代碼將在這個開源項目使用https://github.com/AndersMalmgren/FreePIE

編輯: 本文建議卡爾曼http://www.codeproject.com/Articles/326657/KalmanDemo 但這裏對這樣的人suggets該加速度計的誤差太大,它不會工作。

回答

3

你肯定不會從頭開始「發明」 - GPS/INS融合是文學界很好的一個話題。就在著名的書:

正如其他人指出的(例如Kalman Filter for Android),也有Java/for Android中卡爾曼濾波器的實現。

在您的具體情況下卡爾曼濾波的問題是需要滿足實現卡爾曼濾波器*的幾個要求。理論上,您需要確保噪聲(未建模的測量誤差)始終是不相關的,並且是不相關的。問題在於你沒有從內部接收器(大概可以認爲是白色)獲得原始GPS測量結果,而是已經過濾的解決方案(它絕對錶現出時間相關性)。

另一個問題是,在卡爾曼濾波器中,您需要進行一些調整,即您需要設置測量噪聲等參數。這些參數取決於所用傳感器的質量 - 因此它們在不同設備之間有所不同。這可能會降低您在某些設備上的估算質量。

話雖這麼說,可能有幾種解決方案:

  • 使用速度推斷位置在位置更新之間。 (我沒有在Android上這樣做,但this question可能有助於獲得速度。)如果用戶的速度沒有變化得太頻繁(與位置更新頻率相比),在大多數情況下,這應該工作得很好。

  • 實現一個完整的卡爾曼濾波器:結合絕對位置測量與加速度計是很常見的,通過上面提到的書指出,即使有便宜的MEMS級慣性傳感器。爲了減少Acc傳感器引起的誤差,在卡爾曼濾波器狀態向量中估計這些誤差。通常,卡爾曼濾波器估計一個濾波器中的位置,速度,姿態和Acc/Gyro偏差。如果你想假設這些已知的足夠好,你可以放棄態度和陀螺儀。即使您的傳感器可能會出現更多的錯誤,估計偏差通常也足以在位置更新之間進行估計。

    實現一個完整的卡爾曼濾波器也可能意味着你考慮了你的測量的時間相關性,例如,用稱爲Schmidt-Kalman-Filter的技術(參見上面引用的書籍)。這也可能意味着您使用自適應卡爾曼濾波來估計濾波器的一些參數,以考慮不同設備中的不同傳感器。然而,請注意,這些事情在導航領域需要一點經驗:實現通常很簡單 - 只需幾行矩陣操作,但調優可能非常耗時。但這並不意味着你不應該嘗試它!

  • 只使用上述濾波器的偏差估計:通過估計Acc偏差,您可以通過加速度計測量的外推速度來改進第一種方法(通過速度外推位置)。

*從理論的角度來看 - 你總是可以無視理論,只是嘗試。有時它仍然會工作:-)

0

我知道這有點晚,但我有一個開源項目,用Kalman Filtering和Rauch-Tung-Striebel爲Java進行平滑(反向kalman)。 如果您的過程模型和/或測量模型是非線性的,那麼也支持擴展和無跡的過濾和平滑。

https://github.com/karnstrand/Kalman4J

Lycka直到安德斯! :-)