0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言實現(xiàn)歐拉角轉四元數(shù)

zhc135136 ? 來源:SmartHWFW ? 2023-08-07 09:57 ? 次閱讀

1. 說在前面的話

2. 歐拉角

3. 歐拉角與四元數(shù)關系

4. Matlabe 歐拉角轉四元數(shù)

5.C語言實現(xiàn)歐拉角轉四元數(shù)

6. 獲取資源

1. 說在前面的話

1)在介紹以下內容之前,我們假設讀者已經對復數(shù)與2D旋轉、3D空間中的旋轉、四元數(shù)的性質以及四元數(shù)與3D旋轉等數(shù)學理論有一定的閱讀理解基礎。

2)歐拉角與四元數(shù)姿態(tài)表示方法是目前工程上最常用的兩種方法。歐拉角表示法具有簡便、幾何意義明顯等優(yōu)點,同時姿態(tài)敏感器可以直接測出這些參數(shù),能較方便地求解用這些姿態(tài)參數(shù)描述的姿態(tài)動力學方程。但采用歐拉角的姿態(tài)描述方法存在奇點問題,且需多次三角運算。而采用四元數(shù)表示方法則可以避免這些問題,因此目前工程上開始采用四元數(shù)來描述飛行器運動及動力學方程中的姿態(tài),而在設計控制規(guī)律時,由于歐拉角的直觀性和幾何意義,仍然采用歐拉角描述。

2. 歐拉角

根據(jù)歐拉定理,剛體繞固定點的位移也可以是繞該點的若干次有限轉動的合成。在歐拉轉動中,將載體坐標系轉動三次得到導航坐標系。在三次轉動中,每次的旋轉軸是被轉動坐標系的某一坐標軸,每次的轉動角即為歐拉角。因此,用歐拉角確定的姿態(tài)矩陣是三次坐標轉換矩陣的乘積。

最終的姿態(tài)矩陣還與三次轉動的順序有關,下面公式采用3-2-1順序,即按照Z-Y-X軸的順序旋轉(東北地坐標系(對應的載體坐標系前右下)):

4a947fe4-3466-11ee-9e74-dac502259ad0.png

于是可得姿態(tài)矩陣

4aac1be0-3466-11ee-9e74-dac502259ad0.png

式中,字符"c","s"分別為"cos"和"sin"的縮寫形式。

3. 歐拉角與四元數(shù)關系

根據(jù)四元數(shù)的定義,可以將歐拉角式轉換為四元數(shù),以歐拉3-2-1轉動為例:第一次先繞Z軸轉動,φ = θ =0,

四元數(shù)表示為:

4ad3f91c-3466-11ee-9e74-dac502259ad0.png

第二次先繞Y軸轉動,φ = ψ = 0,

四元數(shù)表示為:

4ae80aba-3466-11ee-9e74-dac502259ad0.png

第三次先繞X軸轉動,θ = ψ = 0,

四元數(shù)表示為:

4afdcb16-3466-11ee-9e74-dac502259ad0.png

則,繞三軸轉動的合成為

4b1abfc8-3466-11ee-9e74-dac502259ad0.png

4b27b0e8-3466-11ee-9e74-dac502259ad0.png

該轉換方法在360±°內均有效,是一對一的關系。

4. MATLAB 歐拉角轉四元數(shù)

4b524218-3466-11ee-9e74-dac502259ad0.png

4b7da5e8-3466-11ee-9e74-dac502259ad0.png

5. C語言實現(xiàn)歐拉角轉四元數(shù)

歐拉角轉四元數(shù)的步驟如下:

STEP1:確定每個歐拉角的軸和旋轉角度。Yaw對應y軸,Pitch對應x軸,Roll對應z軸。記為yaw_angle,pitch_angle和roll_angle。

STEP2:分別根據(jù)每個歐拉角的旋轉軸和旋轉角度,構造旋轉四元數(shù)的各個分量。以yaw_angle為例,qw = cos(yaw_angle/2)qx = 0qy = sin(yaw_angle/2)qz = 0

同樣地,根據(jù)pitch_angle和roll_angle可以得到對應的旋轉四元數(shù)分量。

STEP3:根據(jù)旋轉四元數(shù)的分量,構造最終的旋轉四元數(shù)。旋轉四元數(shù)的分量為(qw, qx, qy, qz)。

請注意,歐拉角到四元數(shù)的轉換是一個多對一的映射,即不同的歐拉角可能對應相同的旋轉四元數(shù)。因此,在實際應用中,可能需要根據(jù)具體需求選擇適合的歐拉角表示方式。

校驗結果:

4b944096-3466-11ee-9e74-dac502259ad0.png

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    187

    文章

    2990

    瀏覽量

    232762
  • C語言
    +關注

    關注

    180

    文章

    7626

    瀏覽量

    139617
  • 飛行器
    +關注

    關注

    13

    文章

    732

    瀏覽量

    46071
  • 歐拉角
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6810

原文標題:MEMS_慣性傳感器程序集02-歐拉角轉四元數(shù)

文章出處:【微信號:SmartHWFW,微信公眾號:SmartHWFW】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦

    數(shù)歐拉角之間的轉換

    數(shù)歐拉角之間的轉換
    發(fā)表于 08-17 12:08

    飛控姿態(tài)解算中,歐拉角數(shù)之間的轉換

    //歐拉角數(shù)void cjx_from_euler(float roll, float pitch, float yaw){ floa
    發(fā)表于 11-17 13:09

    請問我用數(shù)歐拉角造成的這些問題該怎么解決?

    我用數(shù)歐拉角的時候出現(xiàn)了一些問題。我是按偏航,俯仰,橫滾的順序解算的,動作是三個軸依次3
    發(fā)表于 06-26 04:37

    基于Proteus和C語言實現(xiàn)

    基于Proteus和C語言實現(xiàn)一共個題目,有沒有人愿意嘗試一下?
    發(fā)表于 07-14 06:20

    旋轉矩陣、數(shù)、歐拉角比較

    MPU的旋轉矩陣 數(shù) 歐拉角比較,能夠幫助新手了解三者的不同之處
    發(fā)表于 12-08 11:41 ?55次下載

    DSP算法的c語言實現(xiàn)

    DSP算法的c語言實現(xiàn),又需要的朋友下來看看。
    發(fā)表于 05-09 10:59 ?0次下載

    PID控制算法的C語言實現(xiàn)(完整版)

    PID控制算法的C語言實現(xiàn)一 PID算法原理
    發(fā)表于 11-05 15:45 ?0次下載

    如何使用C語言實現(xiàn)一個比較簡單的猜數(shù)游戲的程序免費下載

    本文檔的主要內容詳細介紹的是如何使用C語言實現(xiàn)一個比較簡單的猜數(shù)游戲的程序免費下載
    發(fā)表于 04-24 18:31 ?0次下載
    如何使用<b class='flag-5'>C</b><b class='flag-5'>語言實現(xiàn)</b>一個比較簡單的猜<b class='flag-5'>數(shù)</b>游戲的程序免費下載

    MPU6050傳感器的數(shù)歐拉角程序免費下載

    本文檔的主要內容詳細介紹的是MPU6050傳感器的數(shù)歐拉角程序免費下載。
    發(fā)表于 08-30 17:29 ?23次下載
    MPU6050傳感器的<b class='flag-5'>四</b><b class='flag-5'>元</b><b class='flag-5'>數(shù)</b><b class='flag-5'>歐拉角</b>程序免費下載

    如何將數(shù)轉化為歐拉角

    數(shù)轉化為歐拉角: 1. 初始姿態(tài)的數(shù)(w,
    發(fā)表于 12-05 17:03 ?13次下載
    如何將<b class='flag-5'>四</b><b class='flag-5'>元</b><b class='flag-5'>數(shù)</b>轉化為<b class='flag-5'>歐拉角</b>

    使用單片機實現(xiàn)并數(shù)字芯片測試的C語言實例免費下載

    本文檔的主要內容詳細介紹的是使用單片機實現(xiàn)并數(shù)字芯片測試的C語言實例免費下載。
    發(fā)表于 03-29 11:48 ?3次下載

    使用單片機實現(xiàn)PCF8591換器應用的C語言實

    本文檔的主要內容詳細介紹的是使用單片機實現(xiàn)PCF8591換器應用的C語言實例免費下載。
    發(fā)表于 03-31 14:45 ?12次下載

    累加校驗和C語言實現(xiàn)

    累加校驗和C語言實現(xiàn)
    發(fā)表于 11-29 18:06 ?10次下載
    累加校驗和<b class='flag-5'>C</b><b class='flag-5'>語言實現(xiàn)</b>

    怎么用C語言實現(xiàn)多態(tài)

    這里我想主要介紹下在C語言中是如何實現(xiàn)的面向對象。知道了C語言實現(xiàn)面向對象的方式,我們再聯(lián)想下,C
    的頭像 發(fā)表于 10-12 09:12 ?2201次閱讀

    使用C語言實現(xiàn)的CRC計算單元的例子

    使用C語言實現(xiàn)的CRC計算單元的例子
    的頭像 發(fā)表于 05-16 16:16 ?1352次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品