Four-session ROS2 bootcamp covering the full arc from mental model to autonomous robot behavior.
| # | Title | Core Skill |
|---|---|---|
| 1 | Mental Model + Survival Skills | Nodes, topics, CLI tools |
| 2 | Build Real ROS Nodes | Publisher, subscriber, colcon workspace |
| 3 | Simulation and Visualization | Gazebo, RViz2, sensor topics |
| 4 | Integration Project | Closed-loop system: sensor → decision → action |
All sessions run in the same Docker container. No ROS2 installation needed on the student machine — only Docker.
cd docker/
docker compose buildbash docker/start.sh 1 # Session 1
bash docker/start.sh 2 # Session 2
bash docker/start.sh 3 # Session 3
bash docker/start.sh 4 # Session 4docker exec -it ros2_bootcamp bashOpen as many terminals as needed — each docker exec opens a new one.
bash docker/start.sh stopROS_bootcamp/
├── README.md
├── docker/ ← Shared Docker setup (build once, use for all sessions)
│ ├── Dockerfile
│ ├── docker-compose.yml
│ ├── entrypoint.sh
│ ├── patch_worlds.py
│ └── start.sh
├── session_01/
│ ├── README.md ← Session 1 outline
│ └── workspace/ ← Files available inside container at ~/workspace
│ ├── demo_publisher.py
│ ├── demo_subscriber.py
│ └── modify_me.py
├── session_02/
│ ├── README.md ← Session 2 outline
│ └── workspace/
│ ├── fake_sensor.py
│ ├── processor.py
│ └── processor_todo.py
├── session_03/
│ ├── README.md ← Session 3 outline
│ └── workspace/
│ ├── tb3_sim.launch.py
│ ├── scan_subscriber.py
│ ├── wall_follower_solution.py
│ ├── wall_follower_todo.py
│ └── ...
└── session_04/
├── README.md ← Session 4 outline
└── workspace/
├── obstacle_avoider_todo.py
└── obstacle_avoider_solution.py
- Ubuntu (20.04 or 22.04)
- Docker + Docker Compose
- For sessions 3 and 4: a display (GUI required for Gazebo + RViz2)
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
# Log out and back in
docker run hello-world # verifyIf a student has ROS2 Humble installed natively:
# Install TB3 packages (needed for sessions 3 and 4)
sudo apt install ros-humble-turtlebot3 ros-humble-turtlebot3-simulations ros-humble-gazebo-ros-pkgs
# Set environment
export TURTLEBOT3_MODEL=waffle
export LIBGL_ALWAYS_SOFTWARE=1
# Run setup check (session 3 only)
bash session_03/workspace/setup_check.shSessions 1 and 2 only need ROS2 Humble — no extra packages.