Project

General

Profile

Introduction

Programming autonomous robotic systems is a complex task and often relies on architectural principles and tools. In most robotic software architectures, a distinction is made between a decisional layer and a functional layer. The decisional layer is typically in charge of planning, acting, monitoring, while the functional layer in charge of driving sensors, effectors and activities such as localization, mapping, motion planning, trajectory following or obstacle avoidance.

GenoM (Generator Of Modules) is a tool to specify and implement a modular, component-based architecture for a robotic functional layer, developed by the robotics team of the LAAS laboratory for the LAAS Architecture for Autonomous Systems. Components are independent executable units, that can be reused across applications and communicate with each other thanks to a communication middleware. Note that while GenoM was originally designed for autonomous and terrestrial mobile robots, it can also be used in a broader set of applications.

In Genom, each component is formally described using a language derived from OMG IDL (Interface Description Language). This specification allows to generate code for all the communication parts of the components as well as the internal sequencing logic automatically. The programmer can concentrate his efforts on the functional parts of the components and all generated components are guaranteed to have a predictable, homogeneous behavior.

genom3 (the current version of GenoM) provides middleware independence to the components, to completely separate the algorithmic concerns of the components from the integration framework. It supports different middlewares through the notion of templates. A template is a program that describes how the formal description of the component is going to be translated into actual code. Templates also make it possible to support different programming languages.

This manual describes the Genom Component model in details. It also proposes an overview of the development process as well a practical tutorial using a simple Genom component. Other sections are reference material, presenting the detailed syntax of the Genom description language, the mappings from Genom IDL types to the component actual programming languages and a guide for code generation template writers.