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