GenoM3

Introduction

This page is about GenoM version 3, which is the successor of GenoM version 2. If you are looking for GenoM 2, please visit this page.

The Generator of Modules GenoM is a tool to design real-time software architectures. It encapsulates software functions inside independent components. GenoM is more specifically dedicated to complex on-board systems, such as autonomous mobile robots or satellites, that require:

  • The integration of heterogeneous functions with different real-time constraints and algorithm complexities (control of sensors and actuators, data processings, task planification, etc.).
  • An homogeneous integration of these functions in a control architecture which requires coherent and predictable behaviors (starting, ending, error handling), and standard interfaces (configuration, control flow, data flow).
  • The management of parallelization, physical distribution and portability of the functions.
  • Simple procedures to add, modify or (re)use the functions by non-specialists

GenoM generates the source code of components by using:

  • A generic template, common for all components. This guarantees that all components share the same consistent behaviour. The template itself is not part of GenoM, so that different template kind can be developped easily.
  • A formal description of the components interface. This description is based on a simple language using OMG IDL for data types definitions and a custom syntax for the description of a more detailed component model.

The project is released under an open-source, BSD-like license.

Documentation

A preliminary documentation is available online. The same document is available as PDF, HTML or text in the source distribution.

You can also browse those PDF slides of an introductory talk on GenoM3 and a paper published in ICRA2010. A short paper presented at CAR2011 is also available.

Finally, a paper on the use of GenoM2 on a planetary rover presents a concrete integration example. It was published in ASTRA2011.

Source code

GenoM3 is currently under development and there is no official release yet.
You can browse the git repository and check it out (read-only) via anonymous git with

% git clone git://git.openrobots.org/git/robots/genom3

Preliminary beta releases are available for download here:

Middleware templates

GenoM3 needs source code templates to be able to generate code for a given middleware. Those templates represent the actual implementation of the GenoM component model. They are provided as separate source code repositories.

Currently, two templates are under active development :

  • The pocolibs template (see pocolibs), which is what GenoM 2 used to provide. The development is in its alpha stage and the code is not really robust (yet). You can still browse the repository or check it out with git clone git://git.openrobots.org/git/robots/genom3-pocolibs.
  • The ros template (see ros). The development is also in its alpha stage and the code has not been seriously tested yet. You can still browse the repository or check it out with git clone git://git.openrobots.org/git/robots/genom3-ros.

Three templates were originally developed in the first GenoM prototype. Due to huge refactoring of the code, they are no longer usable, but they can still be browsed for reference purpose in the history of the GenoM repository (see for instance commit # 5bbe3ba, templates directory).

History

GenoM development was initiated by Sara Fleury and Matthieu Herrb in 1994. The first opensource version, labelled version 2.x, was released in 2004. I started the reflexion and development of version 3 in 2009, with the great help of Cédric Pasteur who quickly developed the first prototype in the context of his master training period.

This page summarizes the GenoM3 development process.