Modern, SOVD-compatible diagnostics for ROS 2 robots, built around an entity tree (Area / Component / Function / App) for runtime discovery, health modeling, and troubleshooting.
ros2_medkit is an experiment in modern diagnostics for ROS 2–based systems.
Instead of hardcoding knowledge about every node, topic, or ECU, ros2_medkit models a robot as a diagnostic entity tree:
- Area – physical or logical domain (e.g.
base,arm,safety,navigation) - Component – hardware or software component within an area
- Function – capability provided by one or more components
- App – deployable software unit (node, container, process)
The goal is to make this tree compatible with the SOVD (Service-Oriented Vehicle Diagnostics) model, so the same concepts can be used across robots, vehicles, and other embedded systems.
Early prototype / work in progress
This is a personal open source project to explore diagnostic patterns for ROS 2. APIs, architecture, and naming may change at any time.
- Runtime discovery of what is actually running on the robot
- Health state modeled per Area / Component / Function / App
- Better remote troubleshooting and fleet-level observability for ROS 2 robots
rosdep install --from-paths src --ignore-src -r -ycolcon build --symlink-installRun all tests:
source install/setup.bash
colcon test
colcon test-result --verboseRun linters:
source install/setup.bash
colcon test --ctest-args -L linters
colcon test-result --verboseRun only unit tests (everything except integration):
source install/setup.bash
colcon test --ctest-args -E test_integration
colcon test-result --verboseRun only integration tests:
source install/setup.bash
colcon test --ctest-args -R test_integration
colcon test-result --verboseAll pull requests and pushes to main are automatically built and tested using GitHub Actions.
The CI workflow runs on Ubuntu 24.04 with ROS 2 Jazzy, executes a single colcon test to cover:
- Code linting and formatting checks
- Unit tests
- Integration tests with demo automotive nodes
After every run the workflow always calls colcon test-result --verbose and uploads the generated logs/results as artifacts for debugging.
Contributions and early feedback are welcome! Please read CONTRIBUTING.md for guidelines.
By contributing, you agree to follow the CODE_OF_CONDUCT.md.
If you discover a security vulnerability, please follow the process in SECURITY.md.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.