This is an old revision of the document!
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.
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.
| 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).
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.
Each layer isolates complexity by providing a clean interface to the one above.
Autonomous systems rely on real-time responses. The stack architecture ensures:
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.
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].
A layered design allows developers to:
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.
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].
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]).
| 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: