Project

General

Profile

Wiki » History » Version 10

Matthieu Herrb, 2018-07-31 14:23
update genom3-bip URL

1 1 Anthony Mallet
h3. Introduction
2
3
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:
4
5
 * The integration of heterogeneous functions with different real-time constraints and algorithm complexities (control of sensors and actuators, data processings, task planification, etc.).
6
7
 * 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).
8
9
 * The management of parallelization, physical distribution and portability of the functions.
10
11
 * Simple procedures to add, modify or (re)use the functions by non-specialists
12
13
GenoM generates the source code of components by using:
14
15
 * 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.
16
17
 * 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.
18
19
The project is released under an open-source, BSD-like license.
20
21 3 Anthony Mallet
h3. Tutorials
22
23
 * The [[Install]] page explains how to install the GenoM software and its dependencies.
24
 * The [[Tutorials]] page gives you practical example to get started with GenoM.
25
26 1 Anthony Mallet
h3. Documentation
27
28 5 Anthony Mallet
Documentation is available online "here":https://git.openrobots.org/projects/genom3/gollum. It is also available as asciidoc and HTML in the source distribution.
29 1 Anthony Mallet
30 4 Aurélie Clodic
You can also browse those "PDF slides":http://homepages.laas.fr/mallet/share/doc/genom3/2010-08-04-bonn.pdf for an introductory talk on GenoM3 and a "paper":http://homepages.laas.fr/mallet/share/doc/genom3/icra2010.pdf published in "ICRA2010":http://icra2010.grasp.upenn.edu/. A "short paper":http://homepages.laas.fr/mallet/share/doc/genom3/car2011.pdf presented at "CAR2011":http://car2011.inrialpes.fr/ is also available.
31 1 Anthony Mallet
32 2 Anthony Mallet
Finally, a "paper on the use of GenoM2 on a planetary rover":http://homepages.laas.fr/mallet/share/doc/genom3/astra2011.pdf presents a concrete integration example. It was published in "ASTRA2011":http://www.congrexprojects.com/11a06/.
33 1 Anthony Mallet
34
h3. Middleware templates
35
36
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.
37
38
Currently, three major templates are available:
39
40
 * The project:genom3-pocolibs template (see also "pocolibs":https://www.openrobots.org/wiki/pocolibs), which is what GenoM 2 used to provide.
41
42
 * The project:genom3-ros template (see also "ros":http://ros.org/wiki/).
43
44 6 Anthony Mallet
 * The project:genom3-orocos template (see also "orocos":http://www.orocos.org/toolchain).
45
46 10 Matthieu Herrb
 * A project:genom3-bip template (see also "BIP":http://www-verimag.imag.fr/Rigorous-Design-of-Component-Based). This one is really in a very early alpha stage, so you probably cannot use it yet without a deep knowledge of BIP.
47 1 Anthony Mallet
48
All templates provide a server implementation (the component itself) and a variety of clients.
49
50
h3. Clients
51
52
GenoM3 components can be controlled by several kind of clients:
53
54
 * A middleware independent C client library, specialized for each component. Both the `pocolibs` and `ros` templates provide an implementation of this client. The middleware is hidden behind the client api, so that components can be controlled in a generic way and do not expose any middleware dependency. The library interface provides functions to read data ports or invoke the component services and wait for completion, either synchronously or via callbacks. This interface is generated for each component.
55
56
 * A generic C client interface is also provided (not specialized for a particular component). All methods are accessed via function pointers through a generic structure. The component services, ports and datatypes are described with JSON dictionaries. This allows code to dynamically load and control any component in a generic way.
57
58
 * The project:genomix HTTP server and associated clients (currently only a TCL client). `genomix` is a generic http server that serves as a proxy between clients and genom components (it uses the generic C client described above). Control is done be the mean of specific HTTP GET requests (not yet documented...) and the tcl-genomix package wraps this into a tcl package for use in TCL scripts.
59
60
   The design allows any other kind of clients to be developped, based on `genomix` (e.g. a raw javascript client for use in a web browser, a LUA or python client ...). Volunteers welcome!
61
62 9 Matthieu Herrb
 * An "OpenPRS":https://www.openrobots.org/wiki/openprs client template can be found at `git://trac.laas.fr/robots/genom3-openprs`. It bridges `OpenPRS` and `genom` components, again in a middleware agnostic way. This template is used when you plan to control your module(s) with "OpenPRS":https://www.openrobots.org/wiki/openprs, using "Transgen3":https://www.openrobots.org/wiki/transgen3 to build the supervisor. Browse the code online "here":https://git.openrobots.org/projects/genom3-openprs/repository.
63 1 Anthony Mallet
64
h3. Source code
65
66
GenoM3 is currently under development and there is no official release yet.
67
68 8 Matthieu Herrb
Preliminary beta releases are available for download "here":https://www.openrobots.org/distfiles/genom/ .
69 1 Anthony Mallet
70 8 Matthieu Herrb
Sources can also be accessed through the "git repository":https://git.openrobots.org/projects/genom3/repository
71 1 Anthony Mallet
72
h3. History
73
74
GenoM development was initiated by "Sara Fleury":http://homepages.laas.fr/sara/ and "Matthieu Herrb":http://homepages.laas.fr/matthieu/ in 1994. The first opensource version, labelled version 2.x, was released in 2004. The reflexion and development of version 3 started in 2009, with the great help of Cédric Pasteur who quickly developed the first prototype in the context of his master training period.
75
76
And as a reward for those who read this entire page, here is "an overview of what you can expect":http://xkcd.com/974/ by using GenoM3 on your robotic system.