Communication Patterns specify the communication semantics for the definition of Services.
The four communication patterns (see table below) define the basic set of recurring communication semantics that proved to be sufficient for all robotics use-cases for inter-component communication.
Pattern Name | Interaction Model | Description |
---|---|---|
Send | Client/Server | One way communication |
Query | Client/Server | Two way request/response |
Push | Publisher/Subscriber | 1-n distribution |
Event | Publisher/Subscriber | 1-n asynchronous condition notification |
The figure below provides a schematic overview of the communication semantics.
The following list of core references provides detailed descriptions of communication patterns:
The four coordination and configuration patterns (see table below) provide recurring semantics that proved to be sufficient for robotics use-cases related to behavior coordination (which requires run-time coordination and configuration of several components in a system from the skill and task level). Therefore, each component in a system should by default implement the slave part of each of the four patterns. In addition, there is typically one specific component per system that implements the master part of the patterns and that is responsible to centrally coordinate the robot behavior (see Robot Behavior Coordination for further details). The SmartTCL language conforms to the RobMoSys composition structures and can be used already now for Robot Behavior Coordination.
Pattern Name | Interaction Model | Description |
---|---|---|
Parameter | Master/Slave | Run-time configuration |
State | Master/Slave | Lifecycle management and mode (de-)activation |
Dynamic Wiring | Master/Slave | Run-time connection re-wiring |
Monitoring | Master/Slave | Run-time monitoring and introspection |
The Parameter pattern allows run-time configuration of components. The following links provide further details:
The state management of a component is one of the central patterns for run-time coordination of components. On the one hand, state management is about the generic lifecycle state-automaton (see figure on the right) that each component implements by default and that allows coordinated handling of the component's start-up and shutdown procedures as well as the component's fatal-error mode. In addition, component's individual run-time modes can be specified as explained in the following reference:
Dynamic Wiring is used to increase run-time robustness and flexibility by dynamically changing the wiring between components. Additional details can be found here:
Run-time Monitoring and Introspection of components is an important aspect in robotics that requires dedicated interaction mechanisms. The following reference provides details of a concrete realization:
See next:
See also: