## 2 Literature Review
### Background  
#### 2.1.1 Overview of Robotic Software Architectures  
Robotic software architectures can be classified into four categories: (i) traditional centralized architectures, (ii) hierarchical architectures, (iii) behavioral or reactive architectures and (iv) hybrid architectures. These different categories are briefly described hereafter. 1. _Centralized architectures_ The first work on robotic control architectures belongs to the centralized architectures' category. Centralized architectures were inspired from artificial intelligence, that is, organized around decision making and a symbolic state of the world and the robot [19; 20]. These architectures place planning at the system's center and share the axiom according to which the central problem in robotics is cognition, that is to say, the  
Figure 1: General software system development process. manipulation of symbols to maintain and act on a model of the world. The world is the environment with which the robot interacts. Among centralized architectures, we can mention the planning system STRIPS [19] which assumes that the plan remains static and the world is unchanged during its execution, and Blackboard architecture, ref. [21] which gathers information on a world that is assumed non static and takes decisions based on the world state and goals that could evolve during mission execution. Other examples of centralized architectures can be found in [22]. ii _Hierarchical architectures_ The organizational model of hierarchical architectures, also called deliberative architectures, centers the design over the decisional system [19; 20]. These architectures are organized in several hierarchical layers (also called Levels) [21; 23; 24]. A layer only communicates directly with the levels immediately above and below itself. It breaks down a task, recommended to it by the immediately higher level, into more simple tasks for the immediately lower layer. The highest level manages the overall objectives of the application, while the lowest controls the robot's actuators [20]. These architectures typically have three layers: functional (contains the perception modules), executive (in charge of the supervision of robot's tasks execution), and decisional (in charge of planning). In this category of architectures, we can mention the following examples: NASREM (NASA Standard Reference Model) [25], the LIFIA architecture [26], the architecture Smad of ISS (Computer Science, Signals, and Systems Sophia Antipolis) [27], and FLEXHRC+ architecture, designed to provide collaborative robots with more autonomy when helping operators in shop-floor tasks that have large variability [28]. iii _Behavioral or reactive architectures_ In a reactive architecture [29], several modules connect the sensor inputs to the actuators. Each module implements a behavior, i.e., a basic functionality of the robot associating each input vector (the set of sensor values) to an output vector applied to the actuators. These behaviors are called \"reactive\" because they immediately provide an output value from a value in their entry. Inspired by observing animals' behavior, these architectures are built according to the idea that a more mature behavior can emerge from a combination of a set of simple, basic behaviors. Subsequently architecture was the first behavioral architecture [29]. It was proposed by [PERSON] in the middle of the 1980s. Based on [PERSON] subsumption architecture, [PERSON] [30] proposed a new behavioral architecture called DAMN (Distributed Architectures for Mobile Navigation). [PERSON] recently proposed an evolution of a behavior-based architecture developed at the Universities of Leon and Rey Juan Carlos [31]. This architecture takes into account the need for modular decomposition as well as the need for frequent reconfigurations to adapt to different competitions such as RoboCup Soccer and European Robotics League. It has been experimented with different robots, such as the four legged Aibo robot, the bipedal robot Nao, and wheeled robots TIAGo and RB1.