2012-11-25 89 views
2

我在Android傳感器上寫了一些編程,在那裏我被磁力計傳感器的讀數弄糊塗了。如何將Android磁力儀讀數轉換爲世界座標空間?

磁力計報告電話的三個軸上的磁場強度。我觀察到,在同一地點,如果手機的方向發生變化,磁性讀數會發生顯着變化。 但是,據我瞭解,無論手機放置姿勢如何,特定位置的地球磁場應該相對穩定。

所以,我的問題是,有沒有辦法將原始讀數從3軸磁力計傳感器轉換爲世界座標系?加速度計和方位數據也可在手機上使用。如果是這樣,我認爲即使手機的航向變化,變化的磁性也應該是相同的。

我已經提到了Android源代碼,特別是getOrientation()函數和getRotationMatrix()函數。我希望從他們的代碼實現中獲得一些幫助。但我不太明白。有人可以給出這些函數的算法原理的任何解釋嗎?

鏈接的功能代碼:http://www.netmite.com/android/mydroid/cupcake/frameworks/base/core/java/android/hardware/SensorManager.java

謝謝!我非常渴望解決這個問題。

回答

0

這是不可能的,因爲設備不知道它在世界空間中的方向。

當然,方向可以通過傳感器輸入來猜測,這就是getOrientation()和getRotationMatrix()所做的。然而,在長時間尺度上,只有加速度(通過重力)和磁場的測量提供了必要的信息。可以使用陀螺儀數據來縮短估計時間,但getOrientation不保證使用它,也許該傳感器甚至不存在於特定設備上。 這意味着使用getOrientation進行反向轉換將使用您想要更正的完全相同的數據,使其無效。

相關問題