659.3 오른손 좌표계 (Right-Hand Coordinate System) 규약
1. 오른손 좌표계의 정의
오른손 좌표계(right-hand coordinate system)는 3차원 직교 좌표계의 축 방향을 결정하는 규약이다. 오른손의 엄지, 검지, 중지를 각각 x축, y축, z축에 대응시켰을 때, 세 손가락이 서로 직교하도록 펼친 방향이 각 축의 양의 방향을 나타낸다.
수학적으로, 오른손 좌표계는 세 축의 단위 벡터 \hat{x}, \hat{y}, \hat{z} 사이에 다음과 같은 외적(cross product) 관계가 성립하는 좌표계이다.
\hat{x} \times \hat{y} = \hat{z}
\hat{y} \times \hat{z} = \hat{x}
\hat{z} \times \hat{x} = \hat{y}
이 관계에서 세 축의 단위 벡터로 구성된 행렬의 행렬식(determinant)은 +1이다.
\det\begin{bmatrix} \hat{x} & \hat{y} & \hat{z} \end{bmatrix} = +1
반면, 왼손 좌표계(left-hand coordinate system)에서는 위 행렬식이 -1이 된다.
2. ROS2의 오른손 좌표계 규약
ROS2는 REP 103 (Standard Units of Measure and Coordinate Conventions)에서 모든 좌표 프레임에 대해 오른손 좌표계를 표준으로 채택하고 있다. 이 규약은 ROS 생태계 전반에 걸쳐 일관된 좌표 표현을 보장하기 위한 것이며, 모든 TF2 변환은 이 규약을 준수해야 한다.
2.1 축 방향 규약
ROS2의 표준 축 방향 규약은 다음과 같다.
| 프레임 유형 | x축 | y축 | z축 |
|---|---|---|---|
| 로봇 본체 프레임 | 전방 (forward) | 좌측 (left) | 상향 (up) |
| 지역 좌표 프레임 (ENU) | 동쪽 (east) | 북쪽 (north) | 상향 (up) |
| 카메라 광학 프레임 | 우측 (right) | 하향 (down) | 전방 (forward, 광축 방향) |
로봇 본체 프레임에서의 축 방향은 차량 좌표계(vehicle frame)의 일반적인 관례를 따르며, 이는 SAE(Society of Automotive Engineers) 규약과 유사하나 z축의 방향이 반대이다.
2.2 회전 방향 규약
오른손 좌표계에서의 회전은 오른손 법칙(right-hand rule)을 따른다. 오른손의 엄지를 회전축의 양의 방향으로 향하게 하면, 나머지 네 손가락이 감기는 방향이 양의 회전(positive rotation) 방향이다. 이를 반시계 방향(counter-clockwise, CCW) 회전이라고도 한다.
각 축에 대한 회전의 명칭은 다음과 같다.
| 회전축 | 명칭 | 양의 방향 |
|---|---|---|
| x축 | 롤 (Roll) | 오른쪽으로 기울어짐 |
| y축 | 피치 (Pitch) | 위로 들림 |
| z축 | 요 (Yaw) | 좌측으로 회전 |
3. 오른손 좌표계와 왼손 좌표계의 비교
로봇공학과 컴퓨터 과학 분야에서는 오른손 좌표계와 왼손 좌표계가 모두 사용된다. 두 좌표계의 주요 차이점을 이해하는 것은 외부 시스템과의 데이터 교환 시 중요하다.
3.1 수학적 차이
오른손 좌표계와 왼손 좌표계의 핵심적인 차이는 외적의 방향이다. 오른손 좌표계에서 \hat{x} \times \hat{y} = \hat{z}이지만, 왼손 좌표계에서는 \hat{x} \times \hat{y} = -\hat{z}이다. 이로 인해 두 좌표계 간에는 하나의 축에 대한 거울 반사(reflection) 변환이 필요하다.
3.2 분야별 사용 현황
| 분야 | 사용하는 좌표계 | 비고 |
|---|---|---|
| ROS2/TF2 | 오른손 | REP 103 표준 |
| 항공·항법 (NED) | 오른손 | x: 북, y: 동, z: 하향 |
| OpenGL | 오른손 | z축이 화면 밖 방향 |
| DirectX | 왼손 | z축이 화면 안쪽 방향 |
| Unity | 왼손 | z축이 전방 |
| Unreal Engine | 왼손 | z축이 상향 |
| Gazebo | 오른손 | ROS와 동일 |
| Blender | 오른손 | z축이 상향 |
ROS2 시스템에서 외부 소프트웨어(특히 왼손 좌표계를 사용하는 게임 엔진)와 데이터를 교환할 때에는, 좌표 변환 시 축 방향의 차이를 반드시 고려해야 한다.
4. TF2에서의 좌표계 규약 적용
TF2에서 발행되는 모든 변환(transform)은 오른손 좌표계를 기준으로 한다. TransformStamped 메시지의 transform 필드에 포함된 병진(translation) 벡터와 회전 쿼터니언(rotation quaternion)은 오른손 좌표계에서의 공간적 관계를 나타낸다.
4.1 쿼터니언과 오른손 규약
TF2에서 사용하는 쿼터니언 q = (q_x, q_y, q_z, q_w)은 오른손 법칙에 따른 회전을 표현한다. 축 \hat{u} = (u_x, u_y, u_z)를 중심으로 각도 \theta만큼의 양의 방향(반시계 방향) 회전에 대응하는 쿼터니언은 다음과 같다.
q = \left(\sin\frac{\theta}{2} u_x, \quad \sin\frac{\theta}{2} u_y, \quad \sin\frac{\theta}{2} u_z, \quad \cos\frac{\theta}{2}\right)
4.2 주의사항: 도구 소프트웨어의 좌표계 확인
외부 설계 도구(CAD, 시뮬레이션 소프트웨어)에서 로봇 모델을 제작한 후 ROS2로 가져올 때, 해당 도구가 사용하는 좌표계 규약을 반드시 확인해야 한다. 좌표계 규약의 불일치는 로봇의 운동이 의도와 반대로 동작하거나, 센서 데이터가 뒤집어지는 등의 치명적인 문제를 야기할 수 있다.
5. 오른손 좌표계의 물리학적 의의
오른손 좌표계는 물리학의 기본 규약이기도 하다. 전자기학에서 로렌츠 힘(Lorentz force)의 방향, 각운동량의 방향, 토크(torque)의 방향 등은 모두 오른손 법칙에 기초하여 정의된다. 로봇공학에서 오른손 좌표계를 사용하는 것은 물리법칙의 수학적 표현을 별도의 부호 변환 없이 직접 적용할 수 있다는 실용적 이점을 제공한다.
특히, 강체의 각속도(angular velocity) \boldsymbol{\omega}와 회전 행렬의 시간 미분 사이의 관계
\dot{R} = \boldsymbol{\omega} \times R = [\boldsymbol{\omega}]_\times R
여기서 [\boldsymbol{\omega}]_\times는 각속도 벡터의 반대칭 행렬(skew-symmetric matrix)을 나타내는데, 이 관계는 오른손 좌표계에서 표준적인 형태로 표현된다.
[\boldsymbol{\omega}]_\times = \begin{bmatrix} 0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0 \end{bmatrix}
6. 좌표계 규약의 일관성 유지
로봇 시스템 전체에 걸쳐 좌표계 규약의 일관성을 유지하는 것은 매우 중요하다. 좌표계 규약이 혼재된 시스템에서는 다음과 같은 문제가 발생할 수 있다.
- 축 방향 불일치: 한 모듈에서 x축을 전방으로 사용하고 다른 모듈에서 y축을 전방으로 사용하면, 변환 오류가 발생한다.
- 회전 방향 불일치: 오른손 법칙과 왼손 법칙의 혼용은 회전의 부호가 반전되어 로봇이 의도한 방향과 반대로 회전할 수 있다.
- 각도 단위 불일치: 라디안(radian)과 도(degree)의 혼용은 제어 명령의 크기 오류를 유발한다. ROS2 표준(REP 103)에서는 각도의 단위로 라디안을 사용하도록 규정한다.
따라서 TF2를 사용하는 모든 소프트웨어 구성 요소는 ROS2의 표준 좌표계 규약을 엄격하게 준수해야 하며, 외부 시스템과의 인터페이스에서는 규약 변환 계층을 명시적으로 구현해야 한다.
참고 문헌 및 출처:
- REP 103, “Standard Units of Measure and Coordinate Conventions,” Open Robotics, 2010. https://www.ros.org/reps/rep-0103.html
- Craig, J.J., Introduction to Robotics: Mechanics and Control, 4th ed., Pearson, 2018.
- Goldstein, H., Poole, C., Safko, J., Classical Mechanics, 3rd ed., Addison-Wesley, 2001.
- Murray, R.M., Li, Z., Sastry, S.S., A Mathematical Introduction to Robotic Manipulation, CRC Press, 1994.