The software architecture is an instance of the LAAS architecture (LAAS Architecture for Autonomous System).
It is a hierarchical architecture including a supervisor written with openPRS (a Procedural Reasoning System) that controls a distributed set of functional modules.
A module is an independent software component that can integrate a set of functions with various time constraints or al- gorithmic complexity: control of sensors and actuators, servo- controls, monitoring, data processing, trajectory computation, etc.
Each module is created using a module generator called GenoM and thus presents standard behavior and interfaces. The functions encapsulated in a module can be dynamically started, interrupted or (re)parameterized upon asynchronous standard requests sent by the supervisor.
Once started, a service runs autonomously. A final reply that qualifies how the service has been executed is returned to the supervisor with the end of the service. During the execution a module can export data in structured public entities called posters and read data from posters produced by other modules (eg, robot positions, trajectories, maps and so on). The set of posters represent a distributed database of the state of the functional level of the architecture.
For Jido, we have implemented 25 modules.