姿態表示方法之四元數

2021-02-24 欣飛鴿

之前講了姿態表示方法之歐拉角和姿態表示方法之方向餘弦矩陣現在講一下對於四元數的簡單通俗理解~
相對於複數的二維空間,為了解決三維空間的旋轉變化問題,愛爾蘭數學家 William Rowan Hamilton 把複數進行了推廣,也就是四元數。

四元數由 1 個實部 和 3 個虛部構成,笛卡爾坐標下為可如下表示:

四元數

四元數可以理解為四維空間,三個虛部可理解為三維空間的三個正交基,而實部垂直於三維空間。(這對於我們三維認知下的生物而言有些難以想像,可以想像多了一條時間軸。)

極坐標下為,其中 為繞 旋轉後的角位移

類比旋轉矩陣,當繞z軸旋轉時,z軸保持不變,所對應的旋轉矩陣為:

同樣,對於四元數的旋轉理解,也可以類似拆分,當繞z軸旋轉時, 的z數值為1,x和y為0,然後,如下為繞z軸旋轉90度:

同樣,繞y軸旋轉90度的結果可類比如下:

以上,便是對四元數的直觀理解。

關於四元數在三維空間的可視化理解,可進一步看 (Ben Eater, 3blue1brown)的https://eater.net/quaternions/

文章出自欣飛鴿公眾號,轉載請標明出處。

請收下這篇好文,願它對你有用~

相關焦點

  • MEMS陀螺儀需組合其他傳感器使用 歐拉角和四元數表述飛行姿態
    MEMS陀螺儀需組合其他傳感器使用 歐拉角和四元數表述飛行姿態 「MEMS陀螺儀能使無人機的姿態和導航更加穩定和準確,同時,其功耗也更低。而且 MEMS陀螺儀成本的也在不斷降低,尺寸越來越小,而動態範圍則在擴大。整體而言,傳感器更小且集成的軸數越多,則更有利於無人機的姿態感知,當然,也有不足之處比如說速度還不夠快,精度也不夠高,而且最大的測量範圍也存在著一定的局限性。」
  • 無人機理論(三):簡單搞定四元數
    所以為了解決這些問題,數學上想出了用四元數的形式來表徵姿態的方法。回到四元數上來,對於導航飛控的算法,我們需要對四元數有什麼了解,其實很簡單,我們要知道它的基本運算規律,要知道它以什麼樣的方式表徵姿態,要知道它跟其他兩個表徵姿態的歐拉角和旋轉矩陣方式如何互相轉換。除此之外,還有後續如何使用四元數進行建模和控制律設計,如何在導航算法中得到四元數的狀態,這些在以後的篇幅中會進行解釋,今天,我們就來看看上面幾個問題是怎麼解決的。
  • 四元數簡介
    大家應該都聽過,有一種旋轉的表示方法叫四元數。按照我們的習慣,我們更加熟悉的是另外兩種旋轉的表示方法——矩陣旋轉和歐拉旋轉。矩陣旋轉使用了一個4*4大小的矩陣來表示繞任意軸旋轉的變換矩陣,而歐拉選擇則是按照一定的坐標軸順序(例如先x、再y、最後z)、每個軸旋轉一定角度來變換坐標或向量,它實際上是一系列坐標軸旋轉的組合。那麼,四元數又是什麼呢?
  • 一種常見的四軸飛行器姿態解算方法分析
    此處解算姿態速度為500HZ,因此halfT 為0.001  #define Kp 2.0f  #define Ki 0.002f  #define halfT 0.001f  初始化四元數  float q0 = 1, q1 = 0, q2 = 0, q3 = 0;  定義姿態解算誤差的積分  float
  • VEX-----quaternion 四元數
    對quaternion最大的誤解在於認為w表示旋轉角度,V表示旋轉軸。正確的理解應該是w與旋轉角度有關,v與旋轉軸有關。例如,要表示以向量N為軸,軸旋α度,相對的quaternion應該是:q =[ cos(α/ 2) , ( sina(α/ 2) Nx, sin(α/ 2)Ny, sin(α/ 2)Nz ) ]為了計算方便,一般要求N為單位矢量。
  • 三維旋轉:歐拉角、四元數、旋轉矩陣、軸角之間的轉換
    2 四元數(Quaternion)與旋轉矩陣2.1 四元數---->旋轉矩陣眾所周知的是,歐拉旋轉是有萬向節死鎖(Gimbal Lock)的問題的。幸好我們有四元數(Quaternion)這種數學工具可以避免這個情況。一般來說,我們都會用單位四元數 來表示旋轉,其中 。
  • GD32F103+MPU9150四旋翼飛行器第一步:姿態融合算法
    四旋翼飛行器的軟體核心包括兩大部分:姿態融合算法和控制算法;硬體核心便是MCU和傳感器。  先介紹下姿態融合算法,姿態融合說白了就是將3軸加速度、3軸角速度和3軸磁場強度融合成四元數,再將四元數轉化為歐拉角,最後將歐拉角最為控制量輸送到所有電機以達控制飛行器姿態的目的。歐拉角包括偏航角Yaw、俯仰角Pitch和滾動角Roll。
  • imu動態加速度姿態解算_imu 加速度計解算四元數 - CSDN
    其次需要求姿態轉移矩陣,這裡就是初始對準了。這裡針對雷射陀螺,這種高精度陀螺儀可以敏感地球自轉角速度以及重力加速度,所以可以用,用雙矢量定姿來求姿態陣。而MEMS這種低精度IMU,不能準確敏感,,則需要藉助磁力計,衛導雙天線定姿等來對準。
  • 姿態解算進階之加速度姿態解算
    >在姿態解算入門系列裡 Sugar 以初中數學為基礎展開了用加速度計的姿態解算方法。上一篇《姿態解算進階之理解旋轉矩陣(也稱方向餘弦矩陣)》進行了一次理論進階。本篇 Sugar 用進階的理論重寫一下用加速度計做姿態解算的方法,然後與入門級算法對比一下結果有哪些改進。
  • 一文詳解四元數、歐拉角、旋轉矩陣、軸角如何相互轉換
    幸好我們有四元數(Quaternion)這種數學工具可以避免這個情況。一般來說,我們都會用單位四元數  來表示旋轉,其中  。那麼給定一個單位四元數,可以構造旋轉矩陣(column major)[1][4][8][14][15]:這個四元數構造的大概思路就是把四元數的旋轉操作寫成矩陣形式(註:給定一個用於旋轉的單位四元數  和被旋轉的三維向量  ,那麼要直接用四元數旋轉這個向量,則我們首先要構造一個純四元數  ,設旋轉後的向量為  ,旋轉後的向量構造的純四元數為  ,那麼  )。
  • 基於組合導航的汽車姿態數據採集系統設計
    ,該系統利用集加速度計和陀螺儀於一體的高精度高靈敏度的慣性測量晶片MPU6050,結合地磁傳感器形成的九軸傳感器,對汽車的線性加速度、角速度參數數據進行直接採集,以互補濾波實現九軸傳感器的誤差補償,用四元數法對其姿態解算,得到汽車姿態角度。
  • 四元數與3D旋轉實例! Cocos Creator 3D Quternion !
    閱讀本文可能需要一些前置的知識(但不限於這些知識點):矩陣(平移/旋轉/縮放/模型矩陣/視圖矩陣/投影矩陣)表示3D旋轉一般採用三種方法:為什麼使用四元數表示旋轉呢?平滑插值。(矩陣基本沒有,歐拉角可以做插值,但可能遭遇萬向鎖的問題)當然四元數也有一些缺點:四元數可能不合法。(一般通過四元數標準化解決這個問題,確保四元數為單位四元數)對給定的方位的表達方式有兩種方法,它們相互為負。
  • 坐標系與相機旋轉表示
    我們定義旋轉運動的旋轉軸為單位向量a=[a,a,a]T,同時把繞軸a旋轉的旋轉角度定義為φ,則旋轉向量為φa順帶提一下歐拉參數,其為下節提出的四元數做了幾何解釋,定義變量組合:這四個參數{ε,η}被稱作旋轉運動對應的歐拉參數,它們並非獨立變量,因為它們之間存在約束:
  • 「向量」的歷史(下):從「四元數」到向量分析
    但是因為「光環效應」,以及文章的易理解性,「四元數」立刻深受數學家們的熱愛,並得到了廣泛傳播,隨後在泰特、麥克斯韋等大家的努力下,「四元數」更是成為了力學、電磁學研究必不可少的工具,這都為向量分析的最終成型奠定了堅實基礎。
  • 頭條 | 一文詳解四元數、歐拉角、旋轉矩陣、軸角如何相互轉換
    幸好我們有四元數(Quaternion)這種數學工具可以避免這個情況。一般來說,我們都會用單位四元數  來表示旋轉,其中  。那麼給定一個單位四元數,可以構造旋轉矩陣(column major)[1][4][8][14][15]:這個四元數構造的大概思路就是把四元數的旋轉操作寫成矩陣形式(註:給定一個用於旋轉的單位四元數  和被旋轉的三維向量  ,那麼要直接用四元數旋轉這個向量,則我們首先要構造一個純四元數  ,設旋轉後的向量為  ,旋轉後的向量構造的純四元數為  ,那麼  )。
  • 剛體運動變換的描述——四元數
    一、(Eigen)四元數類型常用的四元數格式有Quaternionf(float)和Quaterniond(double),模板類中的Scalar決定數據類型。的順序是(x,y,z,w),w為實部,前三者為虛部q1.vec()以上兩種輸出都是以Eigen中的向量Vector形式輸出q1.w():Eigen::Quaterniond q6(1.0, 0.0, 0.0, 0.0);    q6.normalized();    // *注意,必須得是單位四元數才能表示旋轉矩陣
  • 科普專題-無人機飛控姿態調參方法
    而姿態控制作為無人機控制的基礎,一般在無人機試飛調試時首當其衝,成為我們首要調試對象,當然導航的參數以及我們上一講PX4實戰目光之振動分析肯定是在調試姿態之前都有一個比較好的狀態的。 我們今天要說的姿態參數調試方法是針對目前使用最為廣泛的串級PID控制器進行的,而在姿態控制中基於時標分離假設設計的控制器一般分為內外環結構,內環控制姿態角速率,外環控制姿態角。
  • 學得淺碎不如無——四元數、矢量分析與線性代數關係剖析
    弄清楚了四元數、矢量分析、線性代數之間的關係,以筆者有限的物理見識,可以斷言大學普通物理裡的許多內容都會變得明晰可愛起來。比如,電磁學中麥克斯韋方程組的微分形式,剛體的轉動表示與角動量,量子力學裡的自旋,相對論量子力學的旋量表示,你都可以在四元數——那是矢量分析的母體——裡找到內在的、一致的當然也是簡單的理解。
  • 學前班遊戲開發入門3:Unity3D中的旋轉與引出的四元數知識
    這在 u3d 中也是非常的簡單,例如:obj.transform.LookAt(target);//看向某個物體好了,當我們把這種方法應用到讓一個物體跟著另外一個物體走的時候就會出現奇怪的現象:這時候很可能不是物體的正面面向了另外一個物體,而是反面或者是側面面對的其他物體。這是為什麼呢?
  • 【乾貨】淺析APM姿態控制中兩個常用的函數
    ,最近分析了兩個常用的函數,以前看代碼只看框架,覺得不就是姿態嗎,不就是歐拉角,四元數,旋轉矩陣嗎?函數名:void Quaternion::to_axis_angle位置:libraries\AP_Math\quaternion.cpp功能:將四元數轉換成軸角形式原函數:void Quaternion