659.102 tf2_echo를 이용한 변환 실시간 확인

1. 개요

tf2_echo는 TF2 변환 트리에서 두 프레임 사이의 변환을 실시간으로 출력하는 명령행 도구이다. 연속적으로 변환 값을 갱신하여 표시하므로, 동적 변환의 시간적 변화를 관찰하거나 정적 변환의 정확성을 검증하는 데 활용된다.

2. 사용법

2.1 기본 형식

ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

이 명령은 source_frame에서 target_frame으로의 변환을 지속적으로 출력한다.

2.2 출력 예시

$ ros2 run tf2_ros tf2_echo map base_link
At time 1679123456.789012345
- Translation: [2.500, 1.300, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.383, 0.924]
- Rotation: in RPY (radian) [0.000, 0.000, 0.785]
- Rotation: in RPY (degree) [0.000, 0.000, 45.000]

2.3 출력 필드

필드설명
At time변환이 유효한 시간 (ROS2 시간)
Translation병진 벡터 [x, y, z] (단위: m)
Quaternion쿼터니언 [q_x, q_y, q_z, q_w]
RPY (radian)오일러 각 [\text{roll}, \text{pitch}, \text{yaw}] (단위: rad)
RPY (degree)오일러 각 (단위: 도)

2.4 갱신 주기

tf2_echo는 기본적으로 1 Hz로 출력을 갱신한다. --rate 옵션으로 갱신 주기를 변경할 수 있다.

ros2 run tf2_ros tf2_echo map base_link --rate 10

3. 활용 사례

3.1 정적 변환 검증

URDF나 static_transform_publisher로 설정한 정적 변환이 예상 값과 일치하는지 확인한다.

# 예상: Translation [0.3, 0.0, 0.15], Rotation RPY [0, 0, 0]
ros2 run tf2_ros tf2_echo base_link laser_link

3.2 로봇 위치 추적

로봇의 글로벌 위치를 실시간으로 모니터링한다.

ros2 run tf2_ros tf2_echo map base_link

3.3 주행 측정 드리프트 관찰

map → odom 변환의 변화를 관찰하여 위치 추정의 보정 동작을 확인한다.

ros2 run tf2_ros tf2_echo map odom

3.4 센서 프레임 관계 확인

카메라 광학 프레임의 정렬이 올바른지 확인한다.

ros2 run tf2_ros tf2_echo camera_link camera_optical_frame
# 예상: RPY [-90, 0, -90] (도)

4. 오류 메시지

오류의미해결
“Could not find a connection”두 프레임 사이에 경로 없음view_frames로 트리 구조 확인
“Lookup would require extrapolation”요청 시간에 변환 데이터 없음변환 발행 노드 실행 확인
“source_frame does not exist”소스 프레임이 발행되지 않음프레임 이름 및 발행 노드 확인

5. 요약

tf2_echo는 두 프레임 간의 변환을 실시간으로 출력하는 경량 진단 도구로, 정적 변환의 검증, 동적 변환의 모니터링, 센서 프레임의 정렬 확인 등 다양한 디버깅 시나리오에서 가장 빈번하게 사용되는 TF2 도구이다.


참고 문헌 및 출처

  • tf2_ros 패키지, https://github.com/ros2/geometry2 (ROS2 Humble 브랜치)
  • ROS2 공식 문서, “Using tf2_echo”, https://docs.ros.org/en/humble/Tutorials/Intermediate/Tf2/ (ROS2 Humble Hawksbill)