← All projects
Autonomy

VDA5050 Support for Open-RMF

A ROS 2 Jazzy implementation of the VDA5050 v2.1.0 protocol that lets Open-RMF command a mixed fleet — a custom FabLab AMR and TurtleBot3 robots — over MQTT.

Role
Technical Lead
Period
Jun 2026 – Nov 2026
Partners
EIU FabLab × ARTC (Singapore)
Status
In progress
ROS 2 JazzyOpen-RMFVDA5050 v2.1MQTTNav2DockerC++PythonPySide6 / QML
The FabLab AMR carrying two TurtleBot3 robots used in the fleet demos.
The FabLab AMR carrying two TurtleBot3 robots used in the fleet demos.

Overview

VDA5050 is an open interface standard for communication between AGVs/AMRs and a master control, developed by the German associations VDA and VDMA. Open-RMF is an open-source framework for managing fleets of robots from different vendors. This joint project between the EIU FabLab and ARTC (Singapore) connects the two: Open-RMF plans and schedules the fleet, and every robot is driven through VDA5050 v2.1.0 messages over MQTT.

The ground station runs Open-RMF core, the fleet adapter and the operator dashboard together in one Docker container. Each robot runs its own VDA5050 client adapter and Nav2 navigation stack, and only the MQTT broker crosses between the two sides.

My role

As Technical Lead on the EIU side, I led the design and implementation of the system — the fleet adapters, the robot-side client adapter and Nav2 bridge, and the fleet dashboard — and prepared the milestone demos on real robots and in simulation.

System architecture

Master control sends VDA5050 orders over MQTT to the robot; the robot reports state back
Master control (Open-RMF + EIU Fleet Command Center) sends VDA5050 orders over MQTT; the on-robot ROS 2 stack reports state back.
Ground station · one Docker container
eiu_fleet_uiPySide6 + QML dashboard
Open-RMFtraffic schedule + task dispatcher
vda5050_fleet_adapter_full_controlone process per robot type
MosquittoMQTT broker
Each robot · AMR / TurtleBot3
vda5050_client_adapterMQTT ⇄ ROS 2 vda5050_msgs
tb3_vda5050_bridgeorder steps → Nav2 goals, telemetry back
Nav2planning, control, localization

The robot side exposes two interfaces: northbound, the six VDA5050 MQTT topics (order, instantActions, state, visualization, connection, factsheet), and southbound, ROS 2 topics (vda5050_msgs) between the client adapter and the robot driver. Because the robot side speaks plain VDA5050, a master control other than Open-RMF can drive it unchanged.

Key features

Routes as VDA5050 orders

A planned multi-waypoint route from RMF is sent as one order; nodes can be released step by step and replans are stitched into the same order.

Traffic hold

When RMF asks a robot to stop, the AGV is paused and keeps its order, then resumes when the new route arrives.

Multi-robot, multi-fleet

One adapter process per fleet, many robots per fleet; the AMR and TurtleBot3 fleets run together and deconflict through RMF.

Runtime registration

A robot found on the broker can be checked, added, removed or restored into a running fleet.

Operator controls

Pause, resume, speed limit and re-localization per robot; lane closures and no-go zones per fleet.

VDA5050 master behavior

Resends unconfirmed orders, reads the AGV factsheet, validates orders before sending, and was tested with a third-party VDA5050 client.

Fleet dashboard

EIU Fleet Command Center dashboard
EIU Fleet Command Center — live map, robot status, VDA5050 orders and message traffic.

The dashboard (eiu_fleet_ui) monitors system health, robots, traffic and tasks; dispatches and cancels patrol and delivery tasks; gives per-robot control; draws no-go zones; edits the nav graph; and shows each robot’s live VDA5050 order and message log.

Robots

AMR hardware overview
The custom FabLab AMR: sensing, computing, communication and actuation.
  FabLab AMR TurtleBot3 Burger
Kinematics Differential drive Differential drive
Size 0.6 m × 0.4 m 138 × 178 × 192 mm
Max speed 0.30 m/s · 0.60 rad/s 0.22 m/s
Compute SOM-RK3399 (2× Cortex-A72 + 4× Cortex-A53) SOM-RK3399v2
Sensors LR-1BS 2D LiDAR (270°), Orbbec DaBai Pro depth camera, BNO055 IMU 2D LiDAR
Navigation Nav2: Theta* planner → Simple Smoother → MPPI controller Nav2
RMF fleet amr_fleet (1 robot) tb3_fleet (2 robots)
AMR software architecture
AMR navigation software stack.

Packages

Package Layer Role
eiu_fleet_ui Dashboard PySide6/QML operator dashboard, can follow several fleet adapters at once
vda5050_fleet_adapter_full_control Fleet adapter Open-RMF full-control adapter; sends a planned route as one VDA5050 order
vda5050_fleet_adapter Fleet adapter EasyFullControl variant; one VDA5050 order per destination
fleet_bringup Ground station One launch file for RMF core, the adapter, mock workcells and the dashboard
vda5050_client_adapter Robot VDA5050 over MQTT ⇄ ROS 2 vda5050_msgs; publishes state and connection
tb3_vda5050_bridge Robot Turns order steps into Nav2 NavigateToPose goals; reports odometry, battery and progress
tb3_simulation Simulation TurtleBot3 + Nav2 in Gazebo Harmonic, world generated from the traffic editor
vda5050_msgs Shared ROS 2 message definitions shared by the robot-side nodes

Simulation

Gazebo simulation of the VDA5050 fleet
The same integration running in Gazebo with the fleet dashboard and RViz.

Demo videos

Full playlist: YouTube · Source code and package documentation: GitHub

Current limitations

  • Tested on one building level; lifts and multi-floor map switching are not built yet.
  • Charging and pick-and-drop actions are supported in the protocol but tested only with simulated AGVs or mock workcells.
  • Tested with a third-party VDA5050 client, not yet with a commercial AGV.
← All projects