- Assistance & Contribution
- Design & development
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! 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.
You can run any rqt tools/plugins easily by:
On Fuerte you have to use rosrun to run rqt:
$ rosrun rqt_gui rqt_gui
that shows a GUI where you can choose any available plugins on your system.
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:
As of March 2013 and until ROS Jade all rqt pkgs are tested with Qt 4.8.
In ROS Kinetic the minimum Qt version was updated to Qt 5.3
- (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)
For those who want to develop their own rqt plugins.
- Create your rqt plugin package
Entry point for creating your rqt plugin either in python or C++.
- Writing a C++ Plugin
Shows how to write a plugin for rqt in C++.
- Writing a Python Plugin
Shows how to write a plugin for rqt in Python.
- Create rqt plugin using an existing Qt based tool
- Using .ui file in rqt plugin
In this tutorial python is used for now. C++ tutorial is pending.
- 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
Create a new tutorial:
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.
Design & development
Official decision process
Links to discussions
Github policy for rqt plugins
Development happens on the branch groovy-devel. We use that as master branch.
- Releases are made from that branch into Groovy and Hydro at the same time with the same version.
- As soon as new Hydro-only features are upcoming a new branch hydro-devel will be created which than has to level the minor version for future releases