대상: ROS 노드 간 데이터 흐름을 시각적으로 보고, 실시간 값과 로그 상태를 함께 점검하고 싶은 개발자
환경: Ubuntu 20.04 + ROS Noetic (Melodic, Kinetic 모두 동일 명령어 사용 가능)
1. 문제/주제 요약
ROS 기반 프로젝트를 진행하다 보면,
- “지금 어떤 노드가 떠 있지?”
- “토픽이 제대로 퍼블리시되고 있나?”
- “값이 실시간으로 어떻게 변하지?”
- “에러 로그는 어디서 보지?”
이런 기본적인 상태를 한눈에 파악하기 어렵습니다.
이럴 때 ROS에서 제공하는 시각화 도구인rqt_graph, rqt_plot, rqt_console
세 가지를 조합하면 시스템 상태를 직관적으로 점검할 수 있습니다.
2. 원인/배경 설명
ROS는 분산 구조(노드 간 통신)로 되어 있기 때문에,
터미널에서만 확인하면 데이터 흐름을 파악하기 어렵습니다.
rqt_graph→ 노드 간 토픽 연결 구조 시각화rqt_plot→ 수치형 토픽 데이터 실시간 그래프 표시rqt_console→ 로그(Level별) 모니터링 및 필터링
이 세 가지를 동시에 사용하면, 시스템 전체 상태를 시각적으로 모니터링할 수 있습니다.
3. 설치 및 실행 순서
(1) rqt 패키지 설치
일부는 기본 ROS 설치에 포함되지만, 없을 경우 다음 명령으로 설치:
sudo apt install ros-noetic-rqt ros-noetic-rqt-common-plugins
(2) rqt_graph – 노드/토픽 구조 보기
현재 ROS 마스터에 등록된 노드 간 통신 관계를 시각화합니다.
rqt_graph
사용 팁
Nodes Only: 노드 간 연결만 표시 (토픽 생략)Topics Only: 토픽 중심으로 보기Dead sinks/sources: 끊긴 노드 확인 가능Refresh: 동적으로 업데이트
💡 실무 활용 예:
/camera_node→/image_proc→/image_view
이런 흐름을 시각적으로 보면 데이터 라인이 잘 이어지는지 바로 확인할 수 있습니다.
(3) rqt_plot – 토픽 데이터 실시간 그래프 보기
실시간으로 발행되는 수치형 토픽(예: 센서값, 속도, 오도메트리 등)을 그래프로 확인합니다.
rqt_plot
예시:
속도 명령(/cmd_vel)의 linear.x, angular.z 변화를 보고 싶다면
GUI에서 아래처럼 입력:
/cmd_vel/linear/x
/cmd_vel/angular/z
또는 CLI에서 바로 실행:
rqt_plot /cmd_vel/linear/x /cmd_vel/angular/z
주요 기능
- 실시간 업데이트 (약 10Hz 정도)
- 여러 토픽 비교 가능
- Scale/Autoscale 기능으로 그래프 자동 조정
💡 실무 팁:
센서 드리프트나 제어 피드백 확인할 때 매우 유용합니다.
예:/odom/pose/pose/position/xvs/goal/x비교
(4) rqt_console – 로그 모니터링 및 필터링
rosout 토픽을 구독하여 ROS 로그를 한눈에 모니터링합니다.
rqt_console
주요 기능
- 로그 레벨별 필터링: Debug, Info, Warn, Error, Fatal
- 패키지별 / 노드별 / 시간별 검색 가능
- rqt_logger_level 플러그인과 연동하면,
실행 중 노드의 로그 레벨을 실시간으로 변경 가능
💡 예시:
특정 노드에서 Error 로그만 보고 싶을 때:
Filter → “Severity = Error”, “Node = /odom_publisher”
(5) 통합 모드로 함께 실행하기
각 도구를 개별 창으로 띄워도 되지만,rqt만 실행해도 통합 환경에서 플러그인 형태로 모두 띄울 수 있습니다.
rqt
Plugins 메뉴에서 다음 경로를 따라가면 됩니다:
- Visualization → Graph (rqt_graph)
- Plot → Plot (rqt_plot)
- Logging → Console (rqt_console)
🎯 이렇게 설정해두면, rqt 하나로 토픽 흐름 + 값 변화 + 로그 상태를 모두 확인 가능.
4. 추가 팁 / 자주 하는 실수
rqt_graph가 아무것도 안 나올 때 →
ROS Master가 실행 중인지(roscore) 확인하고, 토픽이 실제 발행되고 있는지rostopic list로 점검.rqt_plot이 값이 안 변할 때 →
해당 토픽이 float, int 타입인지 확인. 문자열(string) 타입은 그래프로 표시되지 않습니다.rqt_console로그가 안 뜰 때 →rosout노드가 실행 중인지 확인 (rosnode list | grep rosout)- 자주 쓰는 조합 예시:
roscore & roslaunch my_robot bringup.launch & rqt_graph & rqt_plot /odom/pose/pose/position/x & rqt_console &→ 전체 시스템 동작을 한눈에 시각화 + 로그 추적
5. 정리
| 도구 | 목적 | 주요 기능 |
|---|---|---|
| rqt_graph | 시스템 구조 시각화 | 노드-토픽 연결 관계 표시 |
| rqt_plot | 데이터 변화 관찰 | 실시간 그래프 표시 |
| rqt_console | 로그 모니터링 | 로그 필터링 및 분석 |
📌 요약
rqt_graph: 노드 연결 관계 파악rqt_plot: 센서 및 제어 데이터의 실시간 변화 확인rqt_console: 로그 상태와 에러 모니터링rqt하나로 세 가지 모두 통합해서 관리 가능