01Class-based node-like structures
A class that owns its state, publishers and timers, the shape every ROS 2 node has.
60–90 minOpen lesson 02Callbacks and lambdas
Passing behaviour into objects, binding member functions, and callback lifetimes.
60–90 minOpen lesson 03Event-driven programming
An event loop, dispatching events to handlers, and never blocking inside a handler.
60–90 minOpen lesson 04Asynchronous patterns
Futures, worker threads and posting results back to the main loop safely.
60–90 minOpen lesson 05Clean API design
Small interfaces, strong types, const-correctness and hard-to-misuse functions.
45–75 minOpen lesson 06Logging patterns
Log levels, structured messages, throttling and keeping logging out of hot loops.
45–75 minOpen lesson 07Configuration structs
Grouping settings in a struct, defaults, validation and loading from a file or map.
45–75 minOpen lesson 08Thread-safe queues
A blocking queue with a mutex and condition variable for passing work between threads.
60–90 minOpen lesson 09Timers and periodic tasks
Fixed-rate loops with steady_clock and sleep_until, without drift.
45–75 minOpen lesson 10ROS 2 nodes in C++
rclcpp::init, rclcpp::Node, spin and shutdown.
60–90 minOpen lesson 11Publishers
create_publisher, message types, QoS depth and wall timers.
60–90 minOpen lesson 12Subscribers
create_subscription, callback signatures, shared-pointer messages and QoS matching.
60–90 minOpen lesson 13Services
Request and response calls with create_service and create_client.
60–90 minOpen lesson 14Actions
Goals with feedback, results and cancellation using rclcpp_action.
90–120 minOpen lesson 15Parameters
declare_parameter, get_parameter, defaults, and reacting to changes.
60–90 minOpen lesson 16Launch files
Starting several nodes with parameters and remappings from one Python launch file.
45–75 minOpen lesson 17TF2 transforms
Coordinate frames, broadcasting transforms and looking them up in C++.
90–120 minOpen lesson 18URDF and robot_state_publisher
Describing links and joints, and publishing the robot's transforms from joint states.
90–120 minOpen lesson 19Gazebo simulation
Spawning a URDF in Gazebo, bridging topics and controlling a simulated robot.
90–120 minOpen lesson 20Navigation stack basics (Nav2)
Maps, localization, planners and controllers, and sending a NavigateToPose goal.
90–120 minOpen lesson 21Writing your own ROS 2 packages
package.xml, CMakeLists.txt with ament_cmake, installing targets and testing.
90–120 minOpen lesson 22Multi-threaded executors and callback groups
SingleThreadedExecutor vs MultiThreadedExecutor and avoiding blocked callbacks.
90–120 minOpen lesson 23Lifecycle nodes
Managed states: unconfigured, inactive, active, and the transition callbacks.
90–120 minOpen lesson