Software Architecture
Crucial to the design of a human-interactive mobile robot is the ability to rapidly and easily modify the robot’s behavior. This requires for a mobile robot to have a modular software architecture, with a planning module that coordinates the different software modules to achieve the goal.
Our software architecture is based on a Behavior-based architecture. A behavior is an independent software module that solves a particular problem, such as navigation or face detection.
This is achived by using a plugin pattern aproach that simplifies the creation of new modules that comunicate thanks to a shared memory using singleton pattern accesing global information that any module could use.
In this paper behaviors are also refereed as modules. Behaviors exist at 3 different levels:
- Functional level: The lowest level behaviors interface with the robot’s sensors and actuators, relaying commands to the motors or retrieving information from the sensors.
- Execution level: Middle level modules perform the main functions, such as navigation, localization, speech recog- nition, etc. These interface with the lowest level through a shared memory mechanism. Each middle level module computes some aspect of the state of the environment. The outputs of these modules are typically reported to the highest level modules.
- Decision level: The highest level coordinates the middle level modules based on a global planner. The planner is based on a Markov decision process (MDP). The MDP is solved to obtain an optimal policy according to the tasks’ objectives, which is used to command the other modules.