9.34 축-각도 표현과 회전 행렬의 상호 변환

9.34 축-각도 표현과 회전 행렬의 상호 변환

1. 양방향 변환의 개요

축-각도 표현 (\hat{\mathbf{u}}, \phi)와 회전 행렬 \mathbf{R} \in SO(3) 사이에는 양방향 변환이 존재한다.

  • 순방향: 축-각도 쌍 (\hat{\mathbf{u}}, \phi) \mapsto \mathbf{R} (로드리게스 공식)
  • 역방향: 회전 행렬 \mathbf{R} \mapsto (\hat{\mathbf{u}}, \phi) (축-각도 추출)

순방향은 결정적이고 수치적으로 안정하지만, 역방향은 특이점(항등 회전과 180도 회전)에서 주의가 필요하다.

2. 순방향 변환: 로드리게스 공식

2.1 공식의 형태

축-각도 표현 (\hat{\mathbf{u}}, \phi)에서 회전 행렬은 로드리게스 회전 공식으로 주어진다.

\mathbf{R} = \mathbf{I} + \sin\phi\,[\hat{\mathbf{u}}]_\times + (1 - \cos\phi)\,[\hat{\mathbf{u}}]_\times^2

여기서 [\hat{\mathbf{u}}]_\times는 회전 축 \hat{\mathbf{u}} = (u_x, u_y, u_z)^T의 반대칭 행렬이다.

[\hat{\mathbf{u}}]_\times = \begin{bmatrix}0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0\end{bmatrix}

2.2 등가 형태

로드리게스 공식은 다음의 등가 형태로도 표현된다.

\mathbf{R} = \cos\phi\,\mathbf{I} + \sin\phi\,[\hat{\mathbf{u}}]_\times + (1 - \cos\phi)\,\hat{\mathbf{u}}\hat{\mathbf{u}}^T

이 형태는 [\hat{\mathbf{u}}]_\times^2 = \hat{\mathbf{u}}\hat{\mathbf{u}}^T - \mathbf{I}라는 항등식을 이용한 변형이다.

2.3 원소별 명시적 형태

c = \cos\phi, s = \sin\phi, v = 1 - \cos\phi라 하면

\mathbf{R} = \begin{bmatrix} c + u_x^2 v & u_x u_y v - u_z s & u_x u_z v + u_y s \\ u_y u_x v + u_z s & c + u_y^2 v & u_y u_z v - u_x s \\ u_z u_x v - u_y s & u_z u_y v + u_x s & c + u_z^2 v \end{bmatrix}

2.4 행렬 지수와의 관계

로드리게스 공식은 행렬 지수의 닫힌 형태이다.

\mathbf{R} = \exp(\phi[\hat{\mathbf{u}}]_\times)

증명은 [\hat{\mathbf{u}}]_\times^3 = -[\hat{\mathbf{u}}]_\times라는 항등식을 이용하여 지수 급수를 사인과 코사인으로 재배치함으로써 얻어진다.

3. 역방향 변환: 축-각도 추출

3.1 일반적인 경우 (\phi \notin \{0, \pi\})

주어진 회전 행렬 \mathbf{R} = [r_{ij}]로부터 회전 각과 축을 다음과 같이 추출한다.

3.1.1 회전 각의 추출

\mathrm{tr}(\mathbf{R}) = 1 + 2\cos\phi로부터

\phi = \arccos\left(\frac{\mathrm{tr}(\mathbf{R}) - 1}{2}\right)

여기서 \mathrm{tr}(\mathbf{R}) = r_{11} + r_{22} + r_{33}이다. \phi \in [0, \pi] 범위에 속하는 유일한 값이 결정된다.

3.1.2 회전 축의 추출

\mathbf{R}의 반대칭 부분 \mathbf{R} - \mathbf{R}^T에서 회전 축이 추출된다. 로드리게스 공식에 의해

\mathbf{R} - \mathbf{R}^T = 2\sin\phi\,[\hat{\mathbf{u}}]_\times

이므로, 반대칭 부분의 대각 이외의 원소로부터

\hat{\mathbf{u}} = \frac{1}{2\sin\phi}\begin{bmatrix}r_{32} - r_{23} \\ r_{13} - r_{31} \\ r_{21} - r_{12}\end{bmatrix}

을 얻는다.

3.2 수치적으로 안정한 형태

\mathrm{atan2}를 이용한 수치적으로 더 안정한 회전 각 추출 공식은 다음과 같다.

\phi = \mathrm{atan2}\left(\lVert \mathbf{R} - \mathbf{R}^T \rVert / 2, \mathrm{tr}(\mathbf{R}) - 1\right) \cdot \frac{1}{\text{scaling}}

더 간결하게는

\phi = \mathrm{atan2}\left(\sqrt{(r_{32} - r_{23})^2 + (r_{13} - r_{31})^2 + (r_{21} - r_{12})^2}, r_{11} + r_{22} + r_{33} - 1\right)

이다. 이 공식은 \phi가 0 또는 \pi 근처일 때 \arccos보다 안정하다.

4. 특이점 1: 항등 회전 (\phi = 0)

\mathrm{tr}(\mathbf{R}) = 3이면 \phi = 0이고 \mathbf{R} = \mathbf{I}이다. 이 경우 회전 축 \hat{\mathbf{u}}는 결정되지 않으므로 임의의 단위 벡터(관례적으로 (1, 0, 0))를 사용한다.

수치적으로는 \mathrm{tr}(\mathbf{R})이 3에 매우 가까울 때 \sin\phi가 0에 가까워 축 계산에서 수치 오차가 증폭된다. 이러한 경우 회전 축을 무의미하게 정의하거나, 회전 벡터 \boldsymbol{\phi}를 영벡터로 설정하는 것이 실용적이다.

5. 특이점 2: 180도 회전 (\phi = \pi)

\mathrm{tr}(\mathbf{R}) = -1이면 \phi = \pi이고 \sin\phi = 0이다. 이 경우 위의 축 추출 공식이 0으로 나누는 문제를 일으키므로, 대체 공식이 필요하다.

\phi = \pi에서 로드리게스 공식은

\mathbf{R} = \mathbf{I} + 2[\hat{\mathbf{u}}]_\times^2 = 2\hat{\mathbf{u}}\hat{\mathbf{u}}^T - \mathbf{I}

이 되므로

\frac{\mathbf{R} + \mathbf{I}}{2} = \hat{\mathbf{u}}\hat{\mathbf{u}}^T

이 성립한다. 오른쪽 변은 랭크 1의 행렬이며, 대각선 원소의 제곱근으로부터 축 성분의 절댓값을 추출한다.

u_x = \sqrt{\frac{r_{11} + 1}{2}}, \quad u_y = \sqrt{\frac{r_{22} + 1}{2}}, \quad u_z = \sqrt{\frac{r_{33} + 1}{2}}

부호는 \mathbf{R}의 비대각선 원소로부터 결정한다. 가장 큰 대각선 원소에 대응하는 축 성분을 기준으로 다른 성분의 부호를 정한다.

6. 알고리즘의 단계별 구성

수치적으로 견고한 축-각도 추출 알고리즘은 다음 단계로 구성된다.

  1. \cos\phi = (\mathrm{tr}(\mathbf{R}) - 1)/2를 계산한다.
  2. \cos\phi[-1, 1]로 클램핑(clamping)한다(부동 소수점 오차 방지).
  3. if \cos\phi가 1에 가까우면 (\phi \approx 0):
  • \phi = 0, \hat{\mathbf{u}}를 임의의 단위 벡터로 설정한다.
  1. else if \cos\phi-1에 가까우면 (\phi \approx \pi):
  • 대각선 기반 대체 공식으로 축을 추출한다.
  • \phi = \pi로 설정한다.
  1. else (일반적 경우):
  • \phi = \arccos(\cos\phi) 또는 \mathrm{atan2} 공식을 사용한다.
  • 반대칭 부분으로부터 \hat{\mathbf{u}}를 추출한다.
  1. 필요하면 정규화하여 \lVert \hat{\mathbf{u}} \rVert = 1을 보장한다.

7. 왕복 변환의 일관성

순방향과 역방향이 서로의 역함수인지 다음과 같이 확인할 수 있다.

\mathrm{AxisAngle}(\mathrm{Matrix}(\hat{\mathbf{u}}, \phi)) = (\hat{\mathbf{u}}, \phi) \quad (\phi \notin \{0, \pi\})

\mathrm{Matrix}(\mathrm{AxisAngle}(\mathbf{R})) = \mathbf{R}

특이점을 제외하면 대응이 일대일이다. \phi = 0에서 축이 결정되지 않는 특이성과 \phi = \pi에서 (\hat{\mathbf{u}}, \pi)(-\hat{\mathbf{u}}, \pi)의 이중성이 유일한 중복이다.

8. 수치적 고려 사항

8.1 \arccos의 정밀도

\arccos는 인수가 \pm 1에 가까울 때 미분이 발산하여 수치 오차가 증폭된다. 대체로 \mathrm{atan2} 기반 공식이 수치적으로 안정적이므로 권장된다.

8.2 반대칭 부분의 크기

\phi가 작을 때 \sin\phi \approx \phi이고 반대칭 부분의 원소가 작아진다. 이 경우 축 추출의 상대 오차가 증가하므로, 작은 회전에 대해서는 1차 테일러 전개를 이용한 근사가 더 정확할 수 있다.

\boldsymbol{\phi} \approx \frac{1}{2}\begin{bmatrix}r_{32} - r_{23} \\ r_{13} - r_{31} \\ r_{21} - r_{12}\end{bmatrix} \quad (\phi \to 0)

8.3 도 근처의 처리

\phi \approx \pi 근처에서 반대칭 부분 추출과 대각선 기반 추출이 모두 정밀도를 잃을 수 있다. 이러한 경우 쿼터니언을 경유한 변환이 수치적으로 더 안정적이다.

9. 응용 사례

9.1 자세 제어에서의 회전 오차

매니퓰레이터의 자세 제어에서 목표 자세 \mathbf{R}_d와 현재 자세 \mathbf{R}의 오차를 \Delta\mathbf{R} = \mathbf{R}^T\mathbf{R}_d로 계산하고, 이로부터 축-각도 표현을 추출하여 회전 벡터 \boldsymbol{\phi}를 제어 피드백 오차로 사용한다.

9.2 쿼터니언과의 변환 중계

쿼터니언과 회전 행렬 사이의 변환에서 축-각도 표현이 중간 형식으로 사용되기도 한다. 쿼터니언 \mathbf{q} = (\cos(\phi/2), \sin(\phi/2)\hat{\mathbf{u}})로부터 축과 각도를 직접 얻을 수 있다.

9.3 SLAM 최적화

비선형 최적화에서 접공간의 섭동 \delta\boldsymbol{\phi}를 축-각도 형태로 정의하고, 로드리게스 공식으로 회전 행렬에 적용하여 업데이트한다.

10. 참고 문헌

  • Rodrigues, O. (1840). “Des lois géométriques qui régissent les déplacements d’un système solide dans l’espace.” Journal de Mathématiques Pures et Appliquées, 5, 380–440.
  • Murray, R. M., Li, Z., & Sastry, S. S. (1994). A Mathematical Introduction to Robotic Manipulation. CRC Press.
  • Shuster, M. D. (1993). “A Survey of Attitude Representations.” Journal of the Astronautical Sciences, 41(4), 439–517.
  • Diebel, J. (2006). “Representing Attitude: Euler Angles, Unit Quaternions, and Rotation Vectors.” Stanford University Technical Report.
  • Barfoot, T. D. (2017). State Estimation for Robotics. Cambridge University Press.

version: 1.0