이번 포스팅에는 ROS에서 사용할 수 있는 유용한 도구인 rqt에 대해서 알아보자. 공부를 위해서 참고한 링크는 다음과 같다.
https://wiki.ros.org/ROS/Tutorials/UsingRqtconsoleRoslaunch
https://cafe.naver.com/openrt/2963
rqt는 다음과 같은 툴(tool)이다.
💡 rqt
ROS의 종합 GUI 툴로써 이전에 존재했던 모든 GUI 요소들을 플러그인(plugin) 형태로 통폐합 시킨 것이다. 굉장히 많은 플러그인들이 존재하며, 유저들이 개발한 플러그인을 추가하여 커스터마이즈 할 수 있기 때문에 강력하게 활용이 가능하다.
설치 방법은 다음과 같다.sudo apt install ros-{distro}-rqt ros-{distro}-rqt-common-plugins
만약, 가장 디폴트 rqt GUI 창을 보고 싶다면, 다음 명령어를 사용하면 된다.
$ rqt
당연히 roscore가 실행 중이여야 한다.
그러면 다음과 같은 GUI 창을 확인할 수 있다.

좌상단을 보게 되면 plugins라는 메뉴가 있는데, 여기에서 원하는 플러그인을 선택하면 된다. 메뉴에 대해서 구체적으로 설명하면 다음과 같다.
- File : 종료하고 싶을 때 선택하면 된다.
- Plugins : rqt에 통합되어 있는 플러그인들을 다루는 메뉴이며 약 27가지가 있다. 이 중에서 원하는 플러그인을 선택해서 사용하면 된다.
- Running : 현재 동작 중인 플러그인이 표시되며, 원하지 않을 경우 동작을 중단시킬 수 있다.
- Perspectives : 현재 구동 중인 플러그인을 세트로 설정해서 저장, 다음에 동일한 플러그인들을 사용하기 위한 메뉴이다.
플러그인들의 종류는 총 27가지가 있으며, 관련 내용들은 다음과 같다.
1. 액션 (Action)
- Action Type Browser | Action 타입의 데이터 구조를 확인하는 플러그인
2. 구성 (Configuration)
- Dynamic Reconfigure | 노드들에서 제공하는 설정값 변경을 위한 GUI 설정값 변경 플러그인
- Launch | roslaunch 의 GUI 플러그인, roslaunch의 이름 및 구성이 생각안날때 매우 유용하다.
3. 내성 (Introspection)
- Node Graph | 구동중인 모든 노드들의 관계도 및 메시지의 흐름을 확인할 수 있는 그래프 뷰 형식의 플러그인
- Package Graph | 노드의 의존 관계를 표시하는 그래프 뷰 형식의 플러그인
- Process Monitor | 현재 실행중인 노드들의 CPU사용률, 메모리사용륭, 스레드수 등을 확인 가능하다.
4. 로깅 (Logging)
- Bag | ROS 데이터 로깅 관련 플러그인
- Console | 노드들에서 발생되는 경고(Warning), 에러(Error) 등의 메시지들을 한 화면에서 확인 가능한 플러그인
- Logger Level | ROS의 Debug, Info, Warn, Error, Fatal 로거 정보를 선택하여 표시할 수 있는 GUI 툴
5. 다양한 툴 (Miscellaneous Tools)
- python Console | 파이썬 콘솔 화면 플러그인
- Shell | 쉘(shell)을 구동하는 플러그인
- Web | 웹 브라우저를 구동하는 플러그인
6. 로봇 (Robot)
사용하는 로봇에 따라 계기판(dashboard) 등의 플러그인을 이곳에 추가하면 된다.
7. 로봇툴 (Robot Tools)
- Controller Manager | 컨트롤러 제어에 필요한 플로그인
- Diagnostic Viewer | 로봇 디바이스 및 에러 확인 플러그인
- Moveit! Monitor | 로봇 팔 계획에 사용되는 Moveit! 데이터를 확인하는 플러그인
- Robot Steering | 로봇 조정 GUI 툴, 원격 조정에서 이 GUI 툴을 이용하여 로봇 조종하기에 유용함.
- Runtime Monitor | 실시간으로 노드들에서 발생되는 에러 및 경고를 확인가능한 플러그인
8. 서비스 (Services)
- Service Caller | 구동중인 서비스 서버에 접속하여 서비스를 요청하는 GUI 플러그인, 서비스 테스트에 유용하다.
- Service Type Browser | 서비스 타입의 데이터 구조를 확인하는 플러그인
9. 토픽 (Topics)
- Easy Message Publisher | 토픽을 GUI 환경에서 발행가능 한 플러그인
- Topic Publisher | 토픽을 생성하여 발행가능한 GUI 플러그인, 토픽 테스트에 매우 유용하다.
- Topic Type Browser | 토픽 타입의 데이터 구조 확인 플러그인, 토픽 타입 확인에 매우 유용하다.
- Topic Monitor | 현재 사용중인 토픽을 나열, 그 중에서 사용자가 선택한 토픽의 정보를 확인하는 플러그인
10. 시각화 (Visualization)
- Image View | 카메라의 영상 데이터를 확인 가능한 플러그인, 간단한 카메라 데이터 테스트에 유용하다.
- Navigation Viewer | 로봇 네비게이션의 위치 및 목표지점 확인하는 플러그인
- Plot | 2차원 데이터 플롯 GUI 플러그인, 2차원 데이터의 도식화에 매우 유용하다.
- Pose View | 현재 tf의 위치 및 모델의 위치 표시 플러그인
- RViz | 3차원 시각화 툴인 RViz 플러그인
- TF Tree | tf 관계를 트리로 나타내는 그래프 뷰 형식의 플러그인
출처: https://cafe.naver.com/openrt/2963
이 중에서 가장 대표적으로 사용되는 기능들을 꼽으면 다음 3가지이다.
💡 rqt에서 가장 많이 사용되는 3가지
1. rqt_plot
2차원 데이터 플롯을 그릴 수 있는 툴이다.
2. rqt_bag
메시지 기록을 시각화 하는 GUI 툴로, rosbag 파일을 불러와서 시각화 하고, GUI 기반으로 편집할 수 있는 편리한 기능을 지원한다.
3. rqt_graph
현재 구동 중인 노드 및 ROS 네트워크 상에 전송되고 있는 메시지들 사이의 상관관계를 그래프로 나타내주는 툴로, 아마 가장 많이 사용된다고 할 수 있다.