Coder Social home page Coder Social logo

ign-gui's Introduction

Ignition GUI : Graphical interfaces for robotics applications

Maintainer: louise [AT] openrobotics [DOT] org

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

Build Status
Test coverage codecov
Ubuntu Bionic Build Status
Homebrew Build Status
Windows 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, if you need to modify the code, or if you plan to make a contribution.

Binary Install

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

Add OSRF packages:

echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable bionic main" > /etc/apt/sources.list.d/gazebo-stable.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-gui4-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

Ubuntu Bionic 18.04 or above

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-add-repository -s "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -c -s) main"
sudo apt-get build-dep -y ignition-gui4
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:

# This checks out the `default` branch. You can append `-b ign-gui#` (replace # with a number) to checkout a specific version
git clone http://github.com/ignitionrobotics/ign-gui

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.

Known issue of command line tools

In the event that the installation is a mix of Debian and from source, command line tools from ign-tools may not work correctly.

A workaround for a single package is to define the environment variable IGN_CONFIG_PATH to point to the location of the Ignition library installation, where the YAML file for the package is found, such as

export IGN_CONFIG_PATH=/usr/local/share/ignition

However, that environment variable only takes a single path, which means if the installations from source are in different locations, only one can be specified.

Another workaround for working with multiple Ignition libraries on the command line is using symbolic links to each library's YAML file.

mkdir ~/.ignition/tools/configs -p
cd ~/.ignition/tools/configs/
ln -s /usr/local/share/ignition/fuel4.yaml .
ln -s /usr/local/share/ignition/transport7.yaml .
ln -s /usr/local/share/ignition/transportlog7.yaml .
...
export IGN_CONFIG_PATH=$HOME/.ignition/tools/configs

This issue is tracked here.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.