Repository navigation
18. Wheelly Robot Software Architecture
Marco Marini edited this page Oct 16, 2026
·
2 revisions
Release: 0.29.0
This document details the definitive 6-layer decoupled architecture for the Wheelly robot project, structured under the root package org.mmarini.wheelly.
The architecture is designed using a sibling package structure to prevent nested dependency cycles. Each layer represents a distinct level of abstraction, shifting from low-level hardware communication to high-level neural decision-making.
graph TD
%% Define Layers
L6[Layer 6: org.mmarini.wheelly.agents]
L5[Layer 5: org.mmarini.wheelly.gym]
L4[Layer 4: org.mmarini.wheelly.behaviors]
L3[Layer 3: org.mmarini.wheelly.perception]
L2[Layer 2: org.mmarini.wheelly.control]
L1[Layer 1: org.mmarini.wheelly.robots]
%% Data Flows
L1 -- Raw Telemetry --> L2
L2 -- Aggregated State --> L3
L3 -- Aggregated State --> L4
L3 -- 2D Occupancy Grid --> L4
L4 -- Aggregated State --> L5
L4 -- 2D Occupancy Grid --> L5
L4 -- Behaviour state --> L5
L5 -- State Tensors & Rewards --> L6
L6 -- Discrete Action ID --> L5
L5 -- Behavioural Intention --> L4
L4 -- Motion / Head Targets --> L3
L3 -- Motion / Head Targets --> L2
L2 -- Low-Level Commands --> L1
%% Styling
style L1 fill:#f9f,stroke:#333,stroke-width:2px
style L2 fill:#bbf,stroke:#333,stroke-width:2px
style L3 fill:#bfb,stroke:#333,stroke-width:2px
style L4 fill:#fbb,stroke:#333,stroke-width:2px
style L5 fill:#ffb,stroke:#333,stroke-width:2px
style L6 fill:#fbc,stroke:#333,stroke-width:2px
- Responsibility: Low-level hardware interfacing, message modelling, and core simulation.
-
Key Components:
-
RobotApi: Core Java interface abstracting hardware interaction (e.g.,move(),scan(),getTelemetry()).
-
- Responsibility: Sensor data aggregation, localization tracking, and closed-loop control of macro-states.
-
Key Components:
-
RobotController: Coordinates aggregated status delivery and dispatches decomposed kinematic commands.
-
- Responsibility: Mapping and transformation of spatial sensory readings into a unified environment model.
-
Key Components:
-
WorldModeller: Updates the spatial memory of the robot from incoming controller states.
-
- Responsibility: Complex autonomous behaviours, strategic navigation routines, and immediate hazard recovery.
- Responsibility: Implements the Reinforcement Learning (RL) environment interface, handling state tensor wrapping and reward estimation.
- Responsibility: Deep Neural Network inference and Actor-Critic optimization engines.
To ensure perfect isolation, layers never instantiate their siblings. Compilation dependencies flow strictly downwards. At execution time, instantiation occurs inside the root controller runner classes