2014-12-30 153 views
0

這是我在SO上的第一篇文章。我還沒有開發嵌入式系統的許多代碼,但是我沒有什麼問題,需要更高級的程序員幫忙。我使用以下設備: - 帶LPC1768(Cortex M3)MCU的LandTiger板, - 帶有ADXL345加速度計(3軸)的Digilent pmodACL, - 帶L3G4200D陀螺儀(3軸)的Digilent pmodGYRO。使用3軸加速度計和陀螺儀獲取方向

我想了解一些關於設備方向的信息,即在X,Y和Z軸上的旋轉角度。我讀過,爲了達到這個目的,我需要使用Kallman濾波器或其更簡單的形式(即互補濾波器)組合來自加速度計和陀螺儀的數據。我想知道是否可以使用陀螺儀和加速度計(不帶磁力計)的測量數據來計算全範圍(0-360度)的滾動,俯仰和偏航。我還發現了一些數學公式(http://www.ewerksinc.com/refdocs/Tilt%20Sensing%20with%20LA.pdfhttp://www.freescale.com/files/sensors/doc/app_note/AN3461.pdf),但它們包含分子/分母的根部平方,所以關於座標系的正確象限的信息丟失了。

+0

這個問題會更適合http://electronics.stackexchange.com/ – Nick

回答

3

你所問的問題相當頻繁,而且相當複雜,有很多不同的解決方案。 雖然標題只提到一個加速度計,但是您的帖子的主體提到了一個陀螺儀,所以我會假設你們都有。另外,還有許多步驟可以使低成本加速度計和陀螺儀正常工作,其中之一就是進行電壓測量轉換。我不會涵蓋那部分。

首先我會回答你的問題。 您問是否通過「計數」陀螺儀的測量結果,您可以估計設備在歐拉角中的姿態(方向)。您可以總結縮放後的陀螺儀測量值,以獲得設備旋轉的非常嘈雜的估計值(實際的弧度變化,而不是態度),但是隻要您旋轉多個軸,它就會失敗。這對大多數應用程序來說是不夠的。

我會爲您提供一些一般性的建議,具體的知識和我以前使用過的一些示例代碼。

首先,你不應該試圖通過編寫程序和測試你的IMU來解決這個問題。您應該首先通過使用經過驗證的庫編寫仿真程序,然後驗證您的算法/程序,然後嘗試使用IMU實施它。

其次,你說你想「計數滾動,俯仰和偏航從全範圍(0-360度)」。 由此我假設你的意思是你希望能夠確定代表設備相對於外部靜態東北向下(NED)幀的姿態的歐拉角。 你的陳述讓我覺得你並不熟悉態度的表達,因爲據我所知在0-360範圍內沒有歐拉角表示,所有3個角度都沒有。

要使用設備姿態的應用程序將很重要。如果您使用的是歐拉角,由於所謂的Gimbal Lock,當在卷軸或俯仰軸上產生較大(大於約50度)的旋轉時,您將無法準確跟蹤設備的姿態。 如果您需要跟蹤這些動作,那麼您將需要使用四元數或方位餘弦矩陣(DCM)表示態度。

第三,正如你所說,你可以使用免費的過濾器或卡爾曼濾波變型(擴展卡爾曼濾波器,誤差狀態卡爾曼濾波器,間接卡爾曼濾波器)從融合數據準確跟蹤裝置的姿態加速計,陀螺儀和磁力計。我建議用C,C#和MATLAB here實現的Madgwick描述的免費過濾器。如果您想跟蹤設備的位置並使用其他傳感器(如GPS),則需要使用卡爾曼濾波器。

對於我的一些示例代碼,我只使用加速度計來獲得歐拉角度的俯仰和滾動見my answer to this other question

相關問題