This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:safeav:softsys:softstacks [2025/10/17 11:24] – agrisnik | en:safeav:softsys:softstacks [2025/10/17 11:51] (current) – [Advantages of a Well-Defined Software Stack] agrisnik | ||
|---|---|---|---|
| Line 2: | Line 2: | ||
| {{: | {{: | ||
| - | ====== | + | ====== |
| 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, | 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, | ||
| Line 13: | Line 13: | ||
| This combination of safety-critical engineering and AI-driven decision-making makes autonomy software one of the most challenging areas in modern computing. | 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 ((Russell, S. J., & Norvig, P. (2021). Artificial Intelligence: | ||
| + | * **Perception** – sensing and interpreting the environment (via LiDAR, radar, cameras, sonar, etc.). | ||
| + | * **Localisation** – estimating the system’s precise position and orientation in the world. | ||
| + | * **Planning** – generating paths or behaviours that fulfil mission goals while avoiding obstacles. | ||
| + | * **Control** – executing actions safely and stably, compensating for environmental changes. | ||
| + | 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: | ||
| + | * **Low-level embedded firmware** (real-time control and drivers). | ||
| + | * **Middleware and communication** frameworks (data exchange and scheduling). | ||
| + | * **High-level AI algorithms** (perception, | ||
| + | * **Supervisory or cloud-level systems** (fleet management, updates, data analytics). | ||
| + | |||
| + | 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, | ||
| + | * ROS / ROS 2 (Robot Operating System): Modular publish-subscribe communication. | ||
| + | * DDS (Data Distribution Service): Real-time, QoS-based messaging standard. | ||
| + | * MQTT / ZeroMQ: Lightweight protocols for cloud and IoT integration. | ||
| + | |||
| + | 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, | ||
| + | * Hardware abstraction (sensors, actuators, compute units), | ||
| + | * Middleware (communication and data exchange), | ||
| + | * Application-level modules (AI perception, planning, control), and | ||
| + | * System management (diagnostics, | ||
| + | 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, | ||
| + | |||
| + | ==== Modularity and Abstraction ==== | ||
| + | |||
| + | |||
| + | Each layer isolates complexity by providing a clean interface to the one above. | ||
| + | * Developers can modify one layer (e.g., perception algorithms) without altering lower layers (e.g., drivers). | ||
| + | * Enables easier testing, debugging, and reuse across multiple vehicles or applications. | ||
| + | |||
| + | ==== Real-Time and Deterministic Behaviour ==== | ||
| + | |||
| + | Autonomous systems rely on real-time responses. The stack architecture ensures: | ||
| + | * Timely communication between perception, planning, and control. | ||
| + | * Deterministic scheduling using RTOS kernels or real-time Linux patches ((Baruah, S., Baker, T. P., & Burns, A. (2012). Real-time scheduling theory: A historical perspective. Real-Time Systems, 28(2–3), 101–155)). | ||
| + | * Synchronisation of data streams from multiple sensors using timestamping and time-sensitive networking (TSN). | ||
| + | |||
| + | ==== 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 ((AUTOSAR Consortium. (2023). AUTOSAR Adaptive Platform Specification. AUTOSAR.)). | ||
| + | |||
| + | ==== Continuous Integration and Simulation ==== | ||
| + | |||
| + | A layered design allows developers to: | ||
| + | * Integrate software components progressively. | ||
| + | * Test them using Hardware-in-the-Loop (HIL) and Software-in-the-Loop (SIL) methods. | ||
| + | * Use simulators (e.g., CARLA, Gazebo, AirSim) to validate upper-layer modules without risking hardware damage. | ||
| + | |||
| + | ==== Management and Organisational Importance ==== | ||
| + | |||
| + | From a software engineering management perspective, | ||
| + | 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, | ||
| + | |||
| + | **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: | ||
| + | * Perception team handles sensor fusion and computer vision. | ||
| + | * Planning & Control team develops behavioural logic and trajectory generation. | ||
| + | * Systems team manages middleware and data distribution. | ||
| + | * Infrastructure team maintains OS builds, simulation, and DevOps pipelines. | ||
| + | Thus, the software stack doubles as both a technical architecture and an organisational map for coordination and accountability ((Fowler, M. (2021). Patterns of Enterprise Software Architecture. Addison-Wesley.)). | ||
| + | |||
| + | ==== Real-World Example: ROS 2 as a Layered Stack ==== | ||
| + | |||
| + | The Robot Operating System 2 (ROS 2) exemplifies how modular software stacks are implemented: | ||
| + | * Application Layer: Navigation, mapping, perception nodes. | ||
| + | * Middleware Layer: DDS for data exchange, QoS configuration. | ||
| + | * OS Layer: Linux or RTOS with POSIX APIs. | ||
| + | * Hardware Abstraction: | ||
| + | * Build & Deployment Layer: CMake, Colcon, Docker for reproducibility. | ||
| + | This layered model has become the foundation for numerous autonomous systems in academia and industry — from mobile robots to autonomous vehicles ((Maruyama, Y., Kato, S., & Azumi, T. (2016). Exploring the performance of ROS 2. Proceedings of the 13th Embedded Real-Time Systems Workshop (ERTS 2016))). | ||
| + | |||
| + | ==== 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: | ||
| + | |||
| + | <WRAP excludefrompdf> | ||
| + | * [[en: | ||
| + | * [[en: | ||
| + | </ | ||