Skip to content

Conversation

@bburda
Copy link
Contributor

@bburda bburda commented Dec 2, 2025

Description

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

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

Related Issue

closes #2

Checklist

  • Tested locally
  • README updated (if needed)

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
@bburda bburda requested review from Copilot and mfaferek93 December 2, 2025 08:23
@bburda bburda self-assigned this Dec 2, 2025
@bburda bburda added the enhancement New feature or request label Dec 2, 2025
Copy link

Copilot AI left a 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.
@bburda bburda merged commit 1cad284 into main Dec 3, 2025
2 checks passed
@bburda bburda deleted the feat/basic_turtlebot_demo branch December 3, 2025 16:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Basic TurtleBot3 + Gazebo with ros2_medkit demo

3 participants