https://cafe.naver.com/openrt/24231
RQt는, 공통 API를 사용하여 개발 편의성을 높이고자 기존의 rxbag, rxplot, rxgraph 과 같은 GUI 프로그램들을 ROS의 종합 GUI 툴로 통합해 사용 가능하게 한 것이다.
즉 일종의 Framework이다.
RQt는 ROS + Qt의 합성어로, RQt가 Qt를 기반으로 하고 있기에 Qt의 특징인 크로스 플랫폼과 다양한 프로그래밍 언어 지원이라는 특징을 반영한다.
ROS 2 Foxy에서 사용 가능한 RQt 플러그인 종류는 아래과 같다.
Topics
-Message Publisher
-Message Type Browser
-Topic Monitor
Services
-Service Caller
-Service Type Browser
Actions
-Action Type Browser
Introspection
-Node Graph
-Process Monitor
Configuration
-Dynamic Reconfigure
Logging
-Console
Miscellaneous Tools
-Python Console
-Shell
Visualization
-Image View
-Plot
Robot Tools
-Dianostics Viewer
-Robot Steering
RQt 설치
$ sudo apt install ros-foxy-rqt*
RQt 실행
(1)
$ rqt
명령어 실행 후,
위와 같이 나오는 화면에서 Plugins를 눌러 원하는 플러그인을 실행한다.
(2)
$ ros2 run rqt_msg rqt_msg
ros2 run
명령어를 이용해 각 rqt 관련 패키지들의 노드들을 하나씩 실행하는 방법이다.
(3) 단축 명령어를 이용하는 방법
rqt_graph 등이 이에 해당한다.
액션(Actions)
-Action Type Browser: Action 타입의 데이터 구조를 확인
구성(Configuration)
-Dynamic Reconfigure: 노드들에서 제공하는 파라미터 값 확인 및 변경
-Launch: roslaunch 의 GUI 버전
내성(Introspection)
-Node Graph: 실행 중인 노드들의 관계 및 토픽을 확인 가능한 그래프 뷰
-Package Graph: 노드의 의존 관계를 표시하는 그래프 뷰
-Process Monitor: 실행 중인 노드들의 CPU 사용률, 메모리 사용율, 스레드 수 등을 확인
로깅(Logging)
-Bag: ROS 데이터 로깅
-Console: 노드들에서 발생되는 경고(Warning), 에러(Error) 등의 메시지를 확인
-Logger Level: ROS의 Debug, Info, Warn, Error, Fatal 로거 정보를 선택하여 표시
다양한 툴(Miscellaneous Tools)
-Python Console: 파이썬 콘솔 화면
-Shell: 쉘(shell)을 구동
-Web: 웹 브라우저를 구동
로봇(Robot)
-사용하는 로봇에 따라 계기판(dashboard) 등의 플러그인을 이곳에 추가
로봇툴(Robot Tools)
-Controller Manager: 컨트롤러 관리에 필요한 플러그인
-Diagnostic Viewer: 로봇 디바이스의 경고 및 에러 확인
-Moveit! Monitor: 로봇 매니퓰레이터 툴인 Moveit! 데이터 확인
-Robot Steering: 로봇에게 병진 속도와 회전 속도를 토픽으로 발행하는 GUI 툴
-Runtime Monitor: 실시간으로 노드들에서 발생되는 에러 및 경고를 확인
서비스(Services)
-Service Caller: 실행 중인 서비스 서버에 접속하여 서비스를 요청
-Service Type Browser: 서비스 타입의 데이터 구조를 확인
토픽 (Topics)
-Message Publisher: 메시지 발행
-Message Type Browser: 메시지 타입의 데이터 구조 확인
-Topic Monitor: 토픽 목록 확인 및 사용자가 선택한 토픽의 정보를 확인
시각화(Visualization)
-Image View: 카메라의 영상 데이터를 확인
-Navigation Viewer: 로봇 네비게이션의 위치 및 목표지점 확인
-Plot: 2차원 데이터 플롯 GUI 플러그인, 2차원 데이터의 도식화
-Pose View: 현재 TF의 위치 및 모델의 위치 표시
-RViz: 3차원 시각화 툴인 RViz 플러그인
-TF Tree: tf 관계를 트리로 나타내는 그래프 뷰
(1)rqt실행 후 [Plugin] -> [Introspection] -> Node Graphrqt_graph
ros2 topic 명령어의 GUI 버전이다.
(1)rqt실행 후 [Plugin] -> [Topics] -> [Topic Monitor]
$ ros2 run turtlesim turtlesim_node
$ ros2 run turtlesim turtle_teleop_key
를 먼저 실행한 후, rqt를 실행하자.
다음과 같이 설정해서 병진 속도로 x방향으로 5만큼, 회전 속도 3만큼 움직임을 지속적으로 발행할 수 있다.
(1)rqt실행 후 [Plugin] -> [Topics] -> [Message Type Browser]
(1)rqt실행 후 [Plugin] -> [Services] -> [Service Caller]
Service에서 원하는 서비스를 선택한 후, 전화 모양의 아이콘은 Call을 누르면 된다.
nfigure
(1)rqt실행 후 [Plugin] -> [Configuration] -> [Dynamic Reconfigure]
왼쪽 목록에서 노드를 선택하면 오른쪽에 그 노드와 관련된 파라미터를 볼 수 있다.
아래는 /turtlesim노드에서 rgv파라미터 조절을 통해 배경색을 변경한 것이다.
(1)rqt실행 후 [Plugin] -> [Visualization] -> [Plot]
시간축을 x축, /turtle1/cmd_vel
토픽의 linear x 값과 angular z 값을 y축으로 그래프를 그린 것이다.
Image View는 카메라의 영상 데이터를 확인할 수 있는 RQt 플러그인이다.
카메라의 영상 데이터를 확인하기 위해서는, 이미지 데이터를 sensor_msgs/msg/Image
형태의 토픽으로 발행하고 있어야 한다.
$ ros2 run image_tools cam2image
그 후 (1)rqt실행 후 [Plugin] -> [Visualization] -> [Image View],
그리고 노드로 /image를 선택해 준다.
위와 같이 노트북의 카메라에 비치는 현재 내 모습을 확인할 수 있다.