Table of Contents

Autonomy Software Stacks

 Bachelors (1st level) classification icon

Software architectures

Modern autonomous systems — from self-driving cars and unmanned aerial vehicles (UAVs) to marine robots and industrial co-bots — depend fundamentally on software architectures capable of real-time sensing, decision-making, and control. While mechanical and electronic components define what a system can do, the software stack defines how it does it — how it perceives the world, interprets data, plans actions, and interacts safely with its environment [1,2]. Autonomy software differs from conventional embedded or enterprise software in several critical ways:

This combination of safety-critical engineering and AI-driven decision-making makes autonomy software one of the most challenging areas in modern computing.

Core Functional Requirements of Autonomy Software

Autonomy software must achieve four key functional objectives [3,4]:

Each of these objectives corresponds to distinct software layers and modules in the autonomy stack.

Software Characteristics Unique to Autonomy

Characteristic Description Importance
Real-time Execution Must process sensor data and react within milliseconds. Ensures safety and stability.
Determinism Predictable behaviour under defined conditions. Enables certification and trust.
Scalability Supports increased sensor data and compute complexity. Allows future upgrades.
Interoperability Integrates diverse hardware, OSs, and middleware. Facilitates reusability.
Resilience Must continue functioning despite partial failures. Critical for mission continuity.
Adaptivity Learns from data or updates behaviour dynamically. Key for AI-driven autonomy.

These characteristics drive architectural decisions and the choice of frameworks (e.g., ROS, AUTOSAR Adaptive, DDS).

Software as a Multi-Layered System

Autonomy software is layered, combining multiple software technologies:

The combination of these layers forms the autonomy software stack, which enables complex behaviour while maintaining reliability. A defining aspect of autonomy software is its reliance on middleware — frameworks that manage interprocess communication (IPC), data distribution, and time synchronisation across distributed computing nodes. Some of the widely used standards:

A complete software stack is a layered collection of software components, frameworks, and libraries that work together to deliver a complete set of system functionalities. Each layer provides services to the layer above it and depends on the layer below it. Middleware, which is an essential part of the multi-layered architectures, ensures that all layers of the software stack can exchange information deterministically and safely [5]. In autonomous systems, the software stack enables integration between:

It’s the backbone that allows autonomy to function as a cohesive system rather than a set of disconnected modules (Quigley et al., 2009; Maruyama et al., 2016). From a technical perspective, the software stack defines how functionality, data flow, and control are structured within the system.

Modularity and Abstraction

Each layer isolates complexity by providing a clean interface to the one above.

Real-Time and Deterministic Behaviour

Autonomous systems rely on real-time responses. The stack architecture ensures:

Interoperability

Middleware such as ROS 2 or DDS standardises interprocess communication. This allows different vendors’ software modules (e.g., LiDAR driver from Company A and planner from Company B) to work together.

Fault Tolerance and Redundancy

Stack layering supports redundant paths for safety-critical functions. If a perception node fails, a backup process may take over seamlessly — ensuring resilience, especially in aerospace and automotive systems [7].

Continuous Integration and Simulation

A layered design allows developers to:

Management and Organisational Importance

From a software engineering management perspective, a defined software stack provides structure and governance for the development process, which provides the following main advantages: Division of Labour. Teams can specialise by layer — e.g., one group handles perception, another control, another middleware. This parallelises development and allows use of domain expertise without interference.

Reusability and Version Control Reusable modules and APIs speed up development. Tools like Git, Docker, and CI/CD pipelines ensure traceability, maintainability, and fast updates across distributed teams.

Scalability and Lifecycle Management A well-structured stack can be extended with new sensors or algorithms without re-architecting the entire system. Lifecycle management tools (e.g., ROS 2 launch systems, AUTOSAR Adaptive manifests) maintain version consistency and dependency control.

Quality Assurance (QA) and Certification Layered software stacks make it easier to apply quality control and compliance frameworks, such as: ISO 26262 (Automotive safety software), DO-178C (Aerospace software) or IEC 61508 (Functional safety in automation). Each layer can be validated separately, simplifying documentation and certification workflows.

Cost and Risk Reduction When multiple projects share a unified software stack, the cost of testing, validation, and maintenance drops significantly. This approach underpins industry-wide initiatives like AUTOSAR, which standardises vehicle software to lower integration costs.

The Layered Stack as an Organisational Blueprint

In large autonomy projects (e.g., Waymo, Tesla), the software stack also serves as an organisational structure. Teams are aligned with layers:

Thus, the software stack doubles as both a technical architecture and an organisational map for coordination and accountability [8].

Real-World Example: ROS 2 as a Layered Stack

The Robot Operating System 2 (ROS 2) exemplifies how modular software stacks are implemented:

This layered model has become the foundation for numerous autonomous systems in academia and industry — from mobile robots to autonomous vehicles [9]).

Advantages of a Well-Defined Software Stack

Advantage Description
Clarity and Structure Simplifies system understanding and onboarding.
Parallel Development Enables multiple teams to work concurrently.
Interchangeability Supports component replacement without total redesign.
Scalability Allows future expansion with minimal rework.
Maintainability Facilitates debugging, upgrades, and certification.
Efficiency Reduces cost, redundancy, and integration risk.

In essence, a software stack is not merely a technical artefact — it’s a strategic enabler that aligns engineering processes, organisational structure, and long-term sustainability of autonomous platforms. Autonomy software stack and Development and Maintenance challenges are discussed in the following chapters:


[1] Thrun, S. (2010). Toward robotic cars. Communications of the ACM, 53(4), 99–106
[2] Lee, E. A., & Seshia, S. A. (2020). Introduction to Embedded Systems: A Cyber-Physical Systems Approach (3rd ed.). MIT Press.
[3] Russell, S. J., & Norvig, P. (2021). Artificial Intelligence: A Modern Approach (4th ed.). Pearson
[4] Brooks, R. A. (1991). Intelligence without representation. Artificial Intelligence, 47(1–3), 139–159.
[5] Object Management Group. (2023). Data Distribution Service (DDS) Standard. OMG
[6] Baruah, S., Baker, T. P., & Burns, A. (2012). Real-time scheduling theory: A historical perspective. Real-Time Systems, 28(2–3), 101–155
[7] AUTOSAR Consortium. (2023). AUTOSAR Adaptive Platform Specification. AUTOSAR.
[8] Fowler, M. (2021). Patterns of Enterprise Software Architecture. Addison-Wesley.
[9] Maruyama, Y., Kato, S., & Azumi, T. (2016). Exploring the performance of ROS 2. Proceedings of the 13th Embedded Real-Time Systems Workshop (ERTS 2016