- Running incompatible libraries and OS.
- Useful for using NVidia Jetsons. NVidia provides IDE Jetpack. Possible to use Jetpack with docker and any version of ROS necessary
- Standardised a development environment: same tools and libraries4. Infrastructure as code: using code to define the environments
- Cloud development: example for nav2
To use the GUI setup with ROS 2, follow these steps:
To build the Docker image for ROS 2 with GUI support, use the following command:
docker compose -f 01_ros2_gui/compose.ros2_gui_$ROS-DISTRO$.yaml buildReplace $ROS-DISTRO$ with the desired ROS 2 distribution (e.g., humble, jazzy).
The build context for Docker is docker/.
Run the Docker container using the appropriate compose file for your ROS 2 distribution:
docker compose -f 01_ros2_gui/compose.ros2_gui_humble.yaml up
docker compose -f 01_ros2_gui/compose.ros2_gui_jazzy.yaml updocker compose -f 05_ros2_control/compose.ros2_control.yaml updocker compose -f 07_ros2_cartesian_robot_tutorial/compose.ros2_cartesian_robot_tutorial_humble.yaml up
docker compose -f 07_ros2_cartesian_robot_tutorial/compose.ros2_cartesian_robot_tutorial_jazzy.yaml upThis will start a Docker container configured for ROS 2 with GUI support. The container uses the Dockerfile-humble-entrypoint to build the image and mounts the src directory to /home/ros/ros2_ws/src inside the container.
- Ensure your host machine has an X11 server running and accessible.
- The
DISPLAYenvironment variable is passed to the container to enable GUI applications. - The
.X11-unixdirectory is mounted to allow X11 communication. - The container runs with
network_mode: hostandipc: hostto enable proper communication and shared memory access.
To develop using the container, open VS Code and work from the local /src directory. This directory is bound to /home/ros/ros2_ws/src inside the container, ensuring your local changes are reflected within the container.
Build your ROS 2 packages inside the container and source the workspace:
colcon build --symlink-install --packages-select <your-package>
source install/setup.bashrealtime enabled:
docker compose -f 05_ros2_control/compose.ros2_control.yaml up ros2_control_demos_custom_rt
This setup allows you to leverage all your VS Code extensions while developing in a standardized environment.
01_ros2_gui/
03_ros2_realsense/
04_ros2_gz_sim/
05_ros2_control/
06_universal_robot/
07_ros2_cartesian_robot_tutorial/
08_ros2_rmw_implementation/
Tools:
- Rviz
- Plotjuggler
- Gazebo harmonics with cartesian robot example (gantry)
- ros2 control
- Realsense with ROS 2 and opencv bridges with simple examples
- Zenoh setup
Todo:
-
BT Tree with simple examples
-
nav2
-
tesseract
-
PDDL and PlanSys2 : https://github.com/fjrodl/PDDL-course https://kas-lab.github.io/mirte_playground/mirte_pddl.html
-
Trainings: Turtlebot4 : TODO: Docker images: https://github.com/IntelligentRoboticsLabs/docker_infrastructure/tree/main
-
Training: Manipulation : https://gitlab.cc-asp.fraunhofer.de/ipa326/manipulation_training
-
Training: DDS
-
Convince : https://convince-project.github.io/AS2FM/installation.html
docker compose -f compose.ros2_gz_harmonic.yaml updocker compose -f compose.ros2_camera.yaml upTest the realsense:
Install the realsense SDK:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key F6B0FC61
sudo add-apt-repository "deb http://realsense-hw-public.s3.amazonaws.com/Debian/apt-repo $(lsb_release -cs) main"
sudo apt update
sudo apt install librealsense2-utilsRun the viewer:
realsense-viewer# build
docker compose -f 05_ros2_control/compose.ros2_control.yaml build \
--build-arg USER_ID=$(id -u) \
--build-arg GROUP_ID=$(id -g) \
ros2_control_demos_custom_rt# run
docker compose -f 05_ros2_control/compose.ros2_control.yaml up ros2_control_demos_custom_rt