2010-06-07 42 views
7

我知道這個問題已經在很多時候已經解決了很多次,如果你知道它們的存在,請賜教,謝謝。加速度計重力組件

快速破壞: 我想從3軸加速度計計算這3個座標軸上的重力分量。 我使用了2軸自由體圖來計算世界X-Z,Y-Z和X-Y軸上的加速度計重力分量。但是解決方案似乎稍微偏離了一點,對於極端情況,當只有一個加速度計軸受到重力作用時,這是可以接受的,但是對於45度的俯仰和滾動,總的合成幅度大於重力(由Xa^2 + Ya^2 + Za^2 = g^2; Xa,Ya和Za是在其X,Y和Z軸上的加速度計讀數)。

更多詳細信息: 該設備是一個Nexus One,除了3軸加速度傳感器外,還有一個用於方位角,俯仰和滾轉的磁場傳感器。在世界座標軸(Z與重力方向相同,X或Y指向北極,不要認爲這很重要?),我假設我的設備的俯仰角(P)在0°到90°之間YZ軸和XZ軸上的卷軸(R)。與我用簡單TRIG獲得: 仙(R)= AX/GXZ 的Cos(R)=了Az/GXZ 談(R)= AX /了Az

還有另一組音調,P.

現在我將重力定義爲在世界座標軸上有三個分量,一個只能在XZ軸上測量的Gxz,一個在YZ上測量Gyz,在XY軸上測量Gxy。 2G是因爲重力在這個定義中被有效地包含了兩次。

哦,X-Y軸產生更奇特的東西...我會解釋如果需要以後。

從這些等式中我得到了一個公式Az,並刪除了tan操作,因爲我不知道如何處理tan90計算(它是無窮大?)。

所以我的問題是,任何人都知道我是否做了這個對/錯或能夠指向正確的方向?

謝謝! Dvd

回答

1

我希望我知道,因爲我也對這個問題感興趣。

開始研究的好地方是http://www.diydrones.com/。那裏的人已經在飛機自動駕駛儀的背景下解決了這個問題。有大量來自該網站的高質量的開源代碼,以及涉及的數學討論。

5

根據我的理解你的問題,你知道你的設備的俯仰和偏航(從磁力計),並且想要用這些信息來計算你的每個(設備)座標軸上的重力分量?

作爲一個物理學家,我用歐拉角代替俯仰偏轉滾動,但看着http://en.wikipedia.org/wiki/Yaw,_pitch,_and_roll我計算如下: 假設你的設備最初是沿着全局座標系定向的,所以重力是gvec:={0,0,-g}(在本地框架中)。現在我們必須計算gvec的本地座標,因爲我們正在通過偏航俯仰滾動(偏航不會像你所說的那樣做任何事情)。 對我來說,這是最簡單的旋轉矩陣:我們必須改變角度的符號,因爲gvec保持放置。我會用Mathematica做到這一點,因爲這是我的錘子,這是一個釘子

yaw = RotationMatrix[-yawangle,{0,0,1}]; 
pitch = RotationMatrix[-pitchangle, {0,1,0}]; 
roll = RotationMatrix[-rollangle,{1,0,0}]; 
gvec={0,0,-g} 
yaw.gvec 
pitch.yaw.gvec 
roll.pitch.yaw.gvec 

輸出是偏航之前gvec本地座標,並且偏航,俯仰和滾轉(所以最後一行後,下面應該是你的回答):

{0,0,-g} 
{0,0,-g} 
{g Sin[pitchangle],0,-g Cos[pitchangle]} 
{g Sin[pitchangle],-g Cos[pitchangle] Sin[rollangle],-g Cos[pitchangle] Cos[rollangle]} 
0

謝謝Janus! 你的解釋有點啓發我關於旋轉矩陣。最後一行確實解決了我的問題!

現在我只需要重寫我的自由體圖以找出我做錯了什麼......我已經發現,我不應該有重力的XY分量,因爲重力與XY軸正交。 ..

再次感謝!

編輯:跟進此,最後一行: {克仙[pitchangle], - 克的Cos [pitchangle]仙[rollangle], - 克的Cos [pitchangle] COS [rollangle]}

我已經找到了,而不是-g Cos [pitchangle] Sin [rollangle] 我的自由體圖中的Sin [roll]更接近於實際的加速度。

什麼我現在不能明白的是最後一個組件-g的Cos [pitchangle] COS [rollangle] 現在它是完美的小俯仰和滾動角,並且它要麼當一個俯仰或側傾角工作正常其他保持在0,但是當俯仰和滾轉不再是小角度(例如40度)時,偏差變得顯着。 實際上,我也意識到要在連接點上實現45°和45°的傾斜角度,手機將具有0°Z軸讀數,X和Y兩者均爲6.8°加速度。 雖然從45°和45°的旋轉矩陣乘法得到的公式是0.5重力。

定位傳感器輸出有問題嗎?或者這是如何投球和滾動應該工作?

有誰知道如何解釋這個?

謝謝!

+0

我在尋找類似的問題。所以你有一個精確的公式來消除所有軸上的引力因子,並考慮到該瞬間的設備方向值。我只想在沒有重力分量的情況下在所有軸上進行純加速 – Pritam 2010-08-08 06:40:30

+1

這不應該是一個答案。這應該是Janus答案的評論,或附加到您的問題與「更新:」 – bcorso 2014-07-01 21:03:20

0

從加速度傳感器獲取重力矢量並不容易,您需要另一個傳感器(如陀螺儀)(如果可用)從加速度計讀數中獲得正確的重力部分。

問候 導航

+0

嗨,我尋找一些僞代碼與加速度計和陀螺儀做到這一點。 – Bresiu 2014-07-02 14:29:09

1

我意識到張貼是舊的,但如果別人都在用它:在您最後一次迴應要表示你仍然可以看到特別是在較大的角度有些偏差。我也經歷過相同的過程,但是當我添加校準程序以捕捉加速度計在平面上的讀數並使所有後續讀數相對於平坦表面讀數時,它都消失了。