Skip to content

ISO 17978-3

SOVD for ROS 2: the open diagnostic API standard

SOVD - Service-Oriented Vehicle Diagnostics, standardised as ISO 17978-3 - is a modern REST/HTTP diagnostic API. It came out of automotive, where a fleet of mixed ECUs needed one way to be diagnosed. The same problem now lives in robotics: every robot, PLC, and vehicle speaks something different.

SOVD gives all of them one diagnostic interface - faults, live values, operations, and configuration over plain HTTP, that any tool or AI agent can call.

SOVD for ROS 2

What SOVD gives you

One REST surface

Faults, live data, operations, and configuration of every component behind one HTTP API - no bespoke protocol per system.

Structured faults

Faults carry a code, severity, status, and a freeze-frame of the state around them, instead of a wall of log text.

Entity model

Robots, subsystems, PLCs, and ECUs are addressable as a tree of components and apps, so tools and agents navigate them the same way.

Tool and agent ready

Because it is just REST, a web UI, a dashboard, your own scripts, or an AI agent over MCP all read the same diagnostic plane.

GET /api/v1/components/motor_ctrl/faults

HTTP/1.1 200 OK
{
  "items": [{
    "code": "MOTOR_STALL",
    "severity": "CRITICAL",
    "status": { "aggregatedStatus": "CONFIRMED" },
    "snapshot": {
      "commanded_velocity": 0.42,
      "measured_velocity": 0.0,
      "driver_temp_c": 87.3
    }
  }]
}
One request: the fault, its severity, and the state around it

SOVD for ROS 2

One standard across the stack

SOVD is not ROS-specific. A production line is rarely one technology: ROS 2 robots over DDS, PLCs over OPC-UA, classic ECUs over UDS/DoIP. SOVD sits in front of all of them and normalises each into the same entity-and-fault model, so the PLC fault and the robot it stranded land in one place.

That is the difference from observability. Observability tells you a metric moved. SOVD is built to act on it: trigger an operation, read a freeze-frame, push a configuration, gate an update on device health.

SOVD for ROS 2

How selfpatch implements SOVD

ros2_medkit is the open-source (Apache 2.0) SOVD gateway for ROS 2. Point it at your graph and it discovers every node and exposes them as a SOVD API, with a web UI and an MCP adapter, shipped in the official ROS 2 distribution for Jazzy and Humble. Medkit Pro and the Diagnostics Box extend the same gateway to PLCs, ECUs, fleets, and safe OTA.

Explore Medkit

Frequently asked questions

SOVD, ROS 2 diagnostics, OTA, and how selfpatch fits.

Diagnose · Patch · Recover · Continue

See selfpatch on your fleet

Tell us your stack - we'll show which of your recurring faults it could already resolve.