659.103 tf2_monitor를 이용한 변환 지연 시간 모니터링
1. 개요
tf2_monitor는 TF2 변환의 발행 주파수와 지연 시간을 실시간으로 모니터링하는 명령행 도구이다. 각 변환 발행자의 평균 지연, 최대 지연, 발행 빈도를 측정하여 변환 시스템의 건전성을 진단할 수 있다.
2. 사용법
2.1 전체 변환 모니터링
ros2 run tf2_ros tf2_monitor
2.2 특정 프레임 간 모니터링
ros2 run tf2_ros tf2_monitor frame1 frame2
3. 출력 정보
3.1 전체 모니터링 출력 예시
Frames:
Frame: base_link, published by /robot_state_publisher,
Average Delay: 0.0001 Max Delay: 0.003
Frame: laser_link, published by /robot_state_publisher,
Average Delay: 0.0001 Max Delay: 0.001
Frame: odom, published by /ekf_node,
Average Delay: 0.005 Max Delay: 0.012
All Broadcasters:
Node: /robot_state_publisher 50.00 Hz, Average Delay: 0.0001 Max Delay: 0.003
Node: /ekf_node 100.02 Hz, Average Delay: 0.005 Max Delay: 0.012
3.2 출력 필드
| 필드 | 설명 | 정상 범위 |
|---|---|---|
| published by | 변환을 발행하는 노드 이름 | - |
| Hz | 발행 주파수 | 설정과 일치 |
| Average Delay | 평균 지연 시간 (s) | < 0.01 s |
| Max Delay | 최대 지연 시간 (s) | < 0.1 s |
4. 진단 기준
4.1 정상 상태
- 발행 주파수가 설정된 값과 일치
- 평균 지연이 10 ms 미만
- 최대 지연이 100 ms 미만
4.2 이상 상태 진단
| 증상 | 가능한 원인 | 대응 |
|---|---|---|
| 발행 주파수 0 Hz | 발행 노드 미실행 또는 멈춤 | 노드 상태 확인 및 재시작 |
| 평균 지연 > 100 ms | 시스템 과부하 또는 네트워크 지연 | CPU 부하 확인, 발행 주파수 조절 |
| 최대 지연만 높음 (간헐적) | GC(Garbage Collection) 또는 순간 부하 | 실시간 설정 확인, 우선순위 조절 |
| 동일 프레임에 복수 발행자 | 다중 노드가 동일 변환 발행 | 중복 발행 노드 제거 |
| 주파수 불안정 | 발행 타이머 정확도 문제 | Executor 설정 및 콜백 부하 확인 |
5. 네트워크 환경에서의 활용
분산 시스템에서 TF2 변환이 네트워크를 통하여 전달되는 경우, tf2_monitor로 네트워크 지연에 의한 변환 지연을 관측할 수 있다. 이는 DDS QoS 설정의 최적화에 유용한 정보를 제공한다.
6. 요약
tf2_monitor는 TF2 변환의 발행 주파수와 지연 시간을 모니터링하여 변환 시스템의 성능과 건전성을 진단하는 도구이다. 발행 주체, 주파수, 평균/최대 지연을 확인하여 변환 지연, 발행 중단, 다중 발행 충돌 등의 문제를 식별할 수 있다.
참고 문헌 및 출처
tf2_ros패키지, https://github.com/ros2/geometry2 (ROS2 Humble 브랜치)- ROS2 공식 문서, “Debugging tf2”, https://docs.ros.org/en/humble/Tutorials/Intermediate/Tf2/ (ROS2 Humble Hawksbill)