Container technologies
Docker
Docker provides the containerization foundation for the entire environment. The container is built from the official OSRF (Open Source Robotics Foundation) ROS2 base image. Base image:osrf/ros:jazzy-desktop-full-noble
- Ubuntu 24.04 LTS (Noble Numbat)
- Pre-installed ROS2 Jazzy desktop-full variant
- Official OSRF-maintained image
The
--privileged flag and device mounting enable GPU acceleration for Gazebo and RViz2.VS Code Dev Containers
VS Code Dev Containers allow you to develop inside the Docker container with a native development experience. Installed extensions:ms-python.python- Python language supportms-vscode.cpptools- C/C++ IntelliSense and debuggingms-vscode.cmake-tools- CMake integrationtwxs.cmake- CMake language supportms-iot.vscode-ros- ROS development tools
common-utils- Essential development utilitiesdesktop-lite- Lightweight desktop environment with noVNC
noVNC desktop
Provides browser-based access to a full Linux desktop environment. Configuration:- Web port: 6080 (automatically opens in browser)
- VNC port: 5901
- Password:
ros - Virtual display:
:1
ROS2 framework
ROS2 Jazzy Jalisco
ROS2 Jazzy is the latest LTS (Long Term Support) release of the Robot Operating System 2. Distribution:jazzy
Base OS: Ubuntu 24.04 Noble
Installation variant: desktop-full
Included packages:
- Core ROS2 libraries and tools
rviz2- 3D visualizationrqtandrqt-common-plugins- Qt-based GUI toolsrobot-state-publisher- Robot state publishingjoint-state-publisher- Joint state managementxacro- XML macro language for robot descriptiontf2-rosandtf2-tools- Transform library
CycloneDDS
Data Distribution Service (DDS) middleware for ROS2 communication. Implementation:rmw_cyclonedds_cpp
Navigation2
The navigation stack provides autonomous navigation capabilities. Installed packages:ros-jazzy-navigation2- Core navigation frameworkros-jazzy-nav2-bringup- Launch configurations
- Path planning
- Obstacle avoidance
- Behavior trees
- Recovery behaviors
- Waypoint following
Cartographer
SLAM (Simultaneous Localization and Mapping) implementation. Installed packages:ros-jazzy-cartographer- Core SLAM algorithmros-jazzy-cartographer-ros- ROS2 integration
- Real-time mapping
- Loop closure detection
- 2D and 3D SLAM support
Simulation stack
Gazebo Harmonic
Gazebo is the physics-based 3D robot simulator. Version: Harmonic (latest stable release) Package:gz-harmonic
- Physics simulation (ODE, Bullet, Simbody engines)
- Sensor simulation (lidar, cameras, IMU)
- Actuator modeling
- Material properties
- Lighting and shadows
- Empty world - Minimal testing environment
- TurtleBot3 world - Obstacles and walls for navigation testing
- House environment - Complex indoor space
ROS-Gazebo bridge
Connects ROS2 and Gazebo for bidirectional communication. Package:ros-jazzy-ros-gz
Functions:
- Publishes Gazebo sensor data to ROS2 topics
- Forwards ROS2 commands to Gazebo actuators
- Synchronizes simulation time with ROS2 clock
TurtleBot3 packages
TurtleBot3 is a low-cost, open-source mobile robot platform. Robot model: Burger (smallest variant)jazzy branch):
-
DynamixelSDK - Motor control library
- Source: https://github.com/ROBOTIS-GIT/DynamixelSDK.git
- Function: Low-level motor communication
-
turtlebot3_msgs - Message definitions
- Source: https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
- Function: Custom message types for TurtleBot3
-
turtlebot3 - Core packages
- Source: https://github.com/ROBOTIS-GIT/turtlebot3.git
- Includes: Robot description, bringup, teleoperation
-
turtlebot3_simulations - Gazebo integration
- Source: https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
- Includes: Gazebo models, worlds, launch files
All repositories are cloned on the
jazzy branch during the post-create phase.Build system
colcon
The official ROS2 build system. Package:python3-colcon-common-extensions
Build command:
src/- Source packagesbuild/- CMake build filesinstall/- Installed packageslog/- Build logs
rosdep
Dependency management for ROS packages. Package:python3-rosdep
Usage:
package.xml files.
vcstool
Version control system tool for managing multiple repositories. Package:python3-vcstool
While not actively used in the default setup, it’s available for managing custom repository collections.
Graphics stack
OpenGL and Mesa
Provides 3D graphics rendering for Gazebo and RViz2. Installed packages:mesa-utils- OpenGL testing utilitieslibglx-mesa0- GLX runtime librarylibgl1-mesa-dri- DRI driversmesa-vulkan-drivers- Vulkan support
- Hardware acceleration (default when GPU available):
- Software rendering (fallback for compatibility):
The post-create script automatically detects GPU capabilities and configures the appropriate rendering mode.
Qt platform
Graphical framework used by RViz2 and rqt tools.Development tools
Programming languages
Python 3.12- Default interpreter:
/usr/bin/python3 - Packages:
setuptools,numpy,transforms3d
- Compiler: GCC (Ubuntu 24.04 default)
- Build tools: CMake, Make
Version control
Git - Distributed version control system- Used to clone TurtleBot3 repositories
- Available for custom package management
Text editors
- Vim - Terminal-based editor
- VS Code - Primary IDE (runs on host, connects to container)
Teleoperation tools
Keyboard teleoperation:- Package:
ros-jazzy-teleop-twist-keyboard - Alias:
tb3_teleop - Controls: i/j/k/l/,
- Package:
ros-jazzy-teleop-twist-joy - Requires physical joystick device
Environment variables
All key environment variables are set indevcontainer.json and configured in post-create.sh:
License information
All components use open-source licenses:- ROS2 Jazzy: Apache 2.0
- Gazebo: Apache 2.0
- TurtleBot3: Apache 2.0
- Ubuntu: Various open-source licenses
- Docker: Apache 2.0