{"id":43318118,"url":"https://github.com/selfpatch/selfpatch_demos","last_synced_at":"2026-02-01T22:10:02.457Z","repository":{"id":327260956,"uuid":"1104855315","full_name":"selfpatch/selfpatch_demos","owner":"selfpatch","description":"Demo projects showcasing ros2_medkit integration with real ROS 2 systems","archived":false,"fork":false,"pushed_at":"2026-01-24T21:02:25.000Z","size":42,"stargazers_count":4,"open_issues_count":6,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-25T09:51:24.322Z","etag":null,"topics":["demo","diagnostics","nav2","robotics","ros2","turtlebot3"],"latest_commit_sha":null,"homepage":"https://selfpatch.github.io/ros2_medkit/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selfpatch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-26T19:35:26.000Z","updated_at":"2026-01-24T21:02:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/selfpatch/selfpatch_demos","commit_stats":null,"previous_names":["selfpatch/selfpatch_demos"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/selfpatch/selfpatch_demos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfpatch%2Fselfpatch_demos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfpatch%2Fselfpatch_demos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfpatch%2Fselfpatch_demos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfpatch%2Fselfpatch_demos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selfpatch","download_url":"https://codeload.github.com/selfpatch/selfpatch_demos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selfpatch%2Fselfpatch_demos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28992732,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T22:01:47.507Z","status":"ssl_error","status_checked_at":"2026-02-01T21:58:37.335Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["demo","diagnostics","nav2","robotics","ros2","turtlebot3"],"created_at":"2026-02-01T22:10:02.387Z","updated_at":"2026-02-01T22:10:02.452Z","avatar_url":"https://github.com/selfpatch.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# selfpatch_demos\n\n[![CI](https://github.com/selfpatch/selfpatch_demos/actions/workflows/ci.yml/badge.svg)](https://github.com/selfpatch/selfpatch_demos/actions/workflows/ci.yml)\n[![Docs](https://img.shields.io/badge/docs-GitHub%20Pages-blue)](https://selfpatch.github.io/ros2_medkit/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE)\n[![Discord](https://img.shields.io/badge/Discord-Join%20Us-7289DA?logo=discord\u0026logoColor=white)](https://discord.gg/6CXPMApAyq)\n\nDemonstration projects showcasing [ros2_medkit](https://github.com/selfpatch/ros2_medkit) integration\nwith real ROS 2 systems.\n\n## Overview\n\nThis repository contains example integrations and demos that show how ros2_medkit\ncan be used to add SOVD-compliant diagnostics and fault management to ROS 2-based robots and systems.\n\nEach demo builds on real-world scenarios, progressing from simple sensor monitoring\nto complete mobile robot integration:\n\n- **Sensor Diagnostics** — Lightweight demo focusing on data monitoring and fault injection\n- **TurtleBot3 Integration** — Full-featured demo with Nav2 navigation, showing entity hierarchy and real-time control\n\n**Key Capabilities Demonstrated:**\n\n- ✅ SOVD-compliant REST API (Areas → Components → Apps → Functions)\n- ✅ Real-time data access (topics via HTTP)\n- ✅ Configuration management (ROS 2 parameters via HTTP)\n- ✅ Operation execution (services and actions via HTTP)\n- ✅ Fault management and injection\n- ✅ Manifest-based entity discovery\n- ✅ Legacy diagnostics bridge support\n\nBoth demos support:\n\n- REST API access via SOVD protocol\n- Web UI for visualization ([sovd_web_ui](https://github.com/selfpatch/sovd_web_ui))\n- Fault injection and monitoring\n- Docker deployment for easy setup\n\n## Demos\n\n| Demo | Description | Features | Status |\n|------|-------------|----------|--------|\n| [Sensor Diagnostics](demos/sensor_diagnostics/) | Lightweight sensor diagnostics demo (no Gazebo required) | Data monitoring, fault injection, dual fault reporting paths | ✅ Ready |\n| [TurtleBot3 Integration](demos/turtlebot3_integration/) | Full ros2_medkit integration with TurtleBot3 and Nav2 | SOVD-compliant API, manifest-based discovery, fault management | ✅ Ready |\n\n### Quick Start\n\n#### Sensor Diagnostics Demo (Fastest - No GPU Required)\n\nThe sensor diagnostics demo is the fastest way to try ros2_medkit:\n\n```bash\ncd demos/sensor_diagnostics\n./run-demo.sh\n# Docker services start in daemon mode\n# Web UI available at http://localhost:3000\n\n# Explore the API\n./check-demo.sh\n```\n\n**Options:**\n```bash\n./run-demo.sh --attached      # Run in foreground with logs\n./check-demo.sh               # Interactive API demonstration\n./stop-demo.sh                # Stop the demo\n```\n\n**Features:**\n\n- Simulated sensors (LiDAR, IMU, GPS, Camera)\n- Configurable fault injection via REST API\n- Dual fault reporting paths (legacy + modern)\n- Runs anywhere (CI, Codespaces, laptop)\n\n#### TurtleBot3 + Nav2 Demo (Full Navigation Stack)\n\nFull mobile robot demo with autonomous navigation:\n\n```bash\ncd demos/turtlebot3_integration\n./run-demo.sh\n# Gazebo will open, Web UI at http://localhost:3000\n# Try: ./send-nav-goal.sh 2.0 0.5\n\n# To stop\n./stop-demo.sh\n```\n\n**Features:**\n\n- Complete TurtleBot3 simulation in Gazebo\n- Nav2 navigation stack integration\n- SOVD-compliant REST API with entity hierarchy\n- Manifest-based discovery (Areas → Components → Apps → Functions)\n- Fault injection scenarios for Nav2 components\n- Real-time robot control via HTTP\n\n## Getting Started\n\n### Prerequisites\n\n- ROS 2 Jazzy (Ubuntu 24.04)\n- Docker and docker-compose (recommended)\n- [ros2_medkit](https://github.com/selfpatch/ros2_medkit) \u003e= 1.0.0\n\n### Clone the Repository\n\n```bash\ngit clone https://github.com/selfpatch/selfpatch_demos.git\ncd selfpatch_demos\n```\n\n### Run a Demo\n\nEach demo has its own README with specific instructions. See above Quick Start,\nor follow the detailed README in each demo directory:\n\n```bash\ncd demos/sensor_diagnostics  # or turtlebot3_integration\n# Follow the README.md in that directory\n```\n\n## Example API Usage\n\nAll demos expose a SOVD-compliant REST API. Here are some common operations:\n\n```bash\n# Check gateway health\ncurl http://localhost:8080/api/v1/health\n\n# List all apps (ROS 2 nodes)\ncurl http://localhost:8080/api/v1/apps | jq '.items[] | {id, name}'\n\n# Get sensor data\ncurl http://localhost:8080/api/v1/apps/lidar_sim/data/scan | jq\n\n# Update configuration\ncurl -X PUT http://localhost:8080/api/v1/apps/lidar_sim/configurations/noise_stddev \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"value\": 0.5}'\n\n# List active faults\ncurl http://localhost:8080/api/v1/faults | jq\n```\n\nSee individual demo READMEs for more examples.\n\n## Related Projects\n\n- [ros2_medkit](https://github.com/selfpatch/ros2_medkit) — Core diagnostics library with SOVD-compliant gateway\n- [sovd_web_ui](https://github.com/selfpatch/sovd_web_ui) — Web-based visualization and control interface\n- [ros2_medkit_mcp](https://github.com/selfpatch/ros2_medkit_mcp) — MCP server for LLM integration\n- [ros2_medkit documentation](https://selfpatch.github.io/ros2_medkit/) — Full documentation and API reference\n\n## Contributing\n\nContributions are welcome! Please read [`CONTRIBUTING.md`](CONTRIBUTING.md) for guidelines.\n\nBy contributing, you agree to follow the [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md).\n\n## Security\n\nIf you discover a security vulnerability, please follow the process in [`SECURITY.md`](SECURITY.md).\n\n## License\n\nThis project is licensed under the Apache License 2.0. See the [`LICENSE`](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfpatch%2Fselfpatch_demos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselfpatch%2Fselfpatch_demos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselfpatch%2Fselfpatch_demos/lists"}