rqt 기능 정리
ROS 2의 GUI 디버깅 및 모니터링 도구::rqt
로봇 시스템을 개발하고 디버깅하는 과정에서, 시스템의 내부 상태를 시각적으로 확인하고 상호작용하는 것은 매우 중요하다. ROS(Robot Operating System)는 이러한 필요를 충족시키기 위해 ‘rqt’라는 강력한 GUI(Graphical User Interface) 도구 모음을 제공한다. ROS 2에서도 rqt는 여전히 핵심적인 역할을 수행하며 개발자에게 유용한 기능을 제공한다. 이 블로그에서는 ROS 2의 rqt가 무엇인지, 주요 플러그인과 사용법, 그리고 로봇 개발에 어떻게 활용될 수 있는지 자세히 알아본다.
Gazebo 실행시 나오는 여러 노드들과 topic 들 뿐만 아니라 여러 interface들을 rqt를 통해 모니터링 해보도록 한다.
1. rqt란?
rqt는 ROS를 위한 Qt 기반의 GUI 프레임워크이다. 다양한 플러그인을 모듈 형태로 제공하여, 사용자가 원하는 기능을 조합하여 로봇 시스템을 모니터링하고 디버깅할 수 있는 맞춤형 워크스페이스를 구성할 수 있다. ROS 1에서부터 시작된 rqt는 ROS 2로 넘어오면서도 그 중요성을 유지하며 ROS 2의 통신(DDS) 및 노드 구조에 맞춰 업데이트되었다.
2. ROS 2에서 rqt 시작하기
ROS 2 환경이 설정되어 있다면, rqt를 시작하는 것은 매우 간단하다.
1
$ rqt
이 명령어를 실행하면 빈 rqt 워크스페이스 창이 나타난다. 여기서 “Plugins” 메뉴를 통해 원하는 기능을 선택하여 추가할 수 있다. 또는 특정 플러그인을 직접 실행할 수도 있다.
예를 들어, rqt_graph를 바로 실행하려면 다음 명령어를 사용한다.
1
$ ros2 run rqt_graph rqt_graph
rqt는 내부적으로 ROS 2 통신 계층을 사용하여 토픽, 서비스, 액션 등의 정보를 가져온다.
3. ROS 2의 주요 rqt 플러그인
rqt는 다양한 용도의 플러그인들을 제공한다. 다음은 ROS 2 개발에 특히 유용한 주요 플러그인들이다.
3.1. rqt_graph: 노드 및 토픽 그래프 시각화
rqt_graph는 ROS 시스템의 노드와 이들 간의 토픽 통신 관계를 시각적으로 보여주는 가장 기본적인 도구 중 하나이다. 로봇 시스템의 전체적인 구조를 한눈에 파악하고, 데이터 흐름을 이해하는 데 필수적이다.
- 사용법:
ros2 run rqt_graph rqt_graph - 주요 기능: 노드, 토픽, 액션, 서비스 시각화; 노드 필터링; 그래프 자동 업데이트.
3.2. rqt_plot: 토픽 데이터 실시간 플로팅
rqt_plot은 지정된 토픽의 수치 데이터를 실시간으로 그래프로 그려주는 도구이다. 센서 데이터, 로봇의 위치/속도 정보 등 시간에 따라 변화하는 값을 모니터링하는 데 매우 유용하다.
- 사용법:
ros2 run rqt_plot rqt_plot - 주요 기능: 여러 토픽의 데이터 동시 플로팅; 축 범위 조절; 데이터 일시 정지/재개.
3.3. rqt_console: 로깅 메시지 확인
rqt_console은 ROS 시스템에서 발생하는 모든 로깅 메시지(DEBUG, INFO, WARN, ERROR, FATAL)를 한곳에 모아 보여준다. 문제를 진단하고 디버깅할 때 가장 먼저 확인해야 할 도구이다.
- 사용법:
ros2 run rqt_console rqt_console - 주요 기능: 메시지 레벨별 필터링; 노드별 필터링; 메시지 검색.
3.4. rqt_msg, rqt_srv, rqt_action: 메시지/서비스/액션 정보 탐색
이 플러그인들은 ROS 메시지, 서비스, 액션의 정의를 탐색하고 확인하는 데 사용된다. 특정 토픽에서 어떤 메시지 타입이 사용되는지, 서비스 호출에 어떤 인자가 필요한지 등을 쉽게 파악할 수 있다.
- 사용법:
ros2 run rqt_msg rqt_msg,ros2 run rqt_srv rqt_srv,ros2 run rqt_action rqt_action - 주요 기능: 메시지/서비스/액션 구조 및 필드 타입 확인; 패키지별 검색.
3.5. rqt_logger_level: 로깅 레벨 제어
rqt_logger_level은 실행 중인 노드의 로깅 레벨(예: INFO, DEBUG, WARN)을 동적으로 변경할 수 있게 해준다. 복잡한 시스템에서 특정 노드의 디버그 메시지만 보고 싶을 때 매우 유용하다.
- 사용법:
ros2 run rqt_logger_level rqt_logger_level - 주요 기능: 개별 노드 또는 전체 노드의 로깅 레벨 변경.
3.6. rqt_bag: Bagfile 탐색 (ROS 2에서 역할 변화)
ROS 1에서 rqt_bag은 Bagfile을 시각적으로 탐색하고 메시지를 재생하는 강력한 도구였다. ROS 2에서는 Bagfile 형식이 rosbag2로 크게 변경되었기 때문에, ROS 2의 rqt_bag은 아직 ROS 1만큼의 통합된 기능을 제공하지 않을 수 있다. 하지만 rosbag2에서 기록된 데이터를 시각적으로 분석하는 데 여전히 사용될 수 있으며, 관련 기능은 계속 발전하고 있다.
- 사용법:
ros2 run rqt_bag rqt_bag
4. rqt 플러그인 추가 설치
1
$ apt install ros-humble-rqt #여기까지 입력 후 TAB을 누르면 설치 가능한 목록이 나옴


