9.29 오일러 각에서 회전 행렬 추출
1. 추출 방향과 문제의 본질
“오일러 각에서 회전 행렬 추출“은 주어진 세 각도 (\alpha, \beta, \gamma)와 규약으로부터 대응하는 회전 행렬 \mathbf{R} \in SO(3)을 구성하는 절차를 지칭한다. 이는 오일러 각 표현의 순방향 변환이며, 입력에 대한 출력이 유일하게 결정되는 결정적 연산이다. 역방향 추출(회전 행렬에서 오일러 각 추출)과 달리 특이점과 다가성 문제가 존재하지 않는다.
2. 추출의 일반적 절차
오일러 각에서 회전 행렬을 추출하는 절차는 다음의 세 단계로 구성된다.
- 규약에 명시된 세 축을 확인한다.
- 각 축에 대한 기본 회전 행렬을 계산한다.
- 규약(이동 축/고정 축)과 축 순서에 따라 행렬 곱을 수행한다.
3. 기본 회전 행렬의 형태
세 기본 회전 행렬은 다음과 같이 정의된다.
\mathbf{R}_x(\alpha) = \begin{bmatrix}1 & 0 & 0 \\ 0 & \cos\alpha & -\sin\alpha \\ 0 & \sin\alpha & \cos\alpha\end{bmatrix}
\mathbf{R}_y(\beta) = \begin{bmatrix}\cos\beta & 0 & \sin\beta \\ 0 & 1 & 0 \\ -\sin\beta & 0 & \cos\beta\end{bmatrix}
\mathbf{R}_z(\gamma) = \begin{bmatrix}\cos\gamma & -\sin\gamma & 0 \\ \sin\gamma & \cos\gamma & 0 \\ 0 & 0 & 1\end{bmatrix}
4. 이동 축 해석의 추출
이동 축 A \to B \to C 규약에서 오일러 각 (\alpha, \beta, \gamma)에 대응하는 회전 행렬은
\mathbf{R}_{\text{int},ABC}(\alpha, \beta, \gamma) = \mathbf{R}_A(\alpha)\mathbf{R}_B(\beta)\mathbf{R}_C(\gamma)
로 추출된다. 첫 번째 각도에 대응하는 행렬이 가장 왼쪽에 놓인다.
4.1 예시: 이동 축 ZYX (RPY)
\mathbf{R}_{\text{int},ZYX}(\psi, \theta, \phi) = \mathbf{R}_z(\psi)\mathbf{R}_y(\theta)\mathbf{R}_x(\phi)
여기서 \psi는 요, \theta는 피치, \phi는 롤이다.
4.2 예시: 이동 축 ZYZ
\mathbf{R}_{\text{int},ZYZ}(\alpha, \beta, \gamma) = \mathbf{R}_z(\alpha)\mathbf{R}_y(\beta)\mathbf{R}_z(\gamma)
5. 고정 축 해석의 추출
고정 축 A \to B \to C 규약에서 오일러 각 (\alpha, \beta, \gamma)에 대응하는 회전 행렬은
\mathbf{R}_{\text{ext},ABC}(\alpha, \beta, \gamma) = \mathbf{R}_C(\gamma)\mathbf{R}_B(\beta)\mathbf{R}_A(\alpha)
로 추출된다. 첫 번째 각도에 대응하는 행렬이 가장 오른쪽에 놓인다.
5.1 예시: 고정 축 XYZ
\mathbf{R}_{\text{ext},XYZ}(\alpha, \beta, \gamma) = \mathbf{R}_z(\gamma)\mathbf{R}_y(\beta)\mathbf{R}_x(\alpha)
이는 이동 축 ZYX와 등가이다.
6. 전개된 형태의 예시: 이동 축 ZYX
RPY 규약의 회전 행렬을 명시적으로 전개하면 다음과 같다. c_\phi = \cos\phi, s_\phi = \sin\phi 등의 축약을 사용한다.
\mathbf{R}_{\text{int},ZYX}(\psi, \theta, \phi) = \begin{bmatrix} c_\psi c_\theta & c_\psi s_\theta s_\phi - s_\psi c_\phi & c_\psi s_\theta c_\phi + s_\psi s_\phi \\ s_\psi c_\theta & s_\psi s_\theta s_\phi + c_\psi c_\phi & s_\psi s_\theta c_\phi - c_\psi s_\phi \\ -s_\theta & c_\theta s_\phi & c_\theta c_\phi \end{bmatrix}
7. 전개된 형태의 예시: 이동 축 ZYZ
\mathbf{R}_{\text{int},ZYZ}(\alpha, \beta, \gamma) = \begin{bmatrix} c_\alpha c_\beta c_\gamma - s_\alpha s_\gamma & -c_\alpha c_\beta s_\gamma - s_\alpha c_\gamma & c_\alpha s_\beta \\ s_\alpha c_\beta c_\gamma + c_\alpha s_\gamma & -s_\alpha c_\beta s_\gamma + c_\alpha c_\gamma & s_\alpha s_\beta \\ -s_\beta c_\gamma & s_\beta s_\gamma & c_\beta \end{bmatrix}
8. 추출의 일관성 검증
추출된 회전 행렬이 SO(3)에 속함을 확인하는 검증 절차이다.
8.1 정규 직교성
\mathbf{R}^T\mathbf{R} = \mathbf{I}
이론적으로 기본 회전 행렬의 곱은 항상 정규 직교 행렬이다. 부동 소수점 오차로 인해 수치적 이탈이 발생할 수 있으므로, 검증용 계산에서는 \lVert \mathbf{R}^T\mathbf{R} - \mathbf{I} \rVert_F가 임계값(예: 10^{-10}) 이하인지 확인한다.
8.2 행렬식
\det(\mathbf{R}) = +1
기본 회전 행렬의 행렬식이 모두 +1이므로, 곱의 행렬식도 +1이다. 이 조건은 반사 성분이 없음을 보장한다.
9. 수치적 효율성
9.1 기본 함수의 계산 비용
추출 과정에서 세 번의 사인과 세 번의 코사인 계산, 그리고 최대 두 번의 3 \times 3 행렬 곱이 필요하다. 삼각 함수 계산이 행렬 곱보다 훨씬 많은 계산 비용을 요구하므로, 동일한 각도를 반복적으로 사용하는 경우 \sin과 \cos 값을 캐싱(caching)하는 것이 효율적이다.
9.2 전개된 공식의 사용
행렬 곱을 직접 수행하는 대신 미리 전개된 명시적 공식을 사용하면 연산 횟수를 줄일 수 있다. 위에서 제시한 RPY 명시적 형태는 각 원소가 삼각 함수의 단순 곱으로 표현되어, 컴파일러가 최적화하기에 유리하다.
10. 추출 함수의 설계 지침
실용적인 오일러 각-회전 행렬 추출 함수는 다음의 요소를 고려해야 한다.
- 규약 명시: 함수 이름 또는 매개변수에 규약(예: \mathrm{ZYX}_\text{int})을 명확히 포함한다.
- 각도 단위: 라디안인지 도(degree)인지 명시한다. 내부 계산은 라디안을 사용하는 것이 표준이다.
- 벡터 순서: 각도 벡터 (\alpha, \beta, \gamma)에서 각 성분이 어느 축에 대응하는지 명시한다.
- 수치 안정성: 극단적인 각도(예: 피치 \pm \pi/2 근처)에서도 안정적인 결과를 산출하는지 확인한다.
- 역변환과의 일관성: 역방향 추출 함수와 왕복 변환이 일관됨을 단위 테스트로 확인한다.
11. 로봇 공학에서의 활용
11.1 목표 자세 지정
사용자가 매니퓰레이터의 목표 자세를 오일러 각으로 지정하면, 역기구학 알고리즘은 이 각도를 회전 행렬로 추출하여 내부 수치 해법에 공급한다.
11.2 시뮬레이션 초기화
시뮬레이션 환경에서 물체의 초기 자세가 RPY로 지정된 경우, 물리 엔진은 이를 회전 행렬 또는 쿼터니언으로 변환하여 내부 상태를 초기화한다.
11.3 URDF/SDF 로더
ROS의 URDF 파일에 기술된 링크의 상대 자세(RPY)는 로봇 모델 로더가 회전 행렬로 추출하여 기구학 연쇄 계산에 사용한다.
11.4 텔레메트리 명령의 해석
원격 운용 시스템이 RPY 형태의 자세 명령을 수신하면, 로봇의 제어기는 이를 회전 행렬 또는 쿼터니언으로 추출하여 자세 제어 루프에 공급한다.
12. 참고 문헌
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Robotics: Modelling, Planning and Control. Springer.
- Craig, J. J. (2018). Introduction to Robotics: Mechanics and Control (4th ed.). Pearson.
- Spong, M. W., Hutchinson, S., & Vidyasagar, M. (2020). Robot Modeling and Control (2nd ed.). Wiley.
- Diebel, J. (2006). “Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors.” Stanford University Technical Report.
- Shuster, M. D. (1993). “A Survey of Attitude Representations.” Journal of the Astronautical Sciences, 41(4), 439–517.
version: 1.0