logo

3次元回転変換行列:ロール、ピッチ、ヨー 📂行列代数

3次元回転変換行列:ロール、ピッチ、ヨー

定義 1

3次元空間 R3\mathbb{R}^{3} で、ベクトルxx 軸、yy 軸、zz 軸を基準に反時計回りに θ\theta だけ回転させる行列 RxR_{x}RyR_{y}RzR_{z} は以下の通りです。 Rx=[1000cosθsinθ0sinθcosθ]Ry=[cosθ0sinθ010sinθ0cosθ]Rz=[cosθsinθ0sinθcosθ0001] \begin{align*} R_{x} =& \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos \theta & - \sin \theta \\ 0 & \sin \theta & \cos \theta \end{bmatrix} \\ R_{y} =& \begin{bmatrix} \cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ - \sin \theta & 0 & \cos \theta \end{bmatrix} \\ R_{z} =& \begin{bmatrix} \cos \theta & - \sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \end{align*}

慣習的に RxR_{x}ロールrollRyR_{y}ピッチpitchRzR_{z}ヨーyawとも呼ぶ。

性質

直交性

  • [1]: 3次元の回転変換行列 RR直交行列です。つまり、次が成立します。 R1=RT R^{-1} = R^{T}

可換性のなさ

  • [2]: 回転変換行列の集合では、行列の積に対する交換法則は成立しません。つまり、2つの回転変換行列 R1R_{1}R2R_{2} について R1R2R2R1R_{1} R_{2} \ne R_{2} R_{1} が成り立つことがある。

説明

紹介された行列は、ただの3次元回転変換にすぎないが、大きな意味があります。数学的にはただ R3×3\mathbb{R}^{3 \times 3} に属する行列に過ぎないが、この世界は3次元で、私たちが生きている世界で最も役に立ちます。特に機械の制御では欠かせず、工学的な応用という文脈での行列の可換性のなさは、平行移動行列と大きく区別されます。

数式で注意すべき点は、ロール RxR_{x} とヨー RzR_{z} はその軸だけをそのままにして2次元の回転変換を埋めたように見えるが、ピッチ RyR_{y}sin\sin の符号が反対になっていることです。

証明

[1]

幾何学的に自明です。回転変換行列 RR が一つの軸を基準に θ\theta だけ回転させるなら、R1R^{-1}θ-\theta だけ逆方向に回転させる行列で、sin(θ)=sinθ\sin \left( - \theta \right) = - \sin \theta なので、3種類の回転変換行列はすべて R1=RTR^{-1} = R^{T} を満たします。

[2]

掛け算の左右を変えた時に結果が異なる組み合わせを少なくとも一つ示せば十分です。Ry(π/2)R_{y} \left( \pi / 2 \right)Rz(π/2)R_{z} \left( \pi / 2 \right) の積を計算してみると、以下の通りです。 Ry(π2)Rz(π2)=[001010100][010100001]=[001100010][010001100]=[010100001][001010100]=Rz(π2)Ry(π2) \begin{align*} R_{y} \left( {{ \pi } \over { 2 }} \right) R_{z} \left( {{ \pi } \over { 2 }} \right) =& \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 \end{bmatrix} \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \\ =& \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{bmatrix} \\ \ne & \begin{bmatrix} 0 & -1 & 0 \\ 0 & 0 & 1 \\ -1 & 0 & 0 \end{bmatrix} \\ =& \begin{bmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0 \end{bmatrix} \\ =& R_{z} \left( {{ \pi } \over { 2 }} \right) R_{y} \left( {{ \pi } \over { 2 }} \right) \end{align*}


  1. Craig. (2013). Introduction to Robotics: Pearson New International Edition PDF eBook: Mechanics and Control: p40 ↩︎