|Prof. Davide Brugali
University Of Bergamo
|M.Sc. Nico Hochgeschwender
|Prof. Roland Philippsen
The architecture of a robot software system can be conveniently described from three points of view, namely the
robot functionalities, the software implementation, the computational resources.
A robot functional architecture describes how the functionalities of a robot control system are partitioned into a collection of functional units that collaborate to fulfil the purpose of the system. This includes descriptions of the system's control and data flows, data sources (e.g. the sensors), data stores (e.g. the world model), data processing (i.e. the control algorithms), and data sinks (e.g. the actuators).
A robot component architecture describes, how a robot functional control architecture is implemented in software and how this software is structured. This includes specifying how the robot functionalities are structured into components, the dependencies between each other and external libraries, and utilities to account for specific aspects like communication middleware, quality of service, and others.
A robot runtime architecture describes how software components are mapped onto processes and threads, and how they are built and deployed onto the computational resources available on a particular robot.
Designing the software architecture of a robot control system is the process of maximizing internal cohesion of
components in such a way that their responsibilities are fulfilled effectively and minimizing coupling between
components in order to enhance system modularity. Better modularity is a prerequisite for better reusability.
The race towards performance pushes robotic engineers to neglect software quality attributes of a robot control system, such as maintainability, interoperability, scalability, and reusability. Software that is nicely encapsulated often simply runs slower than software that breaks encapsulation. Experience in software architecture design is about knowing when to break encapsulation to make the code run faster, and when not to do that.
This workshop focuses on several topics closely related to robot software architectures, which include:
Analysis of issues and challenges in robotic software development
Architectural models that lead to reusable robotic software design
Application of metrics to measure nun-functional properties (e.g., robustness, availability, etc.)
Identification and description of structural and behavioral patterns and design principles in robot software architectures
Description of lessons learned in the development and deployment of large-scale, real-world integrated robot software architectures
Description and analysis of design principles promoting quality of service (e.g., performance) attributes
Tools and approaches for automatic validation and verification of robot software architectures
Description of state-of-the-art research projects, innovative ideas, and field-based studies