2010-11-27 103 views
4

我在聽的傳感器值獲取信息,並與從磁傳感器

if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { 
     for (i=0;i<3; i++) mag[i] = event.values[i]; 

讓他們確定在我的處理程序的文檔進行Sensor.TYPE_MAGNETIC_FIELD說開發商你: 「所有值都在微特斯拉(uT)並測量X,Y和Z軸上的環境磁場。「

如何將該信息轉換爲方位角,俯仰角和俯仰角?我怎麼把它變成羅盤磁標題?

只是提供了與ORIENTATION傳感器和ACCELEROMETER傳感器相同的信息,一旦您完成矩陣轉換?

回答

3

如果有訪問加速度計,可以使用getOrientation() 方法,如從兩個傳感器來確定,並經由getRotationMatrix()方法計算它返回方位角,俯仰和滾轉。

編輯

迴應意見......現在我看到你的問題。抱歉。只有三軸磁力計,除非設備平行於地球表面,否則無法準確獲得方位角,俯仰角和俯仰角。請記住使用針狀指南針,並將其放在主軸上,以便您可以看到並手動補償傾斜,或者b)密封在液體中,以便將氣泡水平推到中心位置?獲取方位角:

azimuth = arctan(y/x) 

現在,如果您傾斜手機,x/y平面感應中的誤差會變大。現在您需要確定傾斜度(使用加速度計),然後測量Z軸磁場強度,然後使用三者進行補償。這基本上就是你所知道的getRotationMatrix()和getOrientation()。

我認爲Sensor.TYPE_ORIENTATION在API 8中被棄用的部分原因是因爲沒有單獨的方向傳感器本身。它是磁場和加速度感應的結合。

一篇好的論文,我挖出來,覆蓋了一切:

http://www.ssec.honeywell.com/position-sensors/datasheets/sae.pdf

+0

明白了。我的問題更多地沿着「如何對X,Y和Z軸上的環境磁場值做任何有用的事情?」 – 2010-11-29 01:07:12