Robotics is fun and ROS 2 is a must.
In this workshop, we will explore ROS 2 by playing with simulated robots.
You need to have Docker and docker compose installed. It can be docker engine: Instructions for Ubuntu are provided here
but for beginners, an easier option might be Docker Desktop: Windows Linux, Mac
I suggest cloning this repository (you need to install git first).
git clone --branch master https://github.com/AdoHaha/ros_fun.git
cd ros_fun
Use
docker compose up to pull and run the ROS 2 Jazzy container.
Access the virtual machine screen by navigating to
access the jupyter notebooks by navigating to:
on your host machine.
Open exercise 1 in Jupyter to start the workshop.
The demo uses ROS 2 Jazzy on Ubuntu 24.04.
Save your work in Jupyter and back up edited notebooks before updating the repository. Finish any running robot commands, then run these commands in the repository folder on your computer:
git pull --ff-only
docker compose pull ros2
docker compose up -d ros2The image repair fixes NumPy compatibility with the plotting and camera tools
and restores the Jupyter widget frontend. Docker downloads only layers missing
from your local cache; the amount depends on your previous image and platform.
Pulling does not
update a running container; up -d recreates it when its image changes. Your
notebooks are stored in the repository's mounted folder and persist across
container recreation.
The Polish notebooks start with a robot courier game in turtlesim: drive and sketch, send radio messages, build a control panel, collect position-based points, and implement a service that confirms a delivery. Each mission includes explanations, small challenges, expected results, hints and cleanup. TurtleBot/Gazebo and laser activities are optional extensions so slow simulation does not block the core workshop.
Start with exercise 1. The review and teaching guide describes the changes, suggested pacing and verification commands.
The student descriptions in exercises 1–11 and 15 are Polish; planning exercises 12–14 remain in English. Exercises 6–8 continue the courier story: an optional Nav2 delivery route, a standalone turtlesim compass challenge using actions, and configurable delivery rules using parameters. Nav2 is optional; exercises 7–8 do not require Gazebo or exercise 6's setup.
Exercises 9–15 belong to the separate advanced course and include a short ROS recap. The connections are explicit: subscribers supply observations, parameters configure rules, and actions remain running until their result arrives. Behavior trees choose priorities and handle interruption; planners select an action sequence from the observed state. The final optional bridge practices execution, bounded retry and replanning before adding a restaurant ROS adapter.
Behavior tree exercises start with exercises/9. Behavior Trees.ipynb: a small
deterministic demo and tasks about reactivity, memory and parallel work.
Exercise 10 connects the solved tree to the mock ROS robot; exercise 11 uses
the TurtleBot world in Gazebo with Nav2. Executable instructor solutions and
verification commands are in the solutions guide.
The Robo-restaurant starter
starts with numbered notebooks 12–14 in exercises/ and includes a Gazebo
restaurant world and demos on resources, device failures and replanning. The demos run without
ROS. Optional exercise 15 adds a controlled executor with running, success,
failure and cancellation outcomes. Connecting it to a navigating waiter remains
a later milestone.
Additional regression tests, verification runners and Docker image repairs are maintained on the dev branch. The master branch contains the teaching materials and the helpers needed to run them, alongside the repository's pre-existing infrastructure.
