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}roll, RyR_{y}피치pitch, RzR_{z}yaw라 부르기도 한다.

성질

직교성

  • [1]: 3차원 회전변환 행렬 RR직교행렬이다. 다시 말해, 다음이 성립한다. R1=RT R^{-1} = R^{T}

불가환성

  • [2]: 회전변환행렬들의 집합에서는 행렬곱에 대한 교환법칙이 성립하지 않는다. 다시 말해, 두 회전변환행렬 R1R_{1}R2R_{2} 에 대해 R1R2R2R1R_{1} R_{2} \ne R_{2} R_{1} 일 수 있다.

설명

소개된 행렬들은 다름 아닌 3차원 회전변환이기에 큰 의미가 있다. 수학적으로는 그냥 R3×3\mathbb{R}^{3 \times 3} 에 속하는 행렬에 불과하지만 이 세상이 3차원이고 우리가 살아가는 세상에서 가장 쓸모 있다. 대표적이랄 것도 없이 기계의 제어에서 빠질 수가 없고, 공학적 응용이라는 맥락에서 행렬의 불가환성non-commutativity은 대칭이동행렬들과 크게 구분된다.

수식에서 주의해야할 점으로는, 롤 RxR_{x} 과 요 RzR_{z} 는 해당 축만 내버려두고 2차원 회전변환을 채워놓은 것처럼 생겼지만 피치 RyR_{y}sin\sin 의 부호가 반대로 들어가있다는 점이다.

증명

[1]

기하적으로 자명하다. 회전변환행렬 RR 이 하나의 축을 기준으로 θ\theta 만큼 회전시킨다면 R1R^{-1}θ-\theta 만큼 거꾸로 회전시키는 행렬이고, sin(θ)=sinθ\sin \left( - \theta \right) = - \sin \theta 기 때문에 세 종류의 회전변환행렬 모두 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 ↩︎