GUI

Summary

This document describes the Fezzik GUI built with the rqt framework, a Qt-based framework for GUI development with ROS. rqt (pronounced “r cute”) is organized in plugins which are GUI windows with a particular purpose. rqt has implemented several common GUI tools already (like logging, shell and consoles, rviz integration, …) and even allows building custom plugins in python and C++.

Note

Working with rqt is way easier than building all integrations of common functionalities from scratch or using other ROS-related frameworks like the rviz library. After a long research on this matter, we highly recommend using rqt over all its competitors.

Hardware requirements

no specifics

Software requirements

no specifics

The package has been verified to work with ROS indigo and kinetic.

Installation

  1. Install rqt core and common plugins: sudo apt-get install ros-indigo-rqt ros-indigo-rqt-common-plugins
  2. Install rqt_robot_plugins: sudo apt-get install ros-indigo-rqt-robot-plugins
  3. Install PR2 dashboard: sudo apt-get install ros-indigo-rqt-pr2-dashboard

In case your rosversion differs (find out with rosversion -d), please change indigo within the shell commands accordingly. Further information on the rqt installation page.

Setup test

If you have installed all packages correctly, try running:

$ roscore  (on one terminal window; if not already started)
$ rqt (on another terminal window)

This should open a plane rqt GUI that you can use to configure your individualized version.

Implementation and Design

Working with rqt

As in the setup test, launch rqt with roscore and rqt in two separate terminal windows.

How to add and a plugin to the GUI and remove it

In the task bar on the top, click Plugins -> <Category of the container> -> <Name of the container> (reflects the list of plugins in the official documentation). You can then easily position it whereever you need it.

Tip

When arranging the plugins, if you want to avoid the plugins going full screen each time you move them into a corner of the screen, click the D symbol in the top right of the plugin (“Toggle Dockable”) so that the D symbol is not circled.

To close a plugin, in the taskbar, click Running -> Close: <Name of Plugin>.

Plugins used for Fezzik GUI

For the implementation of the Fezzik GUI, we use the following plugins of rqt:

  • Console: For logging of ROS log messages.
  • RViz: An integration of all common RViz functionalities.
  • Message Publisher: A debugging tool to send arbitrary ROS messages.
  • Image Viewer: A visualizer for video streams (e.g. from the Kinect)

In the following, we want to briefly explain the usage of each of these plugins.

Console

Console allows to display log messages from the ros logging functionality of rosout, filtered by severity level (debug, info, warn, error, fatal) or custom filtering criteria (with regular expressions). It is also possible to highlight log messages by various criteria, such as content, severity, time range or topic. The following figure the configuration options together with the logging pane.

_images/gui_console_config.png

In operation mode, the configuration options can be faded out by dragging the lower two fields accordingly. Then, the logging pane looks like this:

_images/gui_console_onlyLogging.png

RViz

The RViz plugin (labeled as experimental) enables (from our experience) a full integration of all commonly known RViz functionalities form within the GUI. It can basically be used as a replacement for RViz. A screenshot from within the GUI is given below (you will most likely now even notice a difference to the RViz standalone).

_images/gui_rviz.png

Image View

Image view allows to display video streams. This is very useful, since it is one crucial sensor Fezzik.

To select a topic you want to stream in the GUI, select a topic in the drop-down menu in the top right that is currently published. An exemplary video stream using the Kinect v2 is illustrated below.

_images/gui_imageView.png

Message Publisher

Message Publisher is an extremely handy debugging tool. It allows to send custom messages (i.e. with custom content) to arbitrary topics. For an example sending a string “hello” to rosout and its interaction with Console, see the figure below.

_images/gui_messagePublisher.png

GUI design

The complete Fezzik GUI combines all discussed plugins in one pane. A screenshot of it can be found below.

Tip

GUI perspectives can be defined by clicking in the task bar on Perspectives -> Create perspective. This allows to define multiple interfaces of the GUI with varying plugins used and quickly switch between them.

_images/gui_fullScreenshot_v1.png

Note

It might be handy to make the GUI change dynamically in different states of Fezzik. Can this be realized using perspectives?

Further interesting Plugins we might want to use

  • Navigation Viewer: Allows to “Set Pose” and “Set Goal” @ John look into this!
  • Logger level

TODO

  • Perspective / “save the whole GUI” upon later reuse -> how?
  • put GUI into launch file of brain with perspective configuration

Limitations