Ros2_medkit + VDA 5050: bridging SOVD diagnostics with fleet management

Hey everyone,

Quick update on ros2_medkit. We’ve been exploring how medkit’s diagnostic data can serve VDA 5050 fleet integrations, and put together a working demo.

Context: VDA 5050 error reporting is intentionally minimal (errorType, errorLevel, errorDescription). That’s fine for fleet routing decisions, but when an engineer needs to debug a fault, there’s a gap. We wanted to see if medkit’s SOVD layer could fill it without breaking either standard.

What we did:

The new SOVD Service Interface plugin exposes medkit’s entity tree, faults, and capabilities via ROS 2 services (ListEntities, GetEntityFaults, GetCapabilities). This means any ROS 2 node can query diagnostic data (not just SOVD/REST clients).

We built a VDA 5050 agent as a separate process that:

  • Handles MQTT communication with a fleet manager (orders, state, instant actions)
  • Drives Nav2 for navigation
  • Queries medkit’s services to report faults as VDA 5050 errors

medkit stays completely unaware of VDA 5050. The agent is just another ROS 2 service consumer (same interface a BT.CPP node or PlotJuggler plugin would use).

vda5050_demo_560_15fps

Demo video:

  • ROSMASTER M3 Pro (Jetson Orin Nano),
  • mission dispatched from VDA 5050 Visualizer,
  • LiDAR fault injected mid-navigation,
  • fault propagated to fleet manager + full SOVD snapshot (freeze frames, extended data records, rosbag) in medkit’s web UI.

The service interface plugin is useful beyond VDA 5050 - anything that consumes ROS 2 services can now pull diagnostic data from medkit. Curious if anyone sees other use cases.

repo: GitHub - selfpatch/ros2_medkit: ros2_medkit - diagnostics gateway for ROS 2 robots. Faults, live data, operations, scripts, locking, triggers, and OTA updates via REST API. No SSH, no custom tooling. · GitHub

3 Likes