Conversation
…ment and GUI as default Major improvements to TurtleBot3 integration demo: Core Features: - Add manifest-based entity discovery (SOVD hierarchy: Areas→Components→Apps→Functions) - Implement fault management via diagnostic_bridge + fault_manager - Add SQLite storage for persistent fault tracking - Support conditional headless/GUI Gazebo modes Docker & Launch: - Fix Dockerfile: add ros2_medkit_fault_manager, fault_reporter, diagnostic_bridge packages - Add SQLite dependencies (sqlite3, libsqlite3-dev) - Update launch file: conditional Gazebo launch based on headless argument - Change default mode from headless to GUI for better UX - Add HEADLESS environment variable support in docker-compose.yml Manifest & Configuration: - Add turtlebot3_manifest.yaml defining complete entity hierarchy - Configure 4 areas: robot, navigation, diagnostics, bridge - Define 6 components: turtlebot3-base, lidar-sensor, nav2-stack, gateway, fault-manager, diagnostic-bridge-unit - Define 11 apps with ROS node bindings and dependencies - Define 3 functions: autonomous-navigation, robot-control, fault-management Shell Scripts: - Fix all app IDs: underscore format → hyphen format (bt_navigator → bt-navigator, etc.) - Add check-entities.sh: explore SOVD entity hierarchy - Add check-faults.sh: view active faults - Add inject-nav-failure.sh: trigger unreachable goal scenario - Add inject-localization-failure.sh: reset AMCL with high uncertainty - Add inject-controller-failure.sh: set restrictive velocity limits - Add inject-collision.sh: navigate toward obstacles - Add restore-normal.sh: restore defaults and clear faults - Update send-nav-goal.sh: use SOVD API instead of docker exec Documentation: - Completely rewrite TurtleBot3 demo README with: * Clear GUI vs headless mode instructions * SOVD entity hierarchy explanation * Fault management architecture diagram * Fault injection scenarios table * Complete REST API examples for all endpoints * Scripts reference table Testing: - All scripts verified working with GATEWAY_URL=http://172.19.0.2:8080 - Navigation goals successfully executed via SOVD API - Fault injection scenarios tested - 23 components discovered, 0 initial faults confirmed - GUI and headless modes both tested and working
There was a problem hiding this comment.
Pull request overview
This PR significantly enhances the TurtleBot3 integration demo by adding complete SOVD-compliant entity discovery, fault management capabilities, and improved Docker deployment options with both GUI and headless Gazebo modes.
Changes:
- Implemented manifest-based entity discovery with complete SOVD hierarchy (Areas → Components → Apps → Functions)
- Added fault management system with diagnostic_bridge for legacy /diagnostics topic support and persistent SQLite storage
- Introduced conditional Gazebo launch modes (GUI/headless) with default GUI mode for better user experience
- Created comprehensive fault injection scripts and monitoring tools for testing fault scenarios
- Updated all documentation with REST API examples, entity hierarchy explanations, and fault management architecture
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| send-nav-goal.sh | Migrated from docker exec to SOVD API for navigation goals, added robust validation and error handling |
| run-demo.sh | Added --headless flag with environment variable support for conditional Gazebo modes |
| restore-normal.sh | New script to restore default parameters and clear all faults after testing scenarios |
| inject-nav-failure.sh | New fault injection script for unreachable navigation goals |
| inject-localization-failure.sh | New fault injection script triggering AMCL uncertainty via global relocalization |
| inject-controller-failure.sh | New fault injection script setting restrictive velocity limits |
| inject-collision.sh | New fault injection script navigating toward obstacles |
| check-faults.sh | New script to query and display active faults from gateway |
| check-entities.sh | New script to explore complete SOVD entity hierarchy |
| demo.launch.py | Added conditional headless/GUI Gazebo launch, fault_manager and diagnostic_bridge nodes, manifest path configuration |
| turtlebot3_manifest.yaml | New complete SOVD manifest defining 4 areas, 6 components, 11 apps, and 3 functions |
| medkit_params.yaml | Updated with hybrid discovery mode, DELETE method in CORS, and manifest configuration |
| docker-compose.yml | Added HEADLESS environment variable support, switched to pre-built sovd_web_ui image |
| Dockerfile | Added SQLite dependencies and ros2_medkit fault management packages |
| README.md (root) | Expanded overview with SOVD capabilities, added both demo quick starts, included API examples |
| README.md (turtlebot3) | Complete rewrite with GUI/headless instructions, entity hierarchy documentation, fault injection scenarios, comprehensive API reference |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
mfaferek93
reviewed
Jan 29, 2026
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 16 out of 16 changed files in this pull request and generated 8 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix app IDs in README (underscore → hyphen to match manifest) - Add jq dependency check to shell scripts - Remove depends_on from sovd-web-ui - Remove unused PythonExpression import in launch file - Fix misleading comment about spawn (headless mode only) - Fix gz_args list construction for clarity - Add missing exec_depend in package.xml - Keep stderr visible in restore-normal.sh curl commands
- Remove unused YELLOW variable from check-entities.sh - Add -r flag to read command in restore-normal.sh to handle backslashes properly
mfaferek93
approved these changes
Jan 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Major improvements to TurtleBot3 integration demo:
Core Features:
Docker & Launch:
Manifest & Configuration:
Shell Scripts:
Documentation:
Testing:
Related Issue
closes #9
Checklist