Smart Team framework

The intent of this document is to provide hints that will facilitate the integration of the work of each partner of the ELROB project. The document is structured as follows:
  1. Units and frames
  2. Language and libraries
  3. GenoM
  4. Documentation
  5. Vehicle
  6. Datasheets

Units and frames

In order to facilitate the information exchange within the Smart Team and to reduce the integration time, it is very important to use common definitions and units. The units must follow the SI standard : Radians are used for the angles (rad). Use conversion macros only for display e.g. printf("My angle: %f\n", RAD_TO_DEG(my_angle_in_radians)); The reference frames are right handed frames and the angles are signed: a positive angle corresponds to a counter clockwise rotation. Check Vehicle section for more details.

Language and libraries


The preferred language is C because there is no support for C++ in GenoM. However C++, can be used for creating libaries which can be linked with the module after the compilation. Use SWIG for calling a C++ function from C code. The compiler version used for ELROB is 4.x.x


This is a list of libraries that can be usefull for the project


GenoM is the development environment selected for embedded software production at the Autonomous Systems Lab (ASL). Unless otherwise specified, all software intended to be run on-board our robots should be delivered in the form of one or many GenoM software components, also called GenoM modules, so that your contribution can be integrated into the existing embedded software systems. The GenoM environment provides the following: GenoM has been choosen as the main framework for tasks execution. Each partner has to implement his work in one or several GenoM modules. The version that will be used can be downloaded from Open GenoM snapshots


Proceed as follows to install GenoM:
  1. Create a new directory DIR
  2. Download mkdep, pocolibs, libedit, eltclsh and GenoM tarballs in DIR
  3. Download
  4. Modify to match your system configuration
  5. Execute ./
This last command will compile all the libraries.

Getting started

The GenoM documentation can be downloaded here. It is really important to read it thoroughtfully though it is not perfectly up to date. A short introduction to GenoM is available here and more information about open-robots and LAAS tools is available here. The best way to learn GenoM is to actually start with an example. Here are the steps for compiling you demo module:
  1. Download the source here
  2. Untar the archive demo.tar.gz
  3. cd ./demo_d
  4. genom -i demo
  5. mv demoMotionTaskCodels.c demoCntrlTaskCodels.c codels (replace the automatically generated files)
  6. make sure PKG_CONFIG_PATH is set to GENOM_DIR/lib/pkgconfig where GENOM_DIR is the directory where you installed GENOM
  7. ./configure
  8. The module is in ./codels/posix-obj and the test program is in ./server/posix-obj
  9. you can then run and test the module as described in the manual
It is strongly recommended that you use the GenoM mode in emacs (genom-mode.el). It enables the creation of new modules and write a reasonable amount of code for you. Click the middle mouse button to jump direcly to the definition of a function etc.


We use doxygen for the code documentation (see Doxygen). If you are responsible for coding my_module then use \ingroup my_module in the documentation of each function.


The main specification of the vehicle can be found here

The following table lists the most important vehicle variables and constants:

Main vehicle characteristics
Orover center
Oxyzrover's main frame (x pointing forward, y left and z up)
qsteering wheel angle.. (more to come)



We use doxygen for the code documentation (see Doxygen). If you are responsible for coding my_module then use \ingroup my_module in the documentation of each function.


Here is the list of available datasheets:

We, members of the Smart Team, in recognition of the importance of our technologies in affecting the quality of life throughout the world, and in accepting a personal obligation to our profession and its members, do hereby commit ourselves to the highest ethical and professional conduct and agree: - to accept responsibility in making engineering decisions consistent with the safety, health and welfare of the public - to disclose promptly factors that might endanger the public or the environment - to reject any development in relation with any kind of offensive actions

Pierre Lamon
Last modified: Sun Jan 8 18:40:14 CET 2006