Welcome, Guest! Log In | Create Account

Main Page

From robocomp

Jump to: navigation, search

Contents

What is RoboComp?

RoboComp is an open-source robotic framework. It is made up of different robotic software components and the necessary tools to use them. The running components form a graph of processes that can be distributed over several cores and CPU's using software component technology. Communications are handled by the Ice framework, following the approach taken by the Orca2 robotics system. Our main goals in designing the system are efficiency, simplicity and reusability. Robocomp also uses in some of its components other tools like CMake, Qt4, IPP, OpenSceneGraph and OpenGL. Programming languages used in the project are mainly C++ and Python but the Ice framework makes possible to easily use components written in many other languages. Robocomp, as ROS, can also be called a robot operating system as long as it provides an abstraction layer to robot hardware.

Compared to other similar projects (such as Orca or ROS), the main advantage of Robocomp is its efficiency, and its ease of use.

Components

A component is a program providing an interface which other components (programs) can use. The following graph shows all RoboComp components (late 2008) an its potential run-time connections:

A detailed list of the RoboComp components can be found here.

Tools

Of course, in order to create, manage and monitor components it is necessary a set of tools. Robocomp provides those tools:

  1. Component creation: componentGenerator
  2. Component management: managerComp
  3. Component monitoring: rcompmonitor
  4. Component output recording and simulation: replayComp

Classes

Different components use to need to perform similar tasks. In order to avoid code duplication, Robocomp provides a set of classes that any component or standalone program can use. The following is a list of some of the classes that Robocomp provides:

  1. Image drawing: qWorld, qVisor, QAcho, SDLMonitor
  2. 3D rendering: osgViewer
  3. Geometric transformations: innerModel
  4. Serial port: Q4SerialPort
  5. Joystick: QJoystick, QWiimote
  6. Matrix support: QVec, QMat, QMatRot, QCamera, QIntrinsics, QExtrinsics, QHomography, QEssential, QFundamental, SerializableMatrix


Downloading, compiling and running RoboComp components

System requirements

Robocomp software runs on GNU/Linux machines (it has been tested in Ubuntu and Debian). Here is a list of additional software that might be needed to compile the components. Note that not all the components need all listed software.

  • CMake (cmake)
  • AMD FrameWave (libfwbase1-dev).
  • Intel Performance Primitives for Linux (IPP) (here)
  • freeglut3-dev
  • libSDL1.2-dev
  • zeroc-ice, or libzeroc-ice-dev and slice2cpp for C++ only
  • libdc1394-13-dev
  • qt4-dev-tools and libqt4-dev
  • python-qt4-dev and pyqt4-dev-tools

Download

Since the development team does not produce release versions yet, the source code can only be downloaded from the subversion repository athttps://robocomp.svn.sourceforge.net/svnroot/robocomp. In order to fetch the code, you may want to execute the following command (subversion must be installed):

svn co https://robocomp.svn.sourceforge.net/svnroot/robocomp robocomp

This will create a directory named robocomp with the source code within the current directory.

More information about using the software repository here.

Compile

Some of the components are written in Python, so the compilation stage is not necessary for those components. In order to compile any compilable component there are just two steps to take:

  1. Set the CWD as the component's build directory: cd /home/user/robocomp/Components/baseComp/build/
  2. Set the IPPROOT environment variable to IPP path (using the script provided in the IPP tree): ". /opt/intel/ipp/emt64/tools/env/ippvarsem64t.sh" (watch the initial dot). Only for components using IPP.
  3. Generate Makefile using CMake: 'cmake ..'
  4. Compile the component: 'make'

During the compilation stage, an executable file created in the bin/ directory, within the component's build directory tree. The FAQ can be useful as a problem solving guide on compiling RoboComp components.

Run

The only restriction imposed to RoboComp components is that they should use Ice to communicate. However these are the common criteria to run components:

(language) (executable file path) (command)
C++ bin/fooComp fooComp --Ice.Config=/home/kung/etc/foo.config (*)
Python src/barComp.py startBar.sh
  • The Ice.Config parameter is not mandatory, components usually try to use ./etc/config as its configuration file.

RoboComp components read their configuration from file. The default path is ./config, otherwise the file path is read as a parameter. You can set the current directory to etc/ and run the component from that directory or, use the --Ice.Config= option to set the configuration file path. The FAQ can be useful as a problem solving guide on running RoboComp components.


Tutorials

Putting RoboComp into action
Creating and integrating a component


Support

If you need support, ask in the 'Help' forum.


Examples of use

You can find some examples of use of RoboComp in the examples page.


To Do List

There is a TODO list with some of the forthcoming features.