-
Notifications
You must be signed in to change notification settings - Fork 0
Add basic turtlebot demo #3
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
Add containerized demo showing ros2_medkit gateway discovering TurtleBot3 nodes in Gazebo simulation. Includes: - Dockerfile with ROS 2 Jazzy, TurtleBot3, and ros2_medkit - docker-compose.yml with port forwarding for REST API - docker-compose.nvidia.yml for GPU-accelerated Gazebo - ROS 2 package structure (package.xml, CMakeLists.txt) - Launch file for TurtleBot3 empty_world + gateway - One-click run-demo.sh script with X11 setup
Complete demonstration of ros2_medkit integration with TurtleBot3 robot, Nav2 navigation stack, and sovd_web_ui for browser-based control. Key features: - Full TurtleBot3 Gazebo simulation with turtlebot3_world map - Nav2 navigation stack (AMCL, planner, controller, costmaps) - ros2_medkit gateway exposing SOVD-compliant REST API - sovd_web_ui for interactive robot control via browser - Docker Compose orchestration with CPU and NVIDIA GPU profiles - One-command demo launcher with X11 forwarding setup Build system changes: - Clone external dependencies (ros2_medkit, sovd_web_ui) from GitHub instead of using relative paths (temporary until proper releases) - Added Nav2 configuration files (nav2_params.yaml, turtlebot3_world.yaml) - Unified docker-compose.yml with NVIDIA profile (removed separate file) - Enhanced CI with shellcheck, yamllint, and Docker build validation Docker improvements: - Use `context: .` and git clone instead of relative workspace paths - NVIDIA GPU support via Docker Compose profile (--profile nvidia) - sovd_web_ui cloned directly from GitHub in docker-compose - Automatic Web UI startup on port 3000 Script enhancements: - Added `set -eu` for strict error handling in run-demo.sh - Fixed unbound variable issues with proper parameter expansion - Shellcheck compliance with appropriate disable directives - Improved user feedback with emoji icons and clearer messages Documentation: - Updated README with accurate port numbers and instructions - Added Docker Compose profile usage examples - Fixed markdown linting issues (blank lines, code fences, bare URLs) - Clarified prerequisites and NVIDIA GPU requirements CI/CD improvements: - Added shellcheck for .sh and .bash files - Added yamllint with 120-character line limit - Added trailing whitespace check - Added Docker build test for demo image - All checks run on PR and push to main
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 adds a comprehensive TurtleBot3 integration demo that showcases ros2_medkit's capabilities with a complete ROS 2 navigation stack. The demo includes Docker-based deployment, Web UI integration, and development container support for easy onboarding.
Key Changes:
- Complete TurtleBot3 + Nav2 + ros2_medkit integration demo with Gazebo simulation
- Docker and docker-compose setup with CPU and NVIDIA GPU support
- CI/CD enhancements including linting for shell scripts, YAML validation, and Docker build testing
- VS Code devcontainer configuration for development environment setup
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
demos/turtlebot3_integration/run-demo.sh |
Demo launcher script with X11 forwarding and Docker compose orchestration |
demos/turtlebot3_integration/package.xml |
ROS 2 package manifest defining demo dependencies |
demos/turtlebot3_integration/launch/demo.launch.py |
Launch file coordinating Gazebo, Nav2, and ros2_medkit gateway |
demos/turtlebot3_integration/docker-compose.yml |
Docker compose configuration with CPU/GPU profiles and Web UI service |
demos/turtlebot3_integration/config/turtlebot3_world.yaml |
Map configuration for TurtleBot3 world |
demos/turtlebot3_integration/config/nav2_params.yaml |
Nav2 stack parameters tuned for TurtleBot3 burger model |
demos/turtlebot3_integration/config/medkit_params.yaml |
ros2_medkit gateway configuration with CORS and server settings |
demos/turtlebot3_integration/README.md |
Comprehensive documentation with quick start, API examples, and troubleshooting |
demos/turtlebot3_integration/Dockerfile |
Multi-stage build for ROS 2 Jazzy with TurtleBot3, Nav2, and ros2_medkit |
demos/turtlebot3_integration/CMakeLists.txt |
CMake build configuration for installing launch and config files |
.github/workflows/ci.yml |
Enhanced CI with trailing whitespace check, shellcheck, yamllint, and Docker build |
.devcontainer/setup-env.sh |
Environment setup script for ROS 2 workspace initialization |
.devcontainer/devcontainer.json |
VS Code devcontainer configuration with ROS 2 development tools |
.devcontainer/Dockerfile |
Development container image based on Ubuntu 24.04 with ROS 2 Jazzy |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix operator precedence in find commands for shellcheck and yamllint by adding parentheses around -name patterns - Update README to reflect actual docker-compose profiles approach (removed reference to non-existent docker-compose.nvidia.yml) - Use HTTPS instead of HTTP for ROS2 APT repository
with docker-outside-docker and docker compose.
Description
Complete demonstration of ros2_medkit integration with TurtleBot3 robot,
Nav2 navigation stack, and sovd_web_ui for browser-based control.
Key features:
CI/CD improvements:
Related Issue
closes #2
Checklist