HTTPS SSH

Ignition GUI : Graphical interfaces for robotics applications

Maintainer: louise [AT] openrobotics [DOT] org

Bitbucket open issues Bitbucket open pull requests Discourse topics Hex.pm

Build Status
Test coverage codecov
Ubuntu Xenial
Ubuntu Bionic Build Status
Homebrew Build Status
Windows 7 Build Status

Ignition GUI builds on top of Qt to provide widgets which are useful when developing robotics applications, such as a 3D view, plots, dashboard, etc, and can be used together in a convenient unified interface.

Ignition GUI ships with several widgets ready to use and offers a plugin interface which can be used to add custom widgets.

Table of Contents

Features

Install

Usage

Documentation

Testing

Folder Structure

Code of Conduct

Contributing

Versioning

License

Features

  • Qt-based widgets, with support for both Qt5 widgets and QtQuick
  • Plugin-based interface, so it's easy to add new widgets
  • Several plugins ready to be used
  • 3D scene integration using Ignition Rendering

Install

We recommend following the Binary Install instructions to get up and running as quickly and painlessly as possible.

The Source Install instructions should be used if you need the very latest software improvements, you need to modify the code, or you plan to make a contribution.

Binary Install

Ignition GUI's binary packages are still pre-releases and unstable.

On Ubuntu Bionic, it's possible to install Ignition GUI's version 1 pre-releases as follows:

Add OSRF packages:

echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic main" > /etc/apt/sources.list.d/gazebo-stable.list
echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-prerelease bionic main" > /etc/apt/sources.list.d/gazebo-prerelease.list
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys D2486D2DD83DB69272AFE98867170598AF249743
sudo apt update

Install Ignition GUI:

sudo apt install libignition-gui-dev

Source Install

There are currently two versions under active development:

  • Version 0: It makes use of QWidgets, which are common on traditional desktop-oriented interfaces. Requires Ubuntu Xenial or Higher.

  • Version 1: It makes use of QtQuick, which allows developing more modern-looking apps with animations and a mobile/web feel. Requires Ubuntu Bionic or higher.

Prerequisites

Version 0

Install dependencies:

sudo apt update
sudo apt -y install wget lsb-release gnupg
sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-prerelease `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-prerelease.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add -
sudo apt update
sudo apt install -y \
    build-essential \
    cmake \
    qtbase5-dev \
    libtinyxml2-dev \
    libprotoc-dev \
    libprotobuf-dev \
    mercurial \
    libignition-cmake1-dev \
    libignition-common-dev \
    libignition-math4-dev \
    libignition-msgs-dev \
    libignition-rendering-dev \
    libignition-tools-dev \
    libignition-transport4-dev

Clone source code, note you'll need the default branch:

hg clone http://bitbucket.org/ignitionrobotics/ign-gui -b default

Version 1

Install dependencies:

sudo apt update
sudo apt -y install wget lsb-release gnupg
sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-prerelease `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-prerelease.list'
wget http://packages.osrfoundation.org/gazebo.key -O - | apt-key add -
sudo apt update
sudo apt install -y
    g++-8
    libignition-cmake2-dev
    libignition-common3-dev
    libignition-math6-dev
    libignition-msgs3-dev
    libignition-plugin-dev
    libignition-rendering-dev
    libignition-tools-dev
    libignition-transport6-dev
    libtinyxml2-dev
    qtbase5-dev
    qtdeclarative5-dev
    qtquickcontrols2-5-dev
    qml-module-qtquick2
    qml-module-qtquick-controls
    qml-module-qtquick-controls2
    qml-module-qtquick-dialogs
    qml-module-qtquick-layouts
    qml-module-qt-labs-folderlistmodel
    qml-module-qt-labs-settings
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 --slave /usr/bin/gcov gcov /usr/bin/gcov-8

Clone source code, note you'll need the gz11 branch:

hg clone http://bitbucket.org/ignitionrobotics/ign-gui -b gz11

Building from source

Build and install as follows:

cd ign-gui
mkdir build
cd build
cmake ..
make -j4
sudo make install

Usage

Take a look at the tutorials for usage instructions and API documentation.

Testing

After building, to run all tests:

cd build
make test

See this tutorial for further instructions on how to disable testing, run test coverage, etc.

Folder Structure

  • include/ignition/gui: Contains all the files which will be installed, such as C++ headers, .qrc, .qss and qml files. Plugin-specific resources go under /plugins; everything in the top-level is meant to be of common use across plugins.

  • src: Contains all the C++ source code and headers which are not installed. Plugin-specific code goes under /plugins.

  • test: All integration, performance and regression tests go here, under their specific folders.

  • examples/standalone: Example code for standalone applications using Ignition GUI as a library. Each example has instructions in a README file.

  • examples/config: Example configuration files which can be loaded using ign gui -c <path to file>

  • examples/plugin: Example plugins which can be compiled and loaded as explained in this tutorial.

  • tutorials: Markdown files for the tutorials.

  • conf: Files needed by ign-tools.

  • doc: Files used by Doxygen when generating documentation.

Contributing

Please see CONTRIBUTING.md.

Code of Conduct

Please see CODE_OF_CONDUCT.md.

Versioning

This library uses Semantic Versioning. Additionally, this library is part of the Ignition Robotics project which periodically releases a versioned set of compatible and complimentary libraries. See the Ignition Robotics website for version and release information.

License

This library is licensed under Apache 2.0. See also the LICENSE file.