This is an old revision of the document!
General Concepts of Architecture for Autonomous Systems
Software architecture represents the high-level structure of a system, outlining the organisation of its components, their relationships, and the guiding principles governing their design and evolution. In autonomous systems, architecture defines how perception, planning, and control modules interact to achieve autonomy while maintaining safety, reliability, and performance .
The primary purpose of an autonomous system’s software architecture is to ensure:
Scalability: The ability to integrate new sensors, algorithms, or mission modules.
Interoperability: Compatibility with other systems and communication protocols.
Maintainability: Ease of updating or modifying individual modules.
Safety and fault tolerance: Robustness against sensor failure, communication loss, or software bugs.
Real-time responsiveness: Capability to process environmental data and respond within strict temporal limits.
Architectural design in autonomous systems typically follows several universal principles:
Modularity: Systems are divided into well-defined modules (e.g., perception, localisation, path planning, control), allowing independent development and testing. Enables functional isolation, expandability and higher maintainability of the given system.
Abstraction: Functional details are hidden behind interfaces, promoting flexibility and reuse. In its essence, the higher the abstraction, the easier system development, testing and applications. It also reduces design complexity at every abstraction layer.
Layering: Tasks are grouped by level of abstraction — for instance, hardware interfaces at the lowest level and mission planning at the highest. Besides the functional abstraction, layering enables different technical implementations at different levels, which is needed to address different reaction speeds, reduce decision-making delays and more effective internal communications and data processing at different levels.
Standardisation: Adoption of middleware standards (e.g., ROS, DDS, MOOS) facilitates interoperability across platforms. Besides, the mentioned standardisation enables avoiding vendor locks and reduces overall costs due to increased competition.
Data-centric communication: Modern architectures rely on publish/subscribe paradigms to manage distributed communication efficiently.
[1]
Bass, L., Clements, P., & Kazman, R. (2021). Software Architecture in Practice (4th ed.). Addison-Wesley