= Genom = The Generator of Modules GenoM is a tool to design real-time software architectures. It is more specifically dedicated to complex on-board systems, such as autonomous mobile robots or satellites, that require: * the integration of heterogeneous operational functions with various real-time constraints and algorithm complexities (control of sensors and actuators, servo-controls, monitorings, data processings, trajectory computations, etc.); * an homogeneous integration of these functions in the control architecture which requires coherent and predictable behaviors (starting, ending, error handling), and standard interfaces (control, parameterization, data flow); * the management of the parallelization, the physical distribution and the portability of the functions; * simple procedures to add, modify or (re)use the functions by non-specialists GenoM allows to encapsulate the operational functions on independent modules that manage their execution. The functions are dynamically started, interrupted or (re)parameterized upon asynchronous requests sent to the modules. A final reply that qualifies how the service has been executed is associated to every request. A set of modules composes an open, communicant and controllable system: * The control flow based on the requests and replies allows to control all the on-board functions. The requests can be sent by: o other modules (module hierarchies), o an operator (generally for evaluation purposes), o an execution controller. * Replies are sent back to the request sender. The data flow between the components of the architecture is based on another protocol: the data are exported in public structures. The modules are automatically produced by GenoM using: * a common generic model of module; * a synthetic description of the considered module. This module description is elaborated using a very simple language that allows to declare and describe its components: services, parameters, qualitative results, exported data, temporal and logical characteristics, etc. From this formal description GenoM produces: * a module running under various operating systems (Linux, BSD, Xenomai); * interface libraries (services and data accesses); * an interactive program for preliminary test purposes. Besides ease of development (the module description does not depend on the operating system and does not require specific knowledge on distributed systems), the generation of the modules guarantees that they fit with the generic common model. It is an important feature to handle large systems. The underlying standardization of the structure, the behavior and the interface of the modules allows to automate their integration. See the original paper [Fleury 1997] (below) for more information. == Requirements == * GNU make, [[pocolibs]] library. * Optional: * [[http://tcl.tk/|Tcl/Tk]] >= 8.0 for building the tcl client of modules. * LAAS [[mkdep]] if you intend to work on sources and recompile frequently. == Download == Latest releasse GenoM 2.10 (2012/10/24): * [[https://www.openrobots.org/distfiles/genom/genom-2.10.tar.gz|genom-2.10.tar.gz]] == Documentation == * [[https://www.openrobots.org/distfiles/genom/genom.pdf|User's manual]] * [[https://www.openrobots.org/distfiles/genom/genom-slides.pdf|Course slides]] == Related publications == * '''[Fleury 1997]''' S. Fleury, M. Herrb and R. Chatila. GenoM: A Tool for the Specification and the Implementation of Operating Modules in a Distributed Robot Architecture. In International Conference on Intelligent Robots and Systems, pages 842-848. Grenoble (France), 1997. * '''[Mallet 2002]''' A. Mallet, S. Fleury and H. Bruyninckx. A specification of generic robotics software components: future evolutions of GenoM in the Orocos context. In International Conference on Intelligent Robotics and Systems. Lausanne (Switzerland), 2002.