Skip to main content

Architecture

System Overview​

CarMate technical architecture

CarMate spans three connected nodes. Each node has a distinct role: hardware sensing, software-defined vehicle processing, and simulation/visualization.

Node Breakdown​

MCU Node​

PropertyDetail
RoleHardware sensor acquisition and MCU-to-cloud telemetry publishing
Key SoftwareThreadX RTOS, Rust firmware (threadx-app)
Key HardwareAzure IoT Dev Kit (MXChip AZ3166)
ConnectivityWi-Fi → MQTT to the Compute Node
Published SignalsTemperature (mcu/temperature)

The MCU node runs a ThreadX-based Rust application that reads onboard sensors and publishes environmental data to the MQTT broker on the Compute Node over Wi-Fi.

Compute Node​

PropertyDetail
RoleCentral SDV processing node: signal brokering, AI reasoning, and driver interaction
Key SoftwareDocker Compose stack (8 containerized services)
Key HardwareLinux machine (x86_64 or ARM64)
ConnectivityEthernet to HPC Node, Wi-Fi to MCU Node

The Compute Node hosts all containerized SDV services. It is the core of the CarMate blueprint and the minimum required node to run the system.

HPC Node​

PropertyDetail
RoleSimulation environment and instrument cluster visualization
Key SoftwareCARLA 0.9.16, instrument display application
Key HardwareWindows machine (dedicated GPU recommended)
ConnectivityEthernet → MQTT to the Compute Node; uProtocol/Zenoh to CarMate I/O
Published SignalsSpeed, Latitude, Longitude, Altitude, Road Wetness

The HPC Node runs the CARLA driving simulator, which generates realistic vehicle dynamics. A CARLA-to-MQTT bridge on the Compute Node reads this data and forwards it as VSS-aligned signals.

Data Flow​

The following describes the end-to-end signal path from sensor hardware through the SDV stack to the driver-facing AI:

MCU Sensors → Wi-Fi MQTT → MQTT Broker
CARLA Simulator → Ethernet MQTT → MQTT Broker
│
MQTT-Kuksa Provider
│
Zenoh Router
│
Eclipse Kuksa Databroker
(VSS-aligned signal store)
│
Vehicle Data Accessor (gRPC)
│
CarMate Agent (LLM)
│
┌──────────────────┴──────────────────┐
CarMate I/O Vehicle systems
(STT - TTS - Web UI) (ambient lighting, etc.)
│
Driver

All vehicle signals flowing through the Compute Node are normalized to COVESA VSS paths inside the Kuksa Databroker:

MQTT TopicVSS Signal PathUnit
carla/vehicle/speedVehicle.Speedkm/h
carla/vehicle/latVehicle.CurrentLocation.Latitude°
carla/vehicle/lonVehicle.CurrentLocation.Longitude°
carla/vehicle/altVehicle.CurrentLocation.Altitudem
carla/vehicle/wetnessVehicle.Exterior.Humidity%
mcu/temperatureVehicle.Cabin.HVAC.AmbientAirTemperature°C

Component Interaction​

ComponentNodeFunctionTechnology
Eclipse AutoWRX SDV RuntimeComputeMiddleware orchestration and service lifecycle managementDocker, AutoWRX
Eclipse MosquittoComputeCentral MQTT message broker for all sensor topicsEclipse Mosquitto 2.0
Eclipse Zenoh RouterComputeuProtocol transport layer; connects services via pub/sub and RPCEclipse Zenoh
MQTT-Kuksa ProviderComputeSubscribes to all MQTT sensor topics and forwards values to Kuksa via ZenohPython, paho-mqtt, kuksa-client
CARLA-Kuksa ProviderComputeBridges CARLA simulation (or mock data) to MQTT topicsPython, carla, paho-mqtt
Eclipse Kuksa DatabrokerComputeVSS-based central vehicle signal store; provides gRPC APIEclipse Kuksa
Vehicle Data AccessorComputeReads VSS signals from Kuksa Databroker and exposes them to the CarMate AgentPython, kuksa-client
CarMate AgentComputeReceives driver queries via uProtocol RPC, queries vehicle context, calls LLM, and returns responsesPython, uProtocol, Ollama/OpenAI/Gemini
CarMate I/OComputeFlask web application providing the driver Web UI, STT/TTS pipeline, and cluster displayPython, Flask, SpeechRecognition

Driver Interaction Sequence​

The following sequence diagram shows a complete driver interaction — from a spoken query to an AI-generated spoken response:

Communication Protocols​

ProtocolUsage in CarMate
MQTTSensor data ingestion from CARLA and MCU to the Compute Node
Eclipse ZenohInternal uProtocol transport between Compute Node services
uProtocol (RPC)CarMate I/O → CarMate Agent request/response calls
gRPCVehicle Data Accessor → Kuksa Databroker signal reads
HTTP / RESTCarMate I/O Flask web application for the driver browser UI
Wi-FiMCU Node to Compute Node MQTT communication
EthernetHPC Node (CARLA) to Compute Node MQTT communication