659.82 표준 좌표 프레임 규약 (REP 105) 개요

1. 개요

**REP 105 (ROS Enhancement Proposal 105)**는 이동 로봇(mobile robot) 플랫폼에서 사용하는 좌표 프레임의 계층 구조와 각 프레임의 의미론(semantics)을 정의하는 공식 표준 문서이다. REP 103이 좌표계의 방향과 단위 규약을 규정하는 것과 달리, REP 105는 로봇 시스템의 프레임 트리(frame tree) 구조와 각 프레임 간의 **변환 책임(transform authority)**을 정의한다. 이 규약은 TF2 좌표 변환 라이브러리의 프레임 구성에 직접적으로 반영되며, 내비게이션, 위치 추정, 경로 계획 등 로봇 소프트웨어 전반에 걸쳐 준수되어야 한다.

2. REP 105의 목적

2.1 프레임 계층 표준화의 필요성

이동 로봇 시스템은 다음과 같은 다양한 소스에서 위치 정보를 획득한다.

  • 주행 측정(Odometry): 바퀴 인코더, 관성 측정 장치(IMU) 등에 의한 누적 위치 추정
  • 글로벌 위치 추정(Global Localization): SLAM, AMCL 등에 의한 지도 기반 위치 추정
  • 위성 항법(GNSS): GPS 수신기에 의한 지구 좌표계 기반 위치 추정

각 소스는 서로 다른 정확도, 갱신 주기, 드리프트 특성을 지닌다. REP 105는 이러한 이질적 위치 정보를 일관된 프레임 계층 구조 내에서 체계적으로 관리할 수 있도록 표준을 제시한다.

2.2 설계 원칙

REP 105의 프레임 계층 구조는 다음의 설계 원칙에 기반한다.

  1. 연속성 보장: 각 프레임 간의 변환은 시간적으로 연속적(continuous)이어야 한다. 불연속적 점프(discontinuous jump)가 발생하면 안 된다.
  2. 책임 분리: 각 변환은 단일 소프트웨어 구성 요소에 의하여 독점적으로 발행되어야 한다.
  3. 의미론적 명확성: 각 프레임의 의미와 목적이 명확히 구분되어야 한다.

3. 표준 프레임 계층 구조

3.1 기본 프레임 체인

REP 105는 이동 로봇 시스템에 대하여 다음의 프레임 체인을 정의한다.

earth → map → odom → base_link

각 프레임의 역할과 특성은 다음과 같다.

프레임유형연속성정확성발행 주체
earth글로벌(지구 고정)연속절대GNSS 드라이버
map글로벌(지도 고정)불연속 허용장기적 정확위치 추정 노드 (AMCL, SLAM 등)
odom로컬(주행 측정 기준)연속 보장단기적 정확, 장기적 드리프트주행 측정 노드
base_link로봇 본체 고정--로봇 물리적 기준점

3.2 프레임 체인의 의미

이 프레임 체인에서 각 변환의 의미를 분석하면 다음과 같다.

3.2.1 earth → map

earth 프레임에서 map 프레임으로의 변환은 지구 좌표계(예: WGS84)에서 로컬 지도 좌표계로의 좌표 변환을 나타낸다. 이 변환은 GNSS 데이터를 기반으로 하며, 지구 상의 절대 위치를 로컬 좌표로 변환하는 역할을 수행한다.

3.2.2 map → odom

map 프레임에서 odom 프레임으로의 변환은 위치 추정 알고리즘이 제공하는 보정(correction) 정보를 나타낸다. 이 변환은 주행 측정의 누적 오차(drift)를 보상하며, 위치 추정 결과가 갱신될 때마다 변경된다.

이 변환의 핵심 특성은 다음과 같다.

  • 불연속적 변화 허용: 위치 추정 결과가 갱신되면 변환 값이 급격히 변할 수 있다.
  • 저빈도 갱신: 위치 추정 알고리즘의 갱신 주기(일반적으로 1~20 Hz)에 따라 변환이 갱신된다.
  • 글로벌 정확성: 장기간에 걸쳐 정확한 글로벌 위치를 제공한다.

3.2.3 odom → base_link

odom 프레임에서 base_link 프레임으로의 변환은 주행 측정 데이터에 의한 로봇의 상대적 위치 변화를 나타낸다. 이 변환의 핵심 특성은 다음과 같다.

  • 연속성 보장: 이 변환은 반드시 시간적으로 연속적이어야 한다. 불연속적 점프가 발생하면 안 된다.
  • 고빈도 갱신: 주행 측정 센서의 갱신 주기(일반적으로 50~200 Hz)에 따라 빈번하게 갱신된다.
  • 단기적 정확성: 짧은 시간 구간에서는 정확하나, 시간이 경과함에 따라 누적 오차가 증가한다.

4. 글로벌 위치의 이중 구조

4.1 연속성과 정확성의 분리

REP 105의 가장 중요한 설계 결정은 글로벌 위치 정보를 map → odomodom → base_link의 두 변환으로 분리한 것이다. 이 이중 구조의 이점은 다음과 같다.

  1. 연속적 운동 제어: 로봇의 운동 제어기는 odom → base_link 변환만을 참조하여 연속적이고 안정적인 제어를 수행할 수 있다. map → odom 변환의 불연속적 갱신이 제어 루프에 직접적인 영향을 미치지 않는다.

  2. 글로벌 정확성 유지: 위치 추정 알고리즘은 map → odom 변환을 통하여 주행 측정의 누적 오차를 주기적으로 보정한다. 최종적으로 map → base_link 변환은 두 변환의 합성으로 다음과 같이 도출된다.

T_{\text{map} \leftarrow \text{base\_link}} = T_{\text{map} \leftarrow \text{odom}} \cdot T_{\text{odom} \leftarrow \text{base\_link}}

  1. 관심사 분리(Separation of Concerns): 주행 측정 노드와 위치 추정 노드가 각자의 변환만을 독립적으로 발행하므로, 두 구성 요소 간의 결합도(coupling)가 최소화된다.

4.2 변환 발행 책임

변환발행 주체예시 노드
earth → mapGNSS/지리 좌표 변환 노드robot_localization(navsat_transform_node)
map → odom위치 추정 노드nav2_amcl, slam_toolbox, robot_localization
odom → base_link주행 측정 노드ros2_control 기반 주행 측정, robot_localization(EKF/UKF)
base_link → sensor_frames정적 변환robot_state_publisher, static_transform_publisher

5. TF2 변환 트리에서의 구현

5.1 전형적인 프레임 트리 구조

REP 105를 준수하는 전형적인 이동 로봇의 TF2 변환 트리는 다음과 같은 구조를 갖는다.

earth
  └── map
        └── odom
              └── base_footprint
                    └── base_link
                          ├── laser_link
                          │     └── laser_frame
                          ├── camera_link
                          │     └── camera_optical_frame
                          ├── imu_link
                          ├── wheel_left_link
                          └── wheel_right_link

5.2 프레임 트리의 단일 루트 제약

TF2의 변환 트리는 단일 루트(single root)를 가져야 한다. REP 105의 프레임 체인에서 루트 프레임은 시스템의 구성에 따라 다음과 같이 결정된다.

  • GNSS를 사용하는 시스템: earth가 루트 프레임이 된다.
  • GNSS를 사용하지 않는 시스템: map이 루트 프레임이 된다.
  • 위치 추정 없이 주행 측정만 사용하는 시스템: odom이 루트 프레임이 된다. 이 경우 mapodom과 동일하게 설정하거나 항등 변환(identity transform)으로 발행한다.

5.3 런치 파일에서의 프레임 구성 예시

# launch/robot_tf.launch.py
from launch import LaunchDescription
from launch_ros.actions import Node


def generate_launch_description():
    return LaunchDescription([
        # robot_state_publisher: URDF 기반 정적 변환 발행
        Node(
            package='robot_state_publisher',
            executable='robot_state_publisher',
            parameters=[{'robot_description': robot_description}],
            output='screen',
        ),

        # 정적 변환: base_footprint → base_link
        Node(
            package='tf2_ros',
            executable='static_transform_publisher',
            arguments=['0', '0', '0.1', '0', '0', '0',
                       'base_footprint', 'base_link'],
        ),

        # 주행 측정 노드: odom → base_footprint 발행
        Node(
            package='robot_localization',
            executable='ekf_node',
            name='ekf_odom',
            parameters=[{
                'odom_frame': 'odom',
                'base_link_frame': 'base_footprint',
                'world_frame': 'odom',
            }],
        ),

        # 위치 추정 노드: map → odom 발행
        Node(
            package='nav2_amcl',
            executable='amcl',
            parameters=[{
                'global_frame_id': 'map',
                'odom_frame_id': 'odom',
                'base_frame_id': 'base_footprint',
            }],
        ),
    ])

6. 다중 로봇 시스템에서의 REP 105

6.1 네임스페이싱

다중 로봇 시스템에서는 각 로봇의 프레임에 네임스페이스(namespace)를 적용하여 프레임 이름의 충돌을 방지한다.

earth
  └── map
        ├── robot1/odom
        │     └── robot1/base_link
        │           ├── robot1/laser_link
        │           └── robot1/camera_link
        └── robot2/odom
              └── robot2/base_link
                    ├── robot2/laser_link
                    └── robot2/camera_link

이 구조에서 map 프레임은 모든 로봇에 공통이며, odombase_link 등의 로봇별 프레임은 네임스페이스로 구분된다.

6.2 공유 글로벌 프레임

다중 로봇 시스템에서 map 프레임을 공유하려면 모든 로봇의 위치 추정 노드가 동일한 map 프레임을 기준으로 자신의 odom 프레임에 대한 변환을 발행하여야 한다. 이를 위하여는 공유 지도의 사용과 초기 위치의 정확한 설정이 필요하다.

7. base_footprint 프레임의 도입

REP 105는 base_link 외에 base_footprint 프레임의 사용을 허용한다. base_footprint는 로봇의 중심을 지면에 수직으로 투영한 지점에 위치하며, Z축 값이 항상 0이다. 이 프레임은 2D 내비게이션에서 지면 평면 상의 위치를 표현하는 데 유용하다.

odom → base_footprint → base_link

base_footprintbase_link 사이의 변환은 일반적으로 Z축 오프셋만을 포함하는 정적 변환이다.

8. 프레임 선택 지침

로봇 소프트웨어의 각 구성 요소가 참조하여야 하는 프레임은 다음과 같다.

구성 요소참조 프레임사유
운동 제어기odombase_link연속적 변환 보장, 제어 안정성
글로벌 경로 계획기map글로벌 정확성 필요
로컬 경로 계획기odom단기적 정확성과 연속성 필요
장애물 감지base_link 또는 센서 프레임로봇 중심의 상대적 위치 필요
지도 작성map글로벌 좌표계에서의 데이터 축적
GPS 기반 항법earth지구 좌표계 기반 경로 추종

9. 요약

REP 105는 이동 로봇 시스템의 좌표 프레임 계층 구조를 earth → map → odom → base_link으로 정의하고, 각 프레임의 의미론, 연속성 특성, 발행 책임을 명시한다. 이 규약의 핵심은 글로벌 위치 정보를 map → odom(불연속 허용, 장기 정확)과 odom → base_link(연속 보장, 단기 정확)의 두 변환으로 분리하여, 연속적 운동 제어와 글로벌 정확성을 동시에 달성하는 것이다. 모든 ROS2 기반의 내비게이션, 위치 추정, 제어 소프트웨어는 이 규약을 준수하여야 하며, TF2 변환 트리는 REP 105의 프레임 체인을 기반으로 구성되어야 한다.


참고 문헌 및 출처

  • T. Foote, “REP 105 – Coordinate Frames for Mobile Platforms,” ROS Enhancement Proposals, https://www.ros.org/reps/rep-0105.html (2010, 최종 갱신 2022)
  • ROS2 공식 문서, “Coordinate Frames for Mobile Platforms”, https://docs.ros.org/en/humble/Concepts/Intermediate/About-Coordinate-Frames.html (ROS2 Humble Hawksbill)
  • S. Macenski et al., “Robot Operating System 2: Design, Architecture, and Uses in the Wild,” Science Robotics, vol. 7, no. 66, 2022.
  • Nav2 공식 문서, “First-Time Robot Setup Guide”, https://docs.nav2.org/setup_guides/ (Nav2 1.1, 2023)