Integration of the ROS package system and ROS-specific plugins for a Qt-based GUI.
- Author: Maintained by Dirk Thomas
- License: BSD
- Source: git https://github.com/ros-visualization/rqt.git
rqt is a Qt-based framework for GUI development for ROS. It consists of three parts/metapackages
- rqt (you're here)
- rqt_common_plugins - ROS backend tools suite that can be used on/off of robot runtime.
- rqt_robot_plugins - Tools for interacting with robots during their runtime.
New in Groovy (also builds against fuerte)
rqt is a software framework of ROS that implements the various GUI tools in the form of plugins. One can run all the existing GUI tools as dockable windows within rqt -- even rviz! The tools can still run in a traditional standalone method, but rqt makes it easier to manage all the various windows on the screen at one moment.
Users can create their own plugins for rqt with either Python or C++. Over 20 plugins (as of Feb 2013) have already been created and more are slated for development.
rqt components structure
rqt consists of three (+1) metapackages:
rqt - core modules. rqt plugin developers barely needs to pay attention.
rqt_common_plugins - ROS backend tools suite that can be used on/off robot runtime.
rqt_robot_plugins - Tools for interacting robots during their runtime.
rqt_pr2_dashboard - Robot specific (PR2). Temporarily excluded from other metapackages due to building issue
Supported Qt version: (To be specified. As of March 2013, all rqt pkgs are tested with Qt 4.8)
- (To be clarified) Tested OS and its version, and Window System:
Ubuntu: See REP-3 for the supported OS.
- Mac OSX: Being tested.
Advantage of rqt framework
Compared to building your own GUIs from scratch...
- Standardized common procedures for GUI (start-shutdown hook, restore previous states).
- Dockable multiple widgets in a single window (no need to open multiple windows)
Easily turn your existing Qt widgets into rqt plugin.
Expect good support at answers.ros.org (ROS community website for the questions) since rqt developers are active!
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
Brief overview of rqt (from an intern completion blog post)
- Create your rqt plugin package
Entry point for creating your rqt plugin either in python or C++.
- Writing a Python Plugin
Shows how to write a plugin for rqt in Python.
- Writing a C++ Plugin
Shows how to write a plugin for rqt in C++.
- Using .ui file in rqt plugin
In this tutorial python is used for now. C++ tutorial is pending.
- Create rqt plugin using an existing Qt based tool
- To show error or exception message to users
Shows error/warning msgs or progress bar on GUI by using a component in rqt_py_common pkg
Assistance & Contribution
Questioin-Answer threads (this link only navigates to rqt tag. There could be many rqt_** tags).
Enhancement, issue report
For new tool idea, open a ticket at rqt's general bugtracker and describe the usecase.
Opening up a conversation in ros-users mailinglist might be a good idea too, but should better be saved for the discussion about the tools with larger size (it's up to you what "larger" means).
- For enhancement request / issue report, open a ticket at the corresponding bugtrackers.
Official decision process