通俗易懂!視覺slam第七部分 四元數

2021-10-03 00:27:32 字數 2261 閱讀 2757

旋轉矩陣用九個量描述三自由度的旋轉,具有冗餘性;尤拉角和旋轉向量是緊湊的,但具有奇異性。事實上,我們找不到不帶奇異性的三維向量描述方式 [19]。這有點類似於,當我們想用兩個座標表示地球表面時(如經度和緯度),必定存在奇異性(緯度為 ±90 ◦ 時經度無意義)。三維旋轉是乙個三維流形,想要無奇異性地表達它,用三個量是不夠的。

在表達三維空間旋轉時,也有一種類似於複數的代數:四元數(quaternion)。四元數是 hamilton 找到的一種擴充套件的複數. 它既是緊湊的,也沒有奇異性。

乙個四元數 q 擁有乙個實部和三個虛部。

其中 i,j,k 為四元數的三個虛部。這三個虛部滿足關係式:

由於它的這種特殊表示形式,有時人們也用乙個標量和乙個向量來表達四元數:

這和複數非常相似。考慮到三維空間需要三個軸,四元數也有三個虛部,那麼,乙個虛四元數能不能對應到乙個空間點呢?事實上我們就是這樣做的。同理,我們知道乙個模長為 1 的複數,可以表示復平面上的純旋轉(沒有長度的縮放),那麼,三維空間中的旋轉是否能用單位四元數表達呢?答案也是肯定的。 

我們知道單位四元數能夠表達三維空間的旋轉。這種表達方式和旋轉矩陣、旋轉向量有什麼關係呢?我們不妨先來看旋轉向量。假設某個旋轉是繞單位向量

反之,我們亦可從單位四元數中計算出對應旋轉軸與夾角:

在四元數中,任意的旋轉都可以由兩個互為相反數的四元數表示。同理,取 θ 為 0,則得到乙個沒有任何旋轉的實四元數: 

運算

四元數和通常複數一樣,可以進行一系列的運算。常見的有四則運算、數乘、求逆、共軛等等。

兩個四元數為:

1. 加法和減法

四元數

2.乘法

3.共軛

四元數的共軛是把虛部取成相反數:

4.模5.逆乙個四元數的逆為:

四元數和自己的逆的乘積為實四元數的 1:

6.數乘與點乘 

用四元數表示旋轉

我們可以用四元數表達對乙個點的旋轉。假設乙個空間三維點

如果用四元數描述旋轉,把三維空間點用乙個虛四元數來描述:

這相當於我們把四元數的三個虛部與空間中的三個軸相對應。然後用四元數 q 表示這個旋** 

旋轉後的點 p ′ 即可表示為這樣的乘積:

四元數與矩陣的轉換

現在看來,把四元數轉換為矩陣的最直觀方法,是先把四元數 q 轉換為軸角 θ 和 n,然後再根據羅德里格斯公式轉換為矩陣。

不過那樣要計算乙個 arccos 函式,代價較大。實際上這個計算是可以通過一定的技巧繞過的。我們省略過程中的推導,直接給出四元數到旋轉矩陣的轉換方式。 

設四元數

反之,由旋轉矩陣到四元數的轉換如下。假設矩陣為

值得一提的是,由於 q 和 −q 表示同乙個旋轉,事實上乙個 r 對應的四元數表示並不是惟一的。同時,除了上面給出的轉換方式之外,還存在其他幾種計算方法。實際程式設計中,當 q0 接近 0 時,其餘三個分量會非常大,導致解不穩定,此時我們再考慮使用其他的方式進行轉換。

最後,無論是四元數、旋轉矩陣還是軸角,它們都可以用來描述同乙個旋轉。我們應該在實際中選擇對我們最為方便的形式,而不必拘泥於某種特定的樣子。 

第七部分 特殊用途系統

實時系統 不僅要求計算結果正確,而且要求必須在乙個特定的截止時間期限內產生。系統特性 片上系統 soc,system on a chip 指的是在單個晶元上整合乙個完整的系統,對所有或部分必要的電子電路進行包分組的技術。所謂完整的系統一般包括 處理器 cpu 儲存器 以及外圍電路等。實時核心特性 實...

建立虛擬生物第七部分

7結果 對於在第五部分中描述的行為選擇的每乙個方法,執行進化的步驟。異種交配的生物群體經常收斂到一致性,但每乙個單獨執行的進化能產生 完全不同的運動策略,這種策略滿足要求的行為。為了這個原因,許多單獨的 進化被執行,每個執行50到100代,每個進化的最成功的生物被檢驗。這些中的一些被顯示在圖6 9中...

20151205正則第七部分(awk複習)

環境 cp etc passwd 1.txt 任意個字元 也包括特殊字元 0個或者多個 前面的字元 0個或乙個前面的字元 1個或者多個前面的字元 任意個任意字元 awk f 分割字元,也可以是字元 root niejicai linux awk f sbin 1.txt nologin nologi...