日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

依据imu姿态角计算z轴倾角_1. 姿态的表示方法

發布時間:2023/12/15 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 依据imu姿态角计算z轴倾角_1. 姿态的表示方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

剛體的姿態(attitude)有很多種表示方法,關于這個話題有一篇十分出名的綜述[1],也是這篇文章的主要資料來源。這篇文章從二維旋轉開始,會討論旋轉矢量、旋轉矩陣、四元數、歐拉角等旋轉的表示方法。在開始討論前,需要明確的一點是剛體的姿態具有三個自由度,但使用三個參數對姿態進行全局的、沒有奇異性的描述已經被證明是不可能的[2],這也是近來IMU姿態估計的方法大多使用四元數或旋轉矩陣的原因。

  • 二維旋轉的表示
  • 相比在三維空間中的旋轉,二維旋轉十分直觀且易于理解。二維旋轉指將二維平面上的一個向量

    (起點為原點)繞原點旋轉一個角度 ,得到一個新的向量 。角度 可以完全描述這個旋轉操作,因此是最直接的二維旋轉的表示方法。但需要注意的是,因為角度具有周期性,任何相差 的整數倍的兩個角度所代表的旋轉是相同的(只考慮旋轉的結果),所以表示角度的空間不是實數集 ,而是一個商空間 。

    這個商空間可以和平面上的單位圓做一一對應:

    ,也就是說,我們可以認為單位圓上的每一個點,對應了一個獨特的旋轉操作,這也是二維旋轉的第二種表示方法。最后,如果我們把旋轉后得到的向量寫成坐標的形式,可以得到:

    (1)

    其中

    被稱為二維旋轉矩陣,可以和 作一一對應,是二維旋轉的第三種表示方法。旋轉矩陣是行列式為1的正交矩陣,也就是說它的每個列向量都是單位向量,每兩個列向量都是互相正交(垂直)的。

    2. 旋轉矢量(rotation vector)

    三維旋轉和二維旋轉的不同是:二維旋轉永遠繞著垂直于平面的軸旋轉,但三維旋轉可以繞三維空間內的任意一根軸旋轉。根據歐拉旋轉定理,任何一個三維旋轉可以表示為繞一根轉軸

    旋轉一個角度 ,在這里我們約定轉軸 用單位向量表示。因此最直接的三維旋轉的表示方法就是單位向量 和角度 ,這種方法被稱為歐拉軸-角(axis-angle)。為了一些計算上的方便,我們可以把軸和角相乘,得到一個三維空間內的一般向量 ,很容易驗證 和歐拉軸-角是一一對應的,這也就是三維旋轉的另一種表示方法,即所謂的旋轉矢量。需要注意的是,和二維旋轉的角度表示法類似,旋轉矢量也具有周期性:任何方向相同,長度相差 的整數倍(可以將負的長度理解為方向相反的向量)的兩個旋轉矢量表示相同的旋轉。因此如果考慮獨特的旋轉,我們可以把旋轉矢量限制在半徑為 的三維球體內。

    如果在三維空間內一個向量

    經過旋轉矢量 所表示的旋轉操作后得到 ,那么它們兩者有以下關系(Rodrigues' rotation formula):

    (2)

    最后需要說明的是,當

    時,旋轉矢量 的導數會出現無窮大的情況,這也是旋轉矢量表示方法的奇異點。

    3. 旋轉矩陣(rotation matrix)

    類似于二維旋轉,

    和 的關系也可以用矩陣的形式來表示:

    (3)

    其中

    被稱為旋轉矩陣,也是 IMU 姿態表示中最常用到的方法。表示三維旋轉的旋轉矩陣 是一個3×3,行列式為 1 的正交矩陣,也就是說它的每個列向量都是單位向量,每兩個列向量互相正交(垂直)。可以證明兩個旋轉矩陣的乘積還是旋轉矩陣,所以全部旋轉矩陣構成一個“群”,也就是著名的 SO(3) 群,其中群的乘法就是矩陣的乘法。需要注意的是,矩陣的乘法是不交換的,也就是說一般情況下 ,這意味著連續進行的兩個旋轉如果交換順序,那么旋轉的結果也會不同。

    旋轉矩陣可以由旋轉矢量計算得到:

    (4)

    其中

    表示叉積矩陣,也就是對任意向量 , ,它的表達式為:

    (5)

    最后需要說明的是,(4)可以寫成指數矩陣的表達形式:

    ,其中指數矩陣指: 。

    4. 單位四元數(unit quaternion)

    四元數是對復數數系的進一步拓展,由四個實數表示:

    。三個虛數單位服從以下的運算規則: , , , 。三維旋轉可以用單位四元數表示,即 的四元數。四元數有以下幾種常見的運算:

    (i) 乘法:

    (ii) 冪:

    (iii) 共軛:

    (iv) 逆:

    對于單位四元數,它的逆運算和共軛運算的結果是一樣的。需要注意的是,與旋轉矩陣類似,四元數的乘法也是不交換的。

    表示一個三維旋轉的單位四元數可以由旋轉矢量

    計算得到:

    (6)

    代入上式可以得到 ,這意味著 和 表示相同的三維旋轉。這是單位四元數一個非常重要的性質,它和三維旋轉并不是一一對應的,而是 2 比 1 的對應關系。與旋轉矩陣類似,(6)也可以用指數函數的形式表示:如果將三維向量 寫為一個實部為 0 的四元數 ,那么 ,其中四元數的指數函數為 。四元數也可以和旋轉矩陣之間互相轉換,具體公式可以通過歐拉軸-角表示法(4) 和 (6) 間接得到。

    最后,與旋轉矩陣類似,一個向量

    經過單位四元數 所表示的旋轉操作后,得到的 也有很簡單的形式:

    (7)

    5. 歐拉角(Euler angles)

    歐拉角大概是最常用到的姿態表示方法了,它的思路是把一個三維旋轉分解為三個繞坐標軸的旋轉。歐拉角使用時最令人困惑的地方在于它的不同定義方法:根據三個坐標軸的不同順序,可以有12種定義方法;根據坐標軸是慣性坐標系(extrinsic)還是體坐標系(intrinsic),可以有2種定義方法。因此,一共有24種可能的方法來定義歐拉角,而且這些定義方式沒有一種是通用的,因此每次使用歐拉角時一定要說明是哪種定義。在量子力學中,最常用的歐拉角是體坐標系 z-x'-z'';我個人比較喜歡的一種歐拉角是體坐標系 z-y'-x'',其中三個旋轉角度也叫作yaw(航向角),pitch(俯仰角)和roll(橫滾角)。

    體坐標系歐拉角z-x-z,xyz是原始坐標系,XYZ是旋轉后的坐標系

    體坐標系歐拉角z-y-x,xyz是原始坐標系,XYZ是旋轉后的坐標系

    歐拉角可以很方便地轉化為旋轉矩陣,其中繞三個坐標軸的旋轉分別可以轉化為如下的旋轉矩陣:

    (i) 繞x軸旋轉

    (ii) 繞y軸旋轉

    (iii) 繞z軸旋轉

    對于用慣性坐標系定義的歐拉角,可以按坐標軸順序將以上三個基本旋轉矩陣左乘;而用體坐標系定義的歐拉角,則需按坐標軸順序右乘。例如體坐標系 z-y'-x'' 歐拉角所對應的旋轉矩陣是:

    (8)

    因為三維旋轉具有三個自由度,所以歐拉角是所有姿態的表示方法中需要用到參數最少的一種,也就是只用到三個參數。但是這樣的簡化也帶來了一些不方便的地方,在這里我們討論歐拉角的兩個缺點。第一個是歐拉角具有周期性,但和旋轉矢量不同,它的周期性很不直觀。以體坐標系 z-y'-x'' 歐拉角為例,它三個角度的范圍是:

    , , 。這三個角度不僅以 為周期,而且通過 的公式可以驗證: , , 與 , , 表示的是相同的三維旋轉。這樣非常規的周期性在實踐中有時難以察覺,而且也使歐拉角本身的含義變得難以理解。歐拉角的第二個缺點是“臭名昭著”的自鎖現象(gimbal lock):即當俯仰角 時,第三步中的 x-軸與第一步中的 z-軸重合,因此第一步繞 z-軸的旋轉和第三步繞 x-軸的旋轉實際上是一樣的,導致歐拉角損失了一個自由度。在自鎖點附近,橫滾角 及航向角 的導數會趨向于無窮大,這也是歐拉角表示方法的奇異點。在使用卡爾曼濾波器時,這樣的性質可能會使方差的計算十分不準確,我們會在后面討論卡爾曼濾波器的文章中詳細介紹這個問題。

    6. 旋轉和姿態的關系

    在上面的討論中,旋轉矢量、旋轉矩陣、四元數、歐拉角指的都是在三維空間中旋轉一個向量的操作,那么這個操作和剛體的姿態有什么關系?這個問題可以用旋轉矩陣回答:假設旋轉矩陣

    將一個坐標系 xyz 旋轉到 x'y'z'(將坐標軸理解為三維向量),那么如果一個向量在 xyz 坐標系中由坐標 表示,在 x'y'z' 坐標系中由坐標 表示,這兩個坐標有如下的關系:

    (9)

    在IMU中,我們計算的

    是將一個向量在體坐標系(x'y'z')里的坐標轉為在慣性坐標系(xyz)中的坐標,那么這個旋轉矩陣 的另外一層含義是將慣性坐標系旋轉到體坐標系的旋轉操作。

    如果我們將

    代入(9)可以得到: 的第一列是體坐標系的x-軸在慣性坐標系里的坐標;類似的, 的第二、三列分別是體坐標系的 y-軸和 z-軸在慣性坐標系里的坐標。因為的 逆和它的轉置相等,所以 的第一、二、三行分別是慣性坐標系的 x-軸、y-軸、z-軸在體坐標系里的坐標。

    7. 總結

    剛體的姿態一般可以用四種方法表示:旋轉矢量、旋轉矩陣、四元數和歐拉角。剛體的姿態有三個自由度,在四種表示方法中,旋轉矢量和歐拉角用了三個參數;四元數用了四個參數和一個約束條件(長度為1);旋轉矩陣用了九個參數和六個約束條件(矩陣的正交性)。旋轉矢量和歐拉角都具有奇異性,也就是說在某種姿態下,它們的導數會趨向無窮大;四元數沒有奇異性,但它和姿態是2比1的對應關系;只有旋轉矩陣既沒有奇異性,而且和姿態是一一對應的。在IMU姿態估計中,可以使用旋轉矩陣、四元數或歐拉角對角速度進行積分,并設計濾波器。在乘法擴展卡爾曼濾波器中(MEKF),是用四元數進行積分,用旋轉矢量表示姿態誤差及估計姿態的協方差矩陣。

    總結

    以上是生活随笔為你收集整理的依据imu姿态角计算z轴倾角_1. 姿态的表示方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。