You're reading the documentation for a version of ROS 2 that has reached its EOL (end-of-life), and is no longer officially supported. If you want up-to-date information, please have a look at Iron.

Overview and usage of RQt

Overview

RQt is a graphical user interface framework that implements various tools and interfaces in the form of plugins. One can run all the existing GUI tools as dockable windows within RQt! The tools can still run in a traditional standalone method, but RQt makes it easier to manage all the various windows in a single screen layout.

You can run any RQt tools/plugins easily by:

rqt

This GUI allows you to choose any available plugins on your system. You can also run plugins in standalone windows. For example, RQt Python Console:

ros2 run rqt_py_console rqt_py_console

Users can create their own plugins for RQt with either Python or C++. Over 20 plugins were created in ROS 1 and these plugins are currently being ported to ROS 2 (as of Dec 2018, more info).

System setup

Installing From Debian

sudo apt install ros-eloquent-rqt*

Building From Source

See Building RQt from Source.

RQt Components Structure

RQt consists of three metapackages:

  • rqt - core infrastucture modules.

  • rqt_common_plugins - Backend tools for building tools.

    TODO: as of Dec 2018 this metapackage isn’t available in ROS 2 since not all plugins it contains have been ported yet.

  • rqt_robot_plugins - Tools for interacting with robots during runtime.

    TODO: as of Dec 2018 this metapackage isn’t available in ROS 2 since not all plugins it contains have been ported yet.

Advantage of RQt framework

Compared to building your own GUIs from scratch:

  • Standardized common procedures for GUI (start-shutdown hook, restore previous states).

  • Multiple widgets can be docked in a single window.

  • Easily turn your existing Qt widgets into RQt plugins.

  • Expect support at ROS Answers (ROS community website for the questions).

From system architecture’s perspective:

  • Support multi-platform (basically wherever QT and ROS run) and multi-language (Python, C++).

  • Manageable lifecycle: RQt plugins using common API makes maintainance & reuse easier.

Further Reading