2009-07-26 36 views
16

我有一個xyz加速計和磁力計。現在我想要使用兩者來確定設備的方向。我看到的問題是,根據設備的方向,我需要按不同的順序使用傳感器。如何確定絕對方位

讓我舉個例子。如果我有面向我的設備,則可以使用加速度計確定滾動和俯仰的變化。對於偏航,我使用磁力計。

但是,如果我水平放設備(即,將其90°,面對天花板)在向上矢量(現水平),那麼任何改變不會注意到,因爲加速度計沒有檢測到任何變化。現在可以使用磁力儀來檢測。

所以現在的問題是,如何確定何時使用一個或另一個。這兩個傳感器是否夠用?還是需要別的東西?

感謝

回答

1

我想這個問題:「如何確定何時使用一個或另一個」是錯誤的。您應該使用始終使用兩個傳感器進行定位。有些情況下,其中一個是無用的。但是,這些都是邊緣情況。

+0

謝謝。看起來我對這個問題並不十分清楚。我很清楚我需要在所有情況下都使用加速器和磁力計,問題是在某些情況下,這似乎不夠。 – 2009-07-27 00:20:06

+0

讓我再次使用一個類似的例子:假設我有一個手機垂直,屏幕正對着我,「向上」矢量指向手機。無論何時我傾斜,加速度計都可以讓我獲得「向上」矢量信息。問題是,如果我傾斜設備並將其水平放置(屏幕現在面向小型電腦,並且「向上」矢量指向我所在的位置),那麼如果我旋轉手機,向上矢量不會再更新水平地在桌上。這現在明顯地由磁力計檢測到。 因此,問題是,何時知道每種情況下使用acc或mag的位置? – 2009-07-27 00:20:44

1

如果我理解正確的話,你需要的東西根據基點(北,東,南,西),以檢測間距(傾斜)和方向。

可以從加速度計讀取音高。

取向根據基點可以從羅盤讀取。

來自這兩個傳感器的輸出相結合,在你的軟件的權利數學正確將最有可能給你絕對的方向。

我認爲這是可行的。

祝你好運。

17

的關鍵是使用兩個向量,重力和磁力的叉積。交叉乘積給出了一個垂直於它們的新矢量。這意味着它是水平的(垂直向下)和北方90度。現在你有三個正交向量來定義方向。這有點難看,因爲它們不是全部垂直,但很容易修復。如果您隨後將這個新矢量與重力矢量交叉回來,這個矢量就會產生一個垂直於重力矢量和磁平面矢量的第三矢量。現在您有三個垂直向量,它們定義了3D定向座標系。原始的加速度計(重力)矢量定義Z(上/下),並且兩個叉積矢量定義方位的東/西和北/南分量。

0

如果你仍然需要絕對的方向,你可以從Adafruit檢查這個休息板:https://www.adafruit.com/products/2472。關於這一點的好處是板卡是它有一個ARM Cortex-M0處理器來爲你做所有的計算。