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:
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.
Top
Language and libraries
Language
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
Libraries
This is a list of libraries that can be usefull for the project
Boost C++ Libraries - provide free peer-reviewed portable C++ source libraries
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:
Component Model: GenoM defines specific interaction between components and composition standards.
Component Model Implementation: GenoM provides the dedicated set of executable software elements required to support the execution of components (GenoM modules) that conform to the model.
Component Architecture: GenoM defines the internal architecture of components, and their structure and functioning.
Component Generation Tools: GenoM provides a set of tools for describing components and for generating component templates.
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
Installation
Proceed as follows to install GenoM:
Create a new directory DIR
Download mkdep, pocolibs, libedit, eltclsh and GenoM tarballs in DIR
Modify baseinstall.sh to match your system configuration
Execute ./baseinstall.sh
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:
mv demoMotionTaskCodels.c demoCntrlTaskCodels.c codels (replace the automatically generated files)
make sure PKG_CONFIG_PATH is set to GENOM_DIR/lib/pkgconfig where GENOM_DIR is the directory where you installed GENOM
./configure
The module is in ./codels/posix-obj and the test program is in ./server/posix-obj
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.
Top
Documentation
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.
Top
Vehicle
The main specification of the vehicle can be found here
The following table lists the most important vehicle variables and constants:
Main vehicle characteristics
Symbol
Description
O
rover center
Oxyz
rover's main frame (x pointing forward, y left and z up)
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.
Top
Top
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