-
Notifications
You must be signed in to change notification settings - Fork 1
feat(turtlebot3): Complete demo with manifest discovery, fault management and GUI as default #17
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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
Description
Major improvements to TurtleBot3 integration demo:
Core Features:
Docker & Launch:
Manifest & Configuration:
Shell Scripts:
Documentation:
Testing:
Related Issue
closes #9
Checklist