Robotics middleware is middleware to be used in complex robot control software systems. It is the glue software that every system developer wants to use to connect software (and hardware) components together. The composition of sub-systems into a new system is a difficult task, with currently close to no support from software tools, or from internationally accepted standards and workflows.
At a conceptual level, a complex robot controller has components that each serve one of the following four concerns:
- Communication: components must exchange information (data, events, commands,…), and how this exchange is done is an important property of the composite system.
- Computation: each component performs certain computations that are necessary to provide the functionality that is expected from the system.
- Configuration: components should be usable in more than one possible configuration, but the amount of configuration is an important aspect of the design and the implementation of components and systems.
- Coordination: the activities in components have to be coordinated by something at the system level, in order to guarantee the expected behaviour and peformance of the composed system.
Composing two or more components that each belong to one of these categories is an architectural design activity that has to balance a large amount of functional and non-functional requirements (performance, compositionality,…). The robotics research community has come up with a large number of (open source) projects that claim to provide good solutions to this component composition problem, but many questions are still unsolved, are rather, still unnoticed. This article presents an overview of some of the relevant issues to be considered in the design and use of such middleware, and also provides an annotated list of middleware projects with an evaluation of which design constraints they took (or did not take) into account, and about how well they perform.
See also
- RoSta: a European project reaching out to the robotics community to get clearer insights into robotics middleware and architectures.