Home

Awesome

CORBA server/client for the Graphical Interface of Pinocchio and HPP

Building Status Pipeline status Coverage report Code style: black pre-commit.ci status

Summary

gepetto-viewer-corba

Setup from robotpkg apt binary package repository

  1. Add robotpkg to your apt configuration: http://robotpkg.openrobots.org/debian.html
  2. sudo apt update && sudo apt install robotpkg-py27-qt4-gepetto-viewer-corba (or py35 on 16.04 / py36 on 18.04)

Setup from sources

To compile this package, it is recommended to create a separate build directory:

mkdir _build
cd _build
cmake [OPTIONS] ..
make install

Please note that CMake produces a CMakeCache.txt file which should be deleted to reconfigure a package from scratch.

Makefile

A Makefile that installs the dependencies is provided for convinience. Please follow those steps:

Note that the environment variables PATH, LD_LIBRARY_PATH and PKG_CONFIG_PATH should include the path to the installation directory.

Dependencies

The present software depends on several packages which have to be available on your machine.

gepetto-gui

Usage

Basic usage

Launch the binary file gepetto-gui and do as in this video.

Adding predefined robots and environments

For convenience, robots and environments can be predefined.

Automatic
# Use option --predefined-robots to change the robots setting file.
# OPTIONS="--predefined-robots other-robots"
OPTIONS=""

# PR2 from hpp_tutorial
gepetto-gui -g ${OPTIONS} --add-robot "PR2-hpp_tutorial,pr2,planar,pr2,hpp_tutorial,,_manipulation"
# HRP2
gepetto-gui -g ${OPTIONS} --add-robot "HRP2,hrp2,freeflyer,hrp2_14,hrp2_14_description,,"
# Romeo
gepetto-gui -g ${OPTIONS} --add-robot "Romeo,romeo,freeflyer,romeo,romeo_description,,H37V1"
# Use option --predefined-environments to change the environments setting file.
# OPTIONS="--predefined-environments other-environments"
OPTIONS=""

# Kitchen
gepetto-gui -g ${OPTIONS} --add-env "Kitchen,kitchen,iai_maps,kitchen_area"
Manually

The configuration files are - from the installation prefix - in etc/gepetto-gui. Open ${CMAKE_INSTALL_PREFIX}/etc/gepetto-gui/robots.conf and write:

[PR2 - hpp_tutorial]
RobotName=pr2
ModelName=pr2
RootJointType=planar
Package=hpp_tutorial
URDFSuffix=
SRDFSuffix=_manipulation

[HRP2]
RobotName=hrp2_14
ModelName=hrp2_14
RootJointType=freeflyer
Package=hrp2_14_description
URDFSuffix=
SRDFSuffix=

Open ${CMAKE_INSTALL_PREFIX}/etc/gepetto-gui/environments.conf and write:

[Kitchen]
RobotName=Kitchen
Package=iai_maps
URDFFilename=kitchen_area

Note: Do not forget to replace ${CMAKE_INSTALL_PREFIX} by a relevant path.

Loading plugins

Automatic
# Use option --config-file to change the settings file.
# OPTIONS="--config-file other-settings"
OPTIONS=""

# Using the core framework: hppcorbaserver
gepetto-gui -g ${OPTIONS} \
  --load-plugin hppwidgetsplugin.so \
  --load-plugin hppcorbaserverplugin.so \
  --load-plugin remoteimuplugin.so

# Using the manipulation framework: hpp-manipulation-server
gepetto-gui -g ${OPTIONS} \
  --load-plugin hppmanipulationwidgetsplugin.so \
  --load-plugin hppmanipulationplugin.so \
  --load-plugin hppmonitoringplugin.so \
  --load-plugin remoteimuplugin.so
Manually

Open ${CMAKE_INSTALL_PREFIX}/etc/gepetto-gui/settings.conf and write:

[plugins]
hppcorbaserverplugin.so=true
remoteimuplugin.so=true
hppwidgetsplugin.so=true

The plugins are looked for in the directory ${CMAKE_INSTALL_PREFIX}/lib/gepetto-gui-plugins

For HPP developpers

As HPP, the GUI can be controlled using a python interface. When the GUI starts, it launches a server for both HPP and the Gepetto Viewer exactly as if you were manually launching the two commands hppcorbaserver and gepetto-viewer-server. This means that you can run the same python scripts and it will work !

When you do so, pay attention to the following points:

Installation procedure

There are a few dependencies to be installed before installing gepetto-gui.

Dependencies

There are a few required dependencies and several optional ones.

Core interface

There are only one dependency:

Optionally, for a better rendering:

Plugins

It is possible to extend the abilities of gepetto-gui with plugins.

See hpp-gui and hpp-plot for examples.

Installation of gepetto-gui

To install gepetto-gui you just have to follow the installation step at the top of this page.

PythonQt

gepetto-gui offers the possibility to develop plugins in python. To do so, you must install PythonQt by following the instructions here: https://github.com/jmirabel/PythonQt#readme

Python 3

This section describes the procedure to get bindings for Python 3. The support for Python 3 is from OmniORB 4.2.2. In Ubuntu 16.04, the version is 4.2.1, and in Ubuntu 18.04 it is 4.2.2, but Ubuntu main repos do not provide python 3 support. Thus, to make it work you must manually compile OmniORB 4.2.2. Download latest versions of OmniORB and OmniORBpy from sourceforge. Then compile OmniORB making sure it finds python3:

export PYTHON=/usr/bin/python3
cd omniORB-4.2.2/
mkdir build
cd build
../configure --prefix=${CMAKE_INSTALL_PREFIX}
make
make install

Compile OmniORBpy making sure it finds python3:

cd omniORBpy-4.2.2/
mkdir build
cd build
../configure --prefix=${CMAKE_INSTALL_PREFIX}
make
make install

Finally you can compile and install gepetto-viewer-corba making sure it finds OmniORB 4.2.2.

Troubleshooting

## Display of large meshes is very slow

A solution to help reducing the rendering time is to use Level Of Details (LOD). In short, you can use the following command to generate a LOD for mesh named mesh.ext.

gvtools --input mesh.ext --simplify 1,0,1 --simplify 0.5,1,3 --simplify 0.2,3,100 --output mesh.ext.osgb

This will create a LOD with three levels:

gvtools is part of gepetto-viewer package. See gvtools --help for more details.

CORBA::TRANSIENT when launching a server

It very often happens that the OmniNames server failed to start properly at boot.

To check if the server is running, run:

ps -C omniNames -o pid,args

If the process is not running, delete omniNames related log and backup files in /var/lib/omniorb. They may have different names on your computer, but most likely, something like:

sudo rm /var/lib/omniORB/omninames-`hostname`.log
sudo rm /var/lib/omniORB/omninames-`hostname`.bak

then restart the server:

sudo service omniorb4-nameserver restart

Collada files are not displayed

The nodes are created and exists in the body tree widget but nothing appears in the scene viewer. This is due to a conflict between OSG and Qt. A work around is to convert the DAE to osg using the following command:

# <file> is the name of the file including the DAE extension.
# The output filename will end with .dae.osg.
osgconv <file> <file>.osg

If you have many files, you may run that at the root of the meshes subdirectories:

find ${root_of_meshes_directory} -iname "*.dae" -type f -exec osgconv {} {}.osg \;