機器人學——1.8-單位四元數


四元數是復數的一種擴展,或叫超復數,記作一個標量加上一個向量:
q ˚ = s + v = s + v 1 i + v 2 j + v 3 k \begin{array}{rl} \mathring{q}&=s+v\\ &=s+v_1i+v_2j+v_3k \end{array} 其中, s R s\in\mathbb{R} v R 3 v\in\mathbb{R}^3 ,正交復數 i i j j k k 的定義如下
i 2 = j 2 = k 2 = i j k = 1 i^2=j^2=k^2=ijk=-1 我們將一個四元數表示為
q ˚ = s < v 1 , v 2 , v 3 > \mathring{q}=s<v_1, v_2, v_3>
早期反對四元數的一-個理由是其乘法不可交換,但正如我們在上面看到的,這種不可交換性正好符合坐標系旋轉的情況。除去最初的爭論不說,四元數以其格式優雅、功能強大、計算簡單已被廣泛應用於機器人、計算機視覺、計算機圖形學以及航空航天慣性導航領域。

在機器人工具箱中,四元數是由名為Quaternion的類來實現的。構造函數將傳遞的參數轉換為四元數,例如:

>> q = Quaternion(rpy2tr(0.1, 0.2, 0.3))
q = 
0.98186 < 0.064071, 0.091158, 0.15344 >

為了描述坐標系的旋轉,我們使用單位四元數。這些四元數為一個單位大小,即 q ˚ = 1 |\mathring{q}| =1 s 2 + v 1 2 + v 2 2 + v 3 2 = 1 s^2+v_1^2+v_2^2+v_3^2=1 。例如:

>> q.norm
ans =
     1

單位四元數具有一個特殊屬性,它可以被看作是繞單位向量 n ^ \hat{n} 旋轉了 θ \theta 角,該旋轉與四元數組的關系為
s = cos θ 2 , v = ( sin θ 2 ) n ^ s=\cos\frac{\theta}{2}, \quad v = \left(\sin\frac{\theta}{2}\right)\hat{n} 繞任意向量旋轉相似。
Quaternion類可以重載一些標准方法和函數。四元數的乘法通過重載乘法運算符調用:

>> q = q * q;

求一個四元數的共軛為

>> q.inv()
ans = 
0.98186 < -0.064071, -0.091158, -0.15344 >

一個四元數乘以它的逆四元數為

>> q * q.inv()
ans = 
1 < 0, 0, 0 >

或者

>> q / q
ans = 
1 < 0, 0, 0 >

得出一個單位四元數,它代表一個無效旋轉。
一個四元數可以用以下方式轉化為一個正交旋轉矩陣:

>> q.R
ans =
    0.9363   -0.2896    0.1987
    0.3130    0.9447   -0.0978
   -0.1593    0.1538    0.9752

我們也可以用以下函數繪制一個四元數所指的方向:

>> q.plot()

在這里插入圖片描述

在四元數的情況下,廣義位姿是 ξ q ˚ Q \xi \sim \mathring{q} \in \mathbb{Q} ,且
q 1 ˚ q 2 ˚ s 1 s 2 v 1 v 2 , < s 1 v 2 + s 2 v 1 + v 1 × v 2 > \mathring{q_1}\oplus\mathring{q_2}\mapsto s_1s_2-v_1\cdot v_2,<s_1v_2+s_2v_1+v_1\times v_2> 上式被稱為四元數積或漢密爾頓積,並有
q ˚ q ˚ 1 = s , < v > \ominus\mathring{q}\mapsto\mathring{q}^{-1}=s,<-v> 這是四元數的共軛。零位姿 0 1 < 0 , 0 , 0 > 0\mapsto1<0,0,0> ,為單位四元數。一個向量 v R 3 v\in\mathbb{R}^3 被旋轉,表示為 q ˚ v q ˚ q ˚ ( v ) q ˚ 1 \mathring{q}\cdot v\mapsto\mathring{q}\mathring{q}(v)\mathring{q}-1 ,其中 q ˚ ( v ) = 0 , < v > \mathring{q}(v)=0, <v> 被稱為純四元數。

將一個三元向量傳遞給構造函數,將產生一個純四元數:

>> Quaternion([1 2 3])
ans = 
0 < 1, 2, 3 >

其中的標量為 0 0 。使用重載的乘法運算符,一個向量可以被一個四元數旋轉:

>> q*[1 0 0]'
ans =
    0.9363
    0.3130
   -0.1593


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM