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
}
}]
}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 MedkitSOVD for ROS 2
Go deeper.
Your ROS 2 Robot Deserves Real Diagnostics (SOVD)
Your robot stops. You SSH in and get a wall of text. SOVD replaces this with a REST API, structured faults, and diagnostic snapshots.
Learn moreUnified PLC and ROS 2 Diagnostics with ros2_medkit
Bridge PLCs into ros2_medkit via OPC-UA. PLC faults trigger the same SOVD lifecycle as ROS 2 nodes - with AI diagnosis in 30 seconds.
Learn moreMulti-ECU OTA Through SOVD: One Endpoint, Every Update Backend
Three ECUs, three firmware stacks, one REST call. How the SOVD plugin pattern coordinates updates across heterogeneous controllers with a single /updates lifecycle.
Learn moreVDA 5050 + SOVD: Fleet Coordination Meets Deep Diagnostics
VDA 5050 tells the fleet manager the robot stopped. SOVD tells the engineer why. How we bridged both standards on one robot.
Learn moreFrequently asked questions.
It tells you why a robot or machine stopped. selfpatch finds the part that failed, saves a snapshot of what was happening at that moment, and ranks the likely causes against past incidents. No SSH sessions, no digging through logs.
Both, and that is the point. Plants run robots and PLCs from different vendors side by side, each with its own team and tools. selfpatch puts them all behind one diagnostic API, with one fault tree and one incident history.
Through ros2_medkit, our open-source gateway for ROS 2. It finds every node on the robot and exposes it through one REST API, with a web UI and MCP support for AI agents. It ships in the official ROS 2 distribution for Jazzy and Humble.
Any PLC that supports OPC-UA. The Diagnostics Box also speaks the native protocols of Siemens, Beckhoff, and Rockwell controllers, so PLCs that were never set up for OPC-UA work too.
The core is. ros2_medkit is open source under Apache 2.0. Medkit Pro and the Diagnostics Box are paid add-ons with more protocols, secure remote updates, a fleet view, and guided triage.
Only if you choose the cloud version. Run it on-prem or fully offline (air-gapped) and your faults, data, and knowledge base stay on your own servers, with role-based access and no outside AI calls.
Not all at once. Over-the-air (OTA) updates are signed, rolled out in stages, and only continue while devices report healthy. If a health check fails, the update rolls back by itself, so one bad release cannot take a whole shift of robots down.
Yes, SOVD (ISO 17978-3), the modern diagnostic standard from the automotive world. Faults, live data, operations, and settings all come through one web API that any tool, dashboard, or AI agent can call.
Deploy selfpatch on your fleet.
Tell us your stack and we will show you which recurring faults it could fix today.




