# Engineering Challenges Ahead for Robot Teamwork in Dynamic Environments
## 3 Teamwork Challenges
### Organizational Structure and Decision-Making  
Teams need to take team decisions. For example, vehicles need to agree on the speed and direction of a particular vehicle or soccer robots on the location of the ball on the field. Obviously, application requirements are very different. In an autonomous driving scenario, decisions on the locations and intentions of unequipped traffic participants need to be taken very fast in very dynamic short-lived coalitions. Since safety concerns are paramount, consensus is required for most decisions. On the other hand, in robot soccer, for most decisions, we tolerate a relaxed consensus level but demand swift reactions due to the high dynamics of the game situation. Decision-making (note that our notion of decision-making is different from Reference [9] where the term is viewed as a synonym for planning and control of a multi-agent system) in a team can be organized according to three basic structural principles, i.e., centralized, hierarchical, and distributed [33]. In a _centralized_ structure, decisions are made by a central leader or controller. This structure suffers from the vulnerability of a central point of failure and the potential performance bottleneck. In a _hierarchical_ structure, decisions are made at different levels by a hierarchy of leaders that have decision authority according to their rank. Such a structure is more robust than a centralized one because it can potentially react faster to \"lower-level\" events and tolerate partial failures. Its drawback is the incurred high organizational overhead. In a _decentralized_ structure, all team members autonomously perceive their own situation and the state of the surrounding execution environment. Team members decide about their actions by themselves according to a given team plan. Team decisions that tolerate a relaxed consensus level can be taken using different kinds of voting schemes, auctions, games, and more. Decisions are made based on the given team plan and observations about the current context. The application developer will need to evaluate and judge the required level of agreement for team actions, as well as the affordable coordination overhead. A decentralized decision structure is an obvious choice if we are concerned about the reliability of the individual robots and the communication network. Likewise, if we deal with temporary coalitions in highly dynamic environments where swift decisions are required, such as in robot soccer, there is no time for the execution of a time-consuming leader election algorithm or any other costly algorithm for establishing an organizational structure. The reader is referred to [33; 34; 35] for detailed discussions of organizational structures and decision-making in multi-agent systems. The key questions are as follows:  
* What kind of organizational structure follows from the application requirements? * What kind of consensus level is required for team-wide decisions? * Which decision-making protocols are appropriate considering the trade-off between consensus level and protocol overhead? Let us look in more detail at a decentralized team organization. Generally, decision-making happens in five steps:  
1. Agents collect relevant data by observing the environment and their own status;
2. Agents form their own opinion based on the outcome of step 1;
3. Agents propose their own opinion by replicating it to all team members;
4. The team discusses and resolves conflicting opinions;
5. The team takes a joint decision. For replication and conflict resolution, there is a choice of well-known protocols depending on the application needs. Hence, a teamwork middleware should offer flexible support for decision-making that is tunable to different application requirements. The core functionality of such a middleware function is to support the team decision-making process with respect to the current values of specified decision variables. Below, we present one concrete example for such a middleware.