659.81 표준 좌표 프레임 규약 (REP 103) 개요
1. 개요
**REP 103 (ROS Enhancement Proposal 103)**은 ROS 생태계 전반에서 사용되는 좌표 프레임과 물리 단위의 표준 규약을 정의하는 공식 문서이다. 본 규약은 로봇 소프트웨어 구성 요소 간의 상호 운용성을 보장하기 위하여 좌표계 방향, 회전 표현, 물리량의 단위를 통일적으로 규정한다. ROS2 기반의 모든 소프트웨어 패키지와 드라이버는 이 규약을 준수하여야 하며, TF2 라이브러리를 이용한 좌표 변환 시에도 REP 103의 규약에 기반하여 프레임을 정의하고 운용하여야 한다.
2. REP 103의 목적과 배경
2.1 표준화의 필요성
로봇 시스템은 다양한 센서, 구동기, 제어 알고리즘, 내비게이션 시스템 등으로 구성된다. 각 구성 요소가 서로 다른 좌표계 규약이나 단위 체계를 사용하면 다음과 같은 문제가 발생한다.
- 데이터 해석 오류: 동일한 수치 데이터가 구성 요소마다 다른 의미로 해석된다.
- 통합 비용 증가: 각 인터페이스 지점에서 단위 변환과 좌표계 변환을 수행하여야 한다.
- 재현성 저하: 연구 결과나 소프트웨어의 이식성이 감소한다.
REP 103은 이러한 문제를 방지하기 위하여 ROS 커뮤니티의 합의에 기반한 통일 규약을 제시한다.
2.2 REP 103의 범위
REP 103은 다음 두 가지 주요 영역을 규정한다.
- 좌표 프레임 규약: 좌표축의 방향, 회전의 양의 방향, 좌표계의 종류를 정의한다.
- 단위 규약: 물리량을 표현하는 데 사용하는 SI 단위 및 파생 단위를 지정한다.
3. 좌표 프레임 규약
3.1 오른손 좌표계 (Right-Hand Coordinate System)
REP 103은 모든 좌표 프레임에 대하여 **오른손 좌표계(Right-Hand Coordinate System)**를 사용하도록 규정한다. 오른손 좌표계에서 좌표축의 방향은 오른손 법칙에 의하여 결정되며, 회전의 양의 방향 또한 오른손 법칙을 따른다.
3.2 기본 좌표계 방향
REP 103은 용도에 따라 두 가지 좌표계 방향 규약을 정의한다.
3.2.1 물체 고정 좌표계 (Body-Fixed Frame)
로봇 본체(body), 센서, 부품 등의 물체에 고정된 좌표계이다.
| 축 | 방향 | 설명 |
|---|---|---|
| X축 | 전방 (Forward) | 물체의 주행 방향 또는 주시 방향 |
| Y축 | 좌측 (Left) | 물체의 좌측 방향 |
| Z축 | 상방 (Up) | 중력 반대 방향 |
이 규약은 **ENU (East-North-Up)**가 아닌 FLU (Forward-Left-Up) 규약이며, 로봇 본체의 관점에서 축 방향을 정의한다.
Z (Up)
↑
|
|
+------→ X (Forward)
/
/
↙
Y (Left)
3.2.2 글로벌 좌표계 (Global/Geographic Frame)
지구 기반의 글로벌 좌표계이다.
| 축 | 방향 | 설명 |
|---|---|---|
| X축 | 동쪽 (East) | 동쪽 방향 |
| Y축 | 북쪽 (North) | 북쪽 방향 |
| Z축 | 상방 (Up) | 중력 반대 방향 |
이 규약은 ENU (East-North-Up) 규약으로, 지리적 좌표계와의 정합성을 보장한다.
Z (Up)
↑
|
|
+------→ X (East)
/
/
↙
Y (North)
3.3 카메라 좌표계 (Optical Frame)
카메라 센서에 대하여는 컴퓨터 비전 분야의 관례를 따르는 별도의 좌표계 규약을 정의한다.
| 축 | 방향 | 설명 |
|---|---|---|
| X축 | 우측 (Right) | 영상의 수평 방향 |
| Y축 | 하방 (Down) | 영상의 수직 방향 |
| Z축 | 전방 (Forward) | 카메라의 광축(optical axis) 방향 |
이 규약은 영상 좌표계에서 (u, v) 좌표가 영상의 좌상단을 원점으로 우측과 하방으로 증가하는 관례와 일치한다. 카메라의 물체 고정 좌표계(camera_link)와 광학 좌표계(camera_optical_frame) 사이의 변환은 정적 변환으로 정의된다.
카메라 링크 프레임에서 광학 프레임으로의 회전 변환은 다음과 같다.
R_{\text{optical}} = R_z(-90°) \cdot R_x(-90°)
이를 전개하면 다음의 회전 행렬이 도출된다.
R = \begin{bmatrix} 0 & -1 & 0 \\ 0 & 0 & -1 \\ 1 & 0 & 0 \end{bmatrix}
4. 회전 표현 규약
4.1 오일러 각 순서
REP 103은 오일러 각의 회전 순서를 고정 축 RPY (Roll-Pitch-Yaw) 방식으로 규정한다.
| 회전 명칭 | 축 | 기호 | 설명 |
|---|---|---|---|
| Roll | X축 | \phi (phi) | X축 주위의 회전 |
| Pitch | Y축 | \theta (theta) | Y축 주위의 회전 |
| Yaw | Z축 | \psi (psi) | Z축 주위의 회전 |
고정 축 RPY에서 회전의 적용 순서는 먼저 Yaw(Z축), 이어서 Pitch(Y축), 마지막으로 Roll(X축)이다. 이는 본체 축(intrinsic) ZYX 회전 순서와 동치이다.
R = R_x(\phi) \cdot R_y(\theta) \cdot R_z(\psi)
4.2 쿼터니언 규약
REP 103은 쿼터니언의 표현에 대하여 Hamilton 규약을 따르며, 구성 요소의 순서를 다음과 같이 정의한다.
q = (x, y, z, w)
여기서 (x, y, z)는 쿼터니언의 벡터 부분, w는 스칼라 부분이다. 단위 쿼터니언(unit quaternion)의 조건은 다음과 같다.
\|q\| = \sqrt{x^2 + y^2 + z^2 + w^2} = 1
5. 단위 규약
5.1 기본 SI 단위
REP 103은 모든 물리량에 대하여 **국제단위계(SI)**를 사용하도록 규정한다.
| 물리량 | 단위 | 기호 |
|---|---|---|
| 길이 | 미터 | m |
| 질량 | 킬로그램 | kg |
| 시간 | 초 | s |
| 전류 | 암페어 | A |
| 온도 | 섭씨 | °C |
| 각도 | 라디안 | rad |
| 주파수 | 헤르츠 | Hz |
| 힘 | 뉴턴 | N |
| 전압 | 볼트 | V |
| 자기장 | 테슬라 | T |
5.2 주요 파생 단위
| 물리량 | 단위 | 표현 |
|---|---|---|
| 선속도 | m/s | 미터 매 초 |
| 각속도 | rad/s | 라디안 매 초 |
| 선가속도 | m/s² | 미터 매 초 제곱 |
| 각가속도 | rad/s² | 라디안 매 초 제곱 |
| 토크 | N·m | 뉴턴 미터 |
| 압력 | Pa | 파스칼 |
5.3 예외 사항
| 물리량 | 단위 | 사유 |
|---|---|---|
| 위도/경도 | 도(°) | 지리 정보 시스템(GIS) 관례 준수 |
| 온도 | °C (섭씨) | 일상적 사용 편의성 |
위도와 경도는 라디안이 아닌 도(degree) 단위를 사용하며, 이는 GPS 수신기와 지도 서비스의 표준 출력 형식과의 호환성을 위한 것이다.
6. ROS2 메시지와 REP 103의 관계
6.1 주요 메시지 유형과 단위 적용
ROS2 표준 메시지 패키지에 정의된 메시지 유형은 REP 103의 단위 규약을 준수한다.
| 메시지 유형 | 물리량 | 단위 |
|---|---|---|
geometry_msgs/msg/Point | 위치 | m (x, y, z) |
geometry_msgs/msg/Quaternion | 회전 | 무차원 (x, y, z, w) |
geometry_msgs/msg/Twist | 선속도, 각속도 | m/s, rad/s |
geometry_msgs/msg/Wrench | 힘, 토크 | N, N·m |
sensor_msgs/msg/LaserScan | 거리 | m |
sensor_msgs/msg/Imu | 가속도, 각속도 | m/s², rad/s |
sensor_msgs/msg/NavSatFix | 위도, 경도 | 도(°) |
sensor_msgs/msg/MagneticField | 자기장 | T |
6.2 좌표 프레임 적용
REP 103의 좌표계 방향 규약은 TF2 변환 트리에서 각 프레임의 축 방향을 결정한다. 예를 들어:
base_link프레임은 FLU 규약을 따라 X축이 전방, Y축이 좌측, Z축이 상방을 가리킨다.map프레임과odom프레임은 ENU 규약을 따라 X축이 동쪽, Y축이 북쪽, Z축이 상방을 가리킨다.camera_optical_frame은 광학 프레임 규약을 따라 Z축이 전방(광축 방향)을 가리킨다.
7. NED 좌표계와의 관계
항공 및 해양 분야에서는 NED (North-East-Down) 좌표계가 널리 사용된다. REP 103의 ENU 규약과 NED 규약 사이의 변환은 다음과 같다.
$$
\begin{bmatrix} x_{\text{ENU}} \ y_{\text{ENU}} \ z_{\text{ENU}} \end
\begin{bmatrix} 0 & 1 & 0 \ 1 & 0 & 0 \ 0 & 0 & -1 \end{bmatrix}
\begin{bmatrix} x_{\text{NED}} \ y_{\text{NED}} \ z_{\text{NED}} \end{bmatrix}
$$
즉, NED의 North는 ENU의 Y축, NED의 East는 ENU의 X축, NED의 Down은 ENU의 -Z축에 대응한다. MAVLink 프로토콜 등 NED 기반의 비행 제어 시스템과 ROS2를 연동할 때에는 이 변환을 정적 변환으로 정의하여 TF2 변환 트리에 포함하여야 한다.
8. TF2에서의 REP 103 준수
8.1 프레임 정의 시 축 방향 확인
TF2로 좌표 프레임을 정의할 때에는 다음 사항을 확인하여야 한다.
- 로봇 본체 프레임: X축이 로봇의 전진 방향을 가리켜야 한다.
- 센서 프레임: 센서 제조사의 좌표계가 REP 103 규약과 다를 수 있으므로, 드라이버 수준에서 변환을 수행하거나 정적 변환을 추가하여야 한다.
- 글로벌 프레임:
map프레임과odom프레임은 ENU 규약을 따르도록 구성하여야 한다.
8.2 IMU 데이터의 좌표계 정렬
IMU 센서의 출력은 센서 제조사마다 좌표계가 다를 수 있다. REP 103을 준수하려면 IMU 드라이버에서 다음을 보장하여야 한다.
- 각속도(
angular_velocity)는 오른손 법칙에 따른 양의 방향으로 표현되어야 한다. - 선가속도(
linear_acceleration)에 중력 성분이 포함되는 경우, 정지 상태에서 Z축 가속도가 약 +9.81 \, \text{m/s}^2이어야 한다. - 자기장 데이터는 테슬라(T) 단위로 표현되어야 한다.
9. 요약
REP 103은 ROS/ROS2 생태계에서 좌표 프레임과 물리 단위에 대한 통일된 규약을 제공하는 핵심 표준 문서이다. 오른손 좌표계 기반의 FLU (물체 고정) 및 ENU (글로벌) 방향 규약, SI 단위계의 사용, 고정 축 RPY 회전 순서, Hamilton 쿼터니언 규약 등을 규정한다. 모든 ROS2 패키지, 드라이버, 알고리즘이 이 규약을 준수함으로써 구성 요소 간의 상호 운용성이 보장되며, TF2를 이용한 좌표 변환의 정확성과 일관성이 확보된다.
참고 문헌 및 출처
- T. Foote, “REP 103 – Standard Units of Measure and Coordinate Conventions,” ROS Enhancement Proposals, https://www.ros.org/reps/rep-0103.html (2010, 최종 갱신 2023)
- ROS2 공식 문서, “Coordinate Frames for Mobile Platforms”, https://docs.ros.org/en/humble/Concepts/Intermediate/About-Coordinate-Frames.html (ROS2 Humble Hawksbill)
- ROS Wiki, “Conventions”, https://wiki.ros.org/geometry/CoordinateFrameConventions
- International Bureau of Weights and Measures (BIPM), “The International System of Units (SI),” 9th ed., 2019.