이번 포스팅에서는 Euler Angles, Rotation Matrices, Axis-Angle, 그리고 Quaternions에 대해 알아보고, 이들의 이론적 기초와 실용적인 응용, 그리고 3차원 공간에서의 특정한 도전 과제들을 살펴보겠습니다. 로보틱스에서 3차원 회전을 정확하게 제어하고 표현하는 것은 네비게이션, 조작, 환경과의 상호작용 등 다양한 작업에서 매우 중요합니다. 3차원 회전을 설명하고 처리하기 위해 여러 가지 수학적 프레임워크가 사용되며, 각각의 장단점이 존재합니다.
참고로, 로보틱스 진학에 대한 전반적인 내용은 아래 포스팅에서 확인하실 수 있습니다.
Table of Contents
Euler Angles (오일러)
Euler Angles는 회전을 세 가지 주축(보통 X, Y, Z 축) 주변의 연속적인 회전으로 표현합니다. 3차원 회전은 일반적으로 롤(roll, X축 회전), 피치(pitch, Y축 회전), 요(yaw, Z축 회전) 세 각도로 설명할 수 있습니다.
수학적 표현: Euler Angle 회전은 보통 세 가지 회전 행렬의 조합으로 표현됩니다:
R = R_z(\gamma) R_y(\beta) R_x(\alpha)
여기서 α, β, γ는 Euler Angles이고, 𝑅𝑥, 𝑅𝑦, 𝑅𝑧는 각각 X, Y, Z 축에 대한 회전 행렬입니다.
장점:
- 직관적인 이해: 주축 주변의 회전 개념은 시각적으로 이해하기 쉽습니다.
- 간단한 제어: 특히 항공학과 로보틱스에서 피치, 요, 롤 각도로 회전을 제어하는 것이 더 직관적일 수 있습니다.
단점:
- Gimbal Lock: 두 회전 축이 정렬되어 자유도가 하나 줄어드는 문제가 발생할 수 있습니다. 이는 특정한 방향을 표현할 수 없게 만듭니다.
- 복잡한 합성: 여러 회전을 결합하는 것이 직관적이지 않으며 예기치 않은 결과를 초래할 수 있습니다.
- 비가환성: 회전을 적용하는 순서가 중요하여 혼란과 오류를 일으킬 수 있습니다.
Rotation Matrices (회전 행렬)
Rotation Matrices는 3×3 직교 행렬 형태로 회전을 직접 표현합니다. 이들은 벡터를 한 좌표계에서 다른 좌표계로 변환할 때 행렬 곱셈을 통해 변환합니다.
수학적 표현: X축, Y축, Z축 회전은 각각 다음과 같이 표현됩니다:
R_x(\alpha) = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \cos \alpha & -\sin \alpha \\ 0 & \sin \alpha & \cos \alpha \end{pmatrix}
R_y(\beta) = \begin{pmatrix} \cos \beta & 0 & \sin \beta \\ 0 & 1 & 0 \\ -\sin \beta & 0 & \cos \beta \end{pmatrix}
R_z(\gamma) = \begin{pmatrix} \cos \gamma & -\sin \gamma & 0 \\ \sin \gamma & \cos \gamma & 0 \\ 0 & 0 & 1 \end{pmatrix}
장점:
- Gimbal Lock 없음: 회전 행렬은 Gimbal Lock 문제를 피하며 모든 3차원 방향을 완전하게 표현할 수 있습니다.
- 간단한 합성: 회전의 결합이 행렬 곱셈을 통해 간단하게 이루어집니다.
- 안정적이고 효율적: 수치 계산에 적합하고 반복 변환에도 안정적입니다.
단점:
- 중복성: 회전을 표현하는 데 아홉 개의 매개변수를 사용하지만 실제로는 세 개만 필요합니다.
- 정규화 필요: 수치적 오류로 인해 행렬이 비직교적으로 변할 수 있어 재직교화가 필요합니다.
- 덜 직관적: Euler Angles에 비해 이해하고 시각화하기 어렵습니다.
Axis Angle
Axis-Angle 표현은 회전을 회전 축과 그 축 주변의 회전 각도로 설명합니다. 3차원에서의 모든 회전은 하나의 벡터(축)와 하나의 스칼라(각)로 표현할 수 있습니다.
수학적 표현: 회전은 축과 각도 𝜃로 정의됩니다. 회전 행렬 𝑅은 로드리게스 회전 공식을 통해 도출됩니다:
R = I + \sin \theta \mathbf{K} + (1 - \cos \theta) \mathbf{K}^2
여기서 K는 skew-symmetric matrix 입니다.
\mathbf{K} = \begin{pmatrix} 0 & -u_z & u_y \\ u_z & 0 & -u_x \\ -u_y & u_x & 0 \end{pmatrix}
장점:
- 간단한 표현: 네 개의 매개변수(축의 세 개와 각도 하나)만 사용합니다.
- 직관적인 이해: 회전에 대한 명확한 기하학적 해석을 제공합니다.
단점:
- 비유일적 표현: 여러 축-각 쌍이 동일한 회전을 나타낼 수 있습니다.
- 복잡한 변환: 다른 표현(예: 회전 행렬)으로 변환하는 것이 수학적으로 복잡할 수 있습니다.
- 수치적 안정성: 작은 각도에서 수치적 불안정성이 발생할 수 있습니다.
Quaternion
Quaternion는 네 개의 매개변수를 사용하여 3차원 회전을 표현하는 강력하고 효율적인 방법을 제공합니다. 복소수를 확장한 형태로, 특히 컴퓨터 그래픽스, 로보틱스, 항공우주 분야에서 계산 효율성과 안정성 때문에 많이 사용되고 있습니다. 이에 대한 자세한 설명은 이곳에서 확인하실 수 있습니다.
수학적 표현: Quaternion q는 스칼라 부분 qw와 벡터 부분 q=(qx,qy,qz)로 구성됩니다:
q = q_w + q_x i + q_y j + q_z k
Quaternions와 회전 행렬 사이의 관계는 다음과 같습니다:
R = \begin{pmatrix} 1 - 2(q_y^2 + q_z^2) & 2(q_x q_y - q_w q_z) & 2(q_x q_z + q_w q_y) \\ 2(q_x q_y + q_w q_z) & 1 - 2(q_x^2 + q_z^2) & 2(q_y q_z - q_w q_x) \\ 2(q_x q_z - q_w q_y) & 2(q_y q_z + q_w q_x) & 1 - 2(q_x^2 + q_y^2) \end{pmatrix}
장점:
- Gimbal Lock 없음: Quaternions는 Gimbal Lock 문제를 완전히 회피하여 모든 3차원 회전을 안정적으로 표현합니다.
- 보간: Quaternions는 방향 간의 부드러운 보간(slerp)을 지원하여 애니메이션과 로봇의 부드러운 움직임에 필수적입니다.
- 효율적 계산: Quaternion 연산(곱셈과 정규화)은 계산적으로 효율적이고 안정적입니다.
단점:
- 덜 직관적: Quaternions는 Euler Angles나 Axis-Angle에 비해 이해하고 시각화하기 어렵습니다.
- 정규화 필요: Quaternions는 그 속성을 유지하기 위해 정규화되어야 하지만, 이는 보통 간단합니다.
마무리
로보틱스에서 사용되는 3차원 회전의 다양한 표현 방법은 각기 다른 장점과 단점을 가지고 있어, 특정한 응용 및 상황에 따라 적절한 방식을 선택해야 합니다. Euler Angles는 직관적이지만 Gimbal Lock 문제로 복잡한 회전에는 적합하지 않습니다. Rotation Matrices는 안정적이고 합성이 간단하지만 중복성이 있고 비직교화 문제가 발생할 수 있습니다. Axis-Angle은 간단하고 직관적이지만 수치적 불안정성이 있을 수 있습니다. Quaternions는 이해하기 어렵지만 계산적으로 효율적이고 안정적이며, Gimbal Lock 문제를 피할 수 있어 많은 로보틱스 및 그래픽스 응용에 이상적입니다.