姿態的三種描述方式——歐拉角、軸角、四元數

歐拉角

  旋轉矩陣對於座標系的描述是冗餘的。旋轉矩陣用了9個元素來描述姿態,而事實上,由正交性條件帶來6個約束,這9個元素之間不是獨立的,而是相關的。這就意味着,只要三個參數就能描述一個剛體在空間中的姿態。
(1)X-Y-Z固定角座標系
  先將{B}繞{A}的X軸旋轉γ\gamma,然後繞{A}的Y軸旋轉β\beta,最後繞{A}的Z軸旋轉α\alpha,每個旋轉都是繞着固定參考座標系{A}的軸。
BARXYZ(γ,β,α)=RZ(α)RY(β)RX(γ)=[cαcβcαsβsγsαcγcαsβcγ+sαsγsαsβsαsβsγ+cαcγsαsβcγcαsγsβcβsγcβcγ]{^A_B}R_{XYZ}(\gamma,\beta,\alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma)=\begin{bmatrix} c\alpha c\beta & c\alpha s\beta s\gamma -s\alpha c\gamma & c\alpha s\beta c\gamma +s\alpha s\gamma\\ s\alpha s\beta & s\alpha s\beta s\gamma +c\alpha c\gamma & s\alpha s\beta c\gamma -c\alpha s\gamma\\ -s\beta& c\beta s\gamma & c\beta c\gamma \end{bmatrix}
當已知一個旋轉矩陣,可以通過以下計算其X-Y-Z固定角座標系
BARXYZ(γ,β,α)=[r11r12r13r21r22r23r31r32r33]{^A_B}R_{XYZ}(\gamma,\beta,\alpha)=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{bmatrix}

β=Atan2(r31,r112+r212)α=Atan2(r21/cβ,r11/cβ)γ=Atan2(r32/cβ,r33/cβ)\begin{aligned} \beta=Atan2(-r_{31},\sqrt{r^2_{11}+r^2_{21}}) \\ \alpha=Atan2(r_{21}/c\beta,r_{11}/c\beta)\\ \gamma=Atan2(r_{32}/c\beta,r_{33}/c\beta) \end{aligned}

如果β=±90\beta=\pm90^\circ,在這種情況下,僅能求出α\alphaγ\gamma的和或差。在這種情況下一般取α\alpha=0.0,結果如下:當β=90\beta=90^\circ,解得:

β=90α=0γ=Atan2(r12,r2)\begin{aligned} \beta=90^\circ \\ \alpha=0\\ \gamma=Atan2(r_{12},r_{2}) \end{aligned}

β=90\beta=-90^\circ,解得:

β=90α=0γ=Atan2(r12,r2)\begin{aligned} \beta=-90^\circ \\ \alpha=0\\ \gamma=-Atan2(r_{12},r_{2}) \end{aligned}
(2)Z-Y-X歐拉角
假設開始兩個座標系重合,先將{B}繞自身的Z軸旋轉α\alpha,然後繞Y軸旋轉β\beta,最後繞X軸旋轉γ\gamma,就能旋轉到當前姿態。稱其爲Z-Y-X歐拉角,由於是繞自身座標軸進行旋轉,則旋轉矩陣爲:
BARZYX(γ,β,α)=RZ(α)RY(β)RX(γ)=[cαcβcαsβsγsαcγcαsβcγ+sαsγsαsβsαsβsγ+cαcγsαsβcγcαsγsβcβsγcβcγ]{^A_B}R_{Z\prime Y\prime X\prime}(\gamma,\beta,\alpha)=R_Z(\alpha)R_Y(\beta)R_X(\gamma)=\begin{bmatrix} c\alpha c\beta & c\alpha s\beta s\gamma -s\alpha c\gamma & c\alpha s\beta c\gamma +s\alpha s\gamma\\ s\alpha s\beta & s\alpha s\beta s\gamma +c\alpha c\gamma & s\alpha s\beta c\gamma -c\alpha s\gamma\\ -s\beta& c\beta s\gamma & c\beta c\gamma \end{bmatrix}
由旋轉矩陣得出Z-Y-X歐拉角的方法與上述X-Y-Z固定角座標系計算過程相同,在此不再推導。

軸角

  繞空間中某一軸旋轉指定角度,可以採用4個參數進行表示。令r爲關於參考座標系O-xyz的旋轉軸的單位向量。爲了表示繞軸r旋轉角度θ\theta的旋轉矩陣R(θ,r)R(\theta,r),方便的做法是對繞參考座標系的座標軸的基本旋轉進行合成。
  於是發現相應於給定角度和軸的旋轉矩陣爲:
R(θ,r)=[rx2(1cθ)+cθrxry(1cθ)rzsθrxrz(1cθ)+rysθrxry(1cθ)+rzsθry2(1cθ)+cθryrz(1cθ)rxsθrxrz(1cθ)rysθryrz(1cθ)+rxsθrz2(1cθ)+cθ]R(\theta,r)=\begin{bmatrix} r{^2_x}(1-c\theta)+c\theta & r_x r_y(1-c\theta)-r_zs\theta &r_xr_z(1-c\theta)+r_ys\theta \\ r_x r_y(1-c\theta)+r_zs\theta & r{^2_y}(1-c\theta)+c\theta & r_y r_z(1-c\theta)-r_xs\theta \\ r_xr_z(1-c\theta)-r_ys\theta& r_y r_z(1-c\theta)+r_xs\theta & r{^2_z}(1-c\theta)+c\theta \end{bmatrix}
  如果需要計算逆解以計算相應於如下給定旋轉矩陣的軸和角度:
R=[r11r12r13r21r22r23r31r32r33]R=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{bmatrix}

θ=arccos(r11+r22+r3312)r=12sinθ[r32r23r13r31r21r12]\begin{aligned} \theta=arccos(\frac{r_{11}+r_{22}+r_{33}-1}{2})\\ r=\frac{1}{2sin\theta}\begin{bmatrix} r_{32}-r_{23}\\ r_{13}-r_{31}\\ r_{21}-r_{12}\end{bmatrix} \end{aligned}
注意:當θ=0pi\theta=0或pi單位向量任意是奇異的。

四元數

  軸角的表達式的不足可以通過一個不同的四參數表達式加以克服,即單位四元數,定義爲:Q={η\etaε\varepsilon},其中:
ε=cosθ2ε=sinθ2r\begin{aligned}\varepsilon=cos \frac{\theta}{2}\\ \varepsilon=sin \frac{\theta}{2}r\end{aligned}

η2+εx2+εy2+εz2=1\begin{aligned}\eta^2+\varepsilon{^2_x}+\varepsilon{^2_y}+\varepsilon{^2_z}=1\end{aligned}

  相應於給定四元數的旋轉矩陣有以下形式:
R(θ,r)=[2(η2+εx2)12(εxεyηεz)2(εxεz+ηεy)2(εxεy+ηεz)2(η2+εy2)12(εyεzηεx)2(εxεzηεy)2(εyεx)2(η2+εz2)1]R(\theta,r)=\begin{bmatrix} 2(\eta^2+\varepsilon{^2_x}) -1& 2(\varepsilon_x\varepsilon_y-\eta\varepsilon_z)& 2(\varepsilon_x\varepsilon_z+\eta\varepsilon_y)\\ 2(\varepsilon_x\varepsilon_y+\eta\varepsilon_z) & 2(\eta^2+\varepsilon{^2_y}) -1& 2(\varepsilon_y\varepsilon_z-\eta\varepsilon_x) \\ 2(\varepsilon_x\varepsilon_z-\eta\varepsilon_y)& 2(\varepsilon_y\varepsilon_x) &2(\eta^2+\varepsilon{^2_z}) -1\end{bmatrix}

  如果需要計算逆解以計算相應於如下給定旋轉矩陣的四元數:

R=[r11r12r13r21r22r23r31r32r33]R=\begin{bmatrix} r_{11}&r_{12}&r_{13}\\ r_{21}&r_{22}&r_{23}\\r_{31}&r_{32}&r_{33}\end{bmatrix}

ε=12r11+r22+r33+1\begin{aligned}\varepsilon= \frac{1}{2}\sqrt{r_{11}+r_{22}+r_{33}+1}\end{aligned}

ε=[sgn(r32r23)r11r22r33+1sgn(r13r31)r22r33r11+1sgn(r21r12)r33r11r22+1]\varepsilon=\begin{bmatrix} sgn(r_{32}-r_{23}) \sqrt{r_{11}-r_{22}-r_{33}+1}\\ sgn(r_{13}-r_{31}) \sqrt{r_{22}-r_{33}-r_{11}+1}\\sgn(r_{21}-r_{12}) \sqrt{r_{33}-r_{11}-r_{22}+1}\end{bmatrix}

  其中,當x0x\geq0時sgn(x)=1;當x<0時,sgn(x)=-1;與軸角逆解相比,沒有奇點現象。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章