About This Course
Mastering Autonomous Mobile Robots with ROS 2
Build, Program, and Deploy Your Own Self-Driving Robot
Welcome to the future of robotics! This course is designed to take you from a curious developer to a skilled Robotics Software Engineer. Using ROS 2 (the industry-standard Robot Operating System), you will bridge the gap between code and physical movement by building a real autonomous machine.
Why This Course?
Our philosophy is simple: Learning is an Active Process. As Dale Carnegie said, “We learn by doing; only knowledge that is used sticks in your mind.” To ensure you master these concepts for your future career, every section follows a proven three-step framework:
-
Theoretical Foundations: Clear explanations of the “why” behind the technology.
-
Practical Examples: Quick, hands-on exercises to see the code in action.
-
Real-World Application: Implementing the functionality directly onto a robot.
Learning Objectives
Requirements
- You don't need to be a robotics expert to start. If you have the basics, we’ll handle the rest.
- Basic Programming: Familiarity with either Python or C++.
- OS Basics: Basic knowledge of Linux (Ubuntu).
- No ROS Experience Required: We start from scratch with ROS 2.
- No Theory Required: We explain the robotics math as we go.
- No Hardware Required: A standard PC is all you need.
Target Audience
- Enthusiasts & Makers: Anyone obsessed with self-driving tech and DIY robotics.
- Software Developers: Coders looking to transition into the world of hardware and ROS 2.
- Students & Engineers: Those wanting to build a professional-grade portfolio from scratch.
- ROS Veterans: Developers looking to migrate their skills from ROS 1 to ROS 2.
- Career Changers: Python or C++ beginners curious about the high-growth field of autonomous vehicles.
Curriculum
Introduction
Introduction to the Program00:00:00
Program Presentation00:00:00
Get the Most out of the Course00:00:00
Setup
3. Install ROS 2 Jazzy on Ubuntu 24.04 – LAB00:00:00
4. Install ROS 2 Humble on Ubuntu 22.04 – LAB00:00:00
5. Configure the Development Environment – LAB00:00:00
6. Configure the Development Environment in Raspberry Pi – LAB00:00:00
7. Install ROS 2 on Raspberry Pi – LAB00:00:00
8. Getting Started with the Simulated Robot – LAB00:00:00
9. Assemble the Robot – Part 1 – LAB00:00:00
10. Assemble the Robot – Part 2 – LAB00:00:00
11. Assemble the Robot – Part 3 LAB00:00:00
Introduction to ROS 2
1. Why a Robot Operating System00:00:00
2. What is ROS 200:00:00
3. Why a NEW Robot Operating System00:00:00
4. ROS 2 Architecture00:00:00
5. Hardware Abstraction00:00:00
6. Low-Level Device Control00:00:00
7. Messaging Between Process00:00:00
8. Package Management00:00:00
9. Architecture of a ROS 2 Application00:00:00
11. Create and Activate a Worksapce – LAB11:19
12. Simple Publisher – PY18:16
13. Simple Publisher – C++00:00:00
14. Simple Subscriber – PY00:00:00
15. Simple Subscriber – C++00:00:00
Quiz Introduction to ROS 2
Locomotion
1. Robot Locomotions5:55
2. Mobile Robots4:16
3. Friction Effects00:00:00
4. Robot Description00:00:00
5. URDF00:00:00
6. Create the URDF Model – LAB31:24
7. Rviz 25:32
8. Parameters00:00:00
9. Parameters – PY00:00:00
10. Parameters – C++00:00:00
11. ROS 2 Parameter CLI – LAB00:00:00
13. Visualize the Robot – LAB00:00:00
14. Launch Files00:00:00
15. Visualize the Robot with Launch Files – LAB00:00:00
17. Gazebo00:00:00
18. Simulate the Robot – LAB00:00:00
19. Launch the Simulation – LAB00:00:00
Quiz Locomotion
Control
1. ROS 2 Control00:00:00
2. Control Types00:00:00
3. ros2_control with Gazebo – LAB00:00:00
4. YAML Configuration File00:00:00
5. Configure ros2_control – LAB00:00:00
6. Launch the Controller – LAB00:00:00
7. ros2_control CLI – LAB00:00:00
Kinematics
1. Robot Kinematics00:00:00
2. Pose of a Mobile Robot00:00:00
3. Translation Vector00:00:00
4. Introduction to Turtlesim – LAB00:00:00
5. Translation Vector – PY00:00:00
6. Translation Vector – C++00:00:00
7. Rotation Matrix00:00:00
8. Rotation Matrix – PY00:00:00
9. Rotation Matrix – C++00:00:00
10. Transformation Matrix00:00:00
Differential Kinematics
1. Differential Kinematics00:00:00
2. Velocity of a Mobile Robot00:00:00
3. Linear Velocity00:00:00
4. Angular Velocity00:00:00
5. Velocity in World Frame00:00:00
6. Differential Forward Kinematics00:00:00
7. Simple Speed Controller00:00:00
8. Simple Speed Controller – PY00:00:00
9. Simple Speed Controller – C++00:00:00
10. Launch the Simple Controller – LAB00:00:00
11. Teleoperating with Joystick – LAB00:00:00
12. Using the diff_drive_controller – LAB00:00:00
TF2 Library
1. The TF2 Library00:00:00
2. Operations with Transformations00:00:00
3. Static and Dynamic Transformations00:00:00
4. Simple TF2 Static Broadcaster – PY00:00:00
5. Simple TF2 Static Broadcaster – C++00:00:00
6. Simple TF2 Broadcaster – PY00:00:00
7. Simple TF2 Broadcaster – C++00:00:00
8. ROS 2 Services00:00:00
9. Service Server – PY00:00:00
10. Service Server – C++00:00:00
11. Service Client – PY00:00:00
12. Service Client – C++00:00:00
13. Simple TF2 Listener – PY00:00:00
14. Simple TF2 Listener – C++00:00:00
15. Angle Rapresentations00:00:00
16. Euler Angles00:00:00
17. Quaternion00:00:00
18. Euler to Quaternion – PY00:00:00
19. Euler to Quaternion – C++00:00:00
20. TF2 Tools – LAB00:00:00
Odometry
1. Where is the Robot00:00:00
2. The Local Localization Challenge00:00:00
3. Wheel Odometry00:00:00
4. Differential Inverse Kinematics00:00:00
5. Differential Inverse Kinematic – PY00:00:00
6. Differential Inverse Kinematic – C++00:00:00
7. Wheel Odometry – Position00:00:00
8. Wheel Odometry – Orientation00:00:00
9. Wheel Odometry – PY00:00:00
10. Wheel Odometry – C++00:00:00
11. Publish Odometry Message – PY00:00:00
12. Publish Odometry Message – C++00:00:00
14. Broadcast Odometry Transform – PY00:00:00
15. Broadcast Odometry Transform – C++00:00:00
Probability for Robotics
1. Motivation7:10
2. Random Variables00:00:00
3. Conditional Probability00:00:00
4. Probability Distributions00:00:00
5. Gaussian Distributions00:00:00
6. Total Probability Theorem00:00:00
7. Bayes Rule00:00:00
8. Sensor Noise00:00:00
Sensor Fusion
1. Advantages of having Multiple Sensors6:28
2. Gyroscope00:00:00
3. Accelerometer and IMU00:00:00
4. Simulate IMU Sensor – LAB00:00:00
5. Gazebo ROS Bridge – LAB00:00:00
6. Kalman Filter00:00:00
7. Filter Initialization – PY00:00:00
8. Filter Initialization – C++00:00:00
9. Measurement Update00:00:00
10. Measurement Update – PY00:00:00
11. Measurement Update – C++00:00:00
12. State Prediction00:00:00
13. State Prediction – PY00:00:00
14. State Prediction – C++00:00:00
15. Localization with Kalman Filter – LAB00:00:00
16. Extended Kalman Filter (EKF)00:00:00
17. IMU Republisher – PY00:00:00
18. IMU Republisher – C++00:00:00
19. Sensor Fusion with robot_localization – LAB00:00:00
Build the Robot
1. Mechanics and Electronics00:00:00
3. Configure the Development Environment – LAB00:00:00
4. Install ROS 2 on Raspberry Pi – LAB00:00:00
5. Arduino and ROS 200:00:00
6. Publisher Node with Arduino – LAB00:00:00
7. Publisher Node with Arduino – PY00:00:00
8. Publisher Node with Arduino – C++00:00:00
9. Test Publisher Node with Arduino – LAB00:00:00
10. Subscriber Node with Arduino – LAB00:00:00
11. Subscriber Node with Arduino – PY00:00:00
12. Subscriber Node with Arduino – C++00:00:00
13. Test Subscriber Node with Arduino – LAB00:00:00
14. DC Motors with Arduino – LAB00:00:00
15. Encoders with Arduino – LAB00:00:00
16. ROS 2 Lifecycle Nodes00:00:00
17. Create a Lifecycle Node – PY00:00:00
18. Create a Lifecycle Node – C++00:00:00
19. ROS 2 Lifecycle CLI – LAB00:00:00
20. ros2_control Interface – Declaration – C++00:00:00
21. ros2_control Interface – Definition – C++00:00:00
22. ros2_control Interface – Plugin – C++00:00:00
23. ros2_control Interface – Configure – LAB00:00:00
24. Robot Control with Arduino – LAB00:00:00
25. ROS DOMAIN ID – LAB00:00:00
26. MPU6050 IMU Driver – PY00:00:00
27. MPU6050 IMU with ROS 2 – LAB00:00:00
28. Assemble the Robot – Part 1 – LAB00:00:00
29. Assemble the Robot – Part 2 – LAB00:00:00
30. Assemble the Robot – Part 3 – LAB00:00:00
31. Launch the Complete Robot – LAB00:00:00
Conclusions
1. Recap2:35
Global localization
1. Where am I00:00:00
2. Robot Localization00:00:00
3. Robotics Convention for Localization00:00:00
4. Why a Robotics Convention for Localization00:00:00
5. Gazebo Worlds and Models00:00:00
6. Give an house to the Robot – LAB00:00:00
7. Local and Global Localization00:00:00
8. Local Localization00:00:00
9. Global Localization00:00:00
10. Wheel Odometry Errors00:00:00
11. Laser Odometry Errors00:00:00
12. The Real Purpose of Global Localization00:00:00
13. Error Propagation00:00:00
14. Odometry Motion Model00:00:00
15. PYOdometry Motion ModelPY00:00:00
16. Odometry Motion Model with Noise – PY00:00:00
17. Odometry Motion Model – C++00:00:00
18. Odometry Motion Model with Noise – C++00:00:00
19. Odometry Motion Model – LAB00:00:00
Sensor for Localization and Mapping
1. What is a Map00:00:00
2. How Robots Perceive the World00:00:00
3. Sensors for Self-Driving Robots00:00:00
4. 1D Sensors – Sonar00:00:00
5. 2D Sensors – LiDAR00:00:00
6. Add a 2D LiDAR to the Robot – LAB10:48
7. Simulate a 2D LiDAR – LAB00:00:00
8. 3D Sensors – RGBD Cameras and 3D LiDAR00:00:00
9. Speed and Separation Monitoring00:00:00
10. twist_mux00:00:00
11. Twist Relay – PY00:00:00
12. Twist Relay – C++00:00:00
13. Configure twist_mux – LAB00:00:00
14. Use twist_mux – LAB00:00:00
15. Safety StopPY00:00:00
16. Safety Stop – C++00:00:00
17. Safety Stop – LAB00:00:00
18. ROS 2 Actions00:00:00
19. Create an Action Server – PY00:00:00
20. Create an Action Server – C++00:00:00
21. Create an Action Server – LAB00:00:00
22. Create an Action Client – PY00:00:00
23. Create an Action Client – C++00:00:00
24. Create an Action Client – LAB00:00:00
25. Speed and Separation Monitoring – PY00:00:00
26. Speed and Separation Monitoring – C++00:00:00
27. Speed and Separation Monitoring – LAB00:00:00
28. Display Markers in RViz – PY00:00:00
29. Display Markers in RViz – C++00:00:00
30. Display Markers in RViz – LAB00:00:00
Map Representation
1. Map Representation00:00:00
2. Topological Maps00:00:00
3. OccupancyGrid00:00:00
4. Octomap and Voxel Grids00:00:00
5. Introduction to Nav200:00:00
6. ROS 2 Lifecycle Nodes00:00:00
7. Create a Lifecycle Node – PY00:00:00
8. Create a Lifecycle Node – C++00:00:00
9. ROS 2 Lifecycle CLI – LAB00:00:00
10. Nav2 map_server00:00:00
11. Nav2 map_server – LAB00:00:00
12. Quality of Service00:00:00
13. Multi QoS Publisher – PY00:00:00
14. Multi QoS Publisher – C++00:00:00
15. Multi QoS Publisher – LAB00:00:00
Mapping with known Poses
Mapping with known Poses00:00:00
Occupancy Grid Mapping00:00:00
Occupancy Grid Publisher – PY00:00:00
Occupancy Grid Publisher – C++00:00:00
Occupancy Grid Publisher – LAB00:00:00
Understand LaserScan Message00:00:00
Draw Obstacles on Occupancy Grid – PY00:00:00
Draw Obstacles on Occupancy Grid – C++00:00:00
Draw Obstacles on Occupancy Grid – LAB00:00:00
Laser Model00:00:00
Laser Model – PY00:00:00
Laser Model – C++00:00:00
Laser Model – LAB00:00:00
Probabilistic Occupancy Grid00:00:00
Probabilistic Occupancy Grid – PY00:00:00
Probabilistic Occupancy Grid – C++00:00:00
Probabilistic Occupancy Grid – LAB00:00:00
Localization with known Map
Localization with known Map00:00:00
Map-based Localization00:00:00
Single and Multiple Hypothesis Localization00:00:00
Markov Localization00:00:00
Randomized Sampling00:00:00
Monte Carlo Localization00:00:00
Nav2 AMCL00:00:00
Nav2 AMCL – LAB00:00:00
Using Nav2 AMCL – LAB00:00:00
Simultaneous Localization and Mapping
Simultaneous Localization and Mapping00:00:00
Why another Mapping approach?00:00:00
Why another Mapping approach? – LAB00:00:00
Chicken and egg problem00:00:00
Particle Filter SLAM00:00:00
EKF SLAM00:00:00
Graph SLAM00:00:00
Graph SLAM – Front-End and Back-End00:00:00
slam_toolbox00:00:00
slam_toolbox – LAB00:00:00
Using slam_toolbox – LAB00:00:00
Start all the Functionalities – LAB00:00:00
Conclusions
1. Recap00:00:00
Path Planning
1. Path Planning00:00:00
2. Plan and Execution00:00:00
3. Configuration Space00:00:00
4. From Path Planning to Graph Search00:00:00
5. Graph Construction00:00:00
6. OccupancyGrid00:00:00
7. Introduction to Nav200:00:00
8. ROS 2 Lifecycle Nodes00:00:00
9. Create a Lifecycle Node – PY00:00:00
10. Create a Lifecycle Node – C++00:00:00
11. ROS 2 Lifecycle CLI – LAB00:00:00
12. Nav2 map_server00:00:00
13. Nav2 map_server – LAB00:00:00
14. ROS 2 Quality of Service00:00:00
15. Multi QoS Publisher – PY00:00:00
16. Multi QoS Publisher – C++00:00:00
17. Multi QoS Publisher – LAB00:00:00
18. Nav2 map_server CLI – LAB00:00:00
19. Graph Search00:00:00
20. Breadth-First Search00:00:00
21. Depth-First Search00:00:00
22. Dijkstra Algorithm00:00:00
23. Dijkstra Planner – PY00:00:00
24. Dijkstra Algorithm – PY00:00:00
25. Dijkstra Planner – C++00:00:00
26. Dijkstra Algorithm – C++00:00:00
27. Dijkstra Algorithm – LAB00:00:00
28. A Algorithm00:00:00
29. A Algorithm – PY00:00:00
30. A Algorithm – C++00:00:00
31. A Algorithm – LAB00:00:00
32. Speed Test – LAB00:00:00
Motion Plannig
1. Plan and Execution00:00:00
2. Motion Planners00:00:00
3. Path Tracking00:00:00
4. PID Control00:00:00
5. PID Tuning00:00:00
6. PD Motion Planner – PY00:00:00
7. PD Motion Planner – C++00:00:00
8. LABPD Motion PlannerLAB00:00:00
9. Robot Localization00:00:00
10. Robotics Convention for Localization00:00:00
11. Why a Robotics Convention for Localization00:00:00
12. Pose of a Mobile Robot00:00:00
13. Translation Vector00:00:00
14. Rotation Matrix00:00:00
15. Transformation Matrix00:00:00
16. Transform Reference Frames00:00:00
18. Transform Coordinates in PD Motion Planner – PY00:00:00
19. Transform Coordinates in PD Motion Planner – C++00:00:00
20. PD Motion Planner Control Algotithm – PY00:00:00
21. PD Motion Planner Control Algorithm – C++00:00:00
22. Complete PD Motion Planner – LAB00:00:00
23. DWA – Dynamic Window Approach (DWB)00:00:00
24. VFH – Vector Field Histogram00:00:00
25. MPC – Model Predictive Control (MPPI)00:00:00
26. Pure Pursuit (RPP)00:00:00
27. Pure Pursuit – PY00:00:00
28. Pure Pursuit – C++00:00:00
29. Pure Pursuit – LAB00:00:00
Obstacle Avoidance
1. Obstacle Avoidance00:00:00
2. Costmap00:00:00
3. Layered Costmap00:00:00
4. Nav2 Costmap 2D00:00:00
5. Static Layer00:00:00
6. nav2_costmap_2d – Static Layer – LAB00:00:00
7. Obstacle Layer00:00:00
8. nav2_costmap_2d – Obstacle Layer – LAB00:00:00
9. Inflation Layer00:00:00
10. nav2_costmap_2d – Inflation Layer – LAB00:00:00
11. Using Costmap00:00:00
12. Dijkstra Costmap Planner – PY00:00:00
13. Dijkstra Costmap Planner – C++00:00:00
14. Dijkstra Costmap Planner – LAB00:00:00
Navigation
1. Navigation00:00:00
2. ROS 2 Actions00:00:00
3. Create an Action Server – PY00:00:00
4. Create an Action Server – C++00:00:00
Create an Action Server – LAB00:00:00
5. Create an Action Client – PY00:00:00
6. Create an Action Client – C++00:00:00
Create an Action Client – LAB00:00:00
9. Nav2 Planner00:00:00
10. nav2_planner – LAB00:00:00
11. Dijkstra Nav2 Planner – C++00:00:00
12. Dijkstra Nav2 Planner – Plugin – C++00:00:00
13. Dijkstra Nav2 Planner – LAB00:00:00
14. A Nav2 Planner – C++00:00:00
15. A Nav2 Planner – Plugin – C++00:00:00
16. A Nav2 Planner – LAB00:00:00
17. Nav2 Smoother00:00:00
18. nav2_smoother – LAB00:00:00
19. Smoothing Dijkstra Plan – C++00:00:00
20. Smoothing Dijkstra Plan – LAB00:00:00
22. Nav2 Controller00:00:00
23. nav2_controller – LAB00:00:00
24. PD Nav2 Controller – C++00:00:00
25. PD Nav2 Controller – Plugin – C++00:00:00
26. PD Nav2 Controller – LAB00:00:00
27. Pure Pursuit Nav2 Controller – C++00:00:00
28. Pure Pursuit Nav2 Controller – Plugin – C++00:00:00
29. Pure Pursuit Nav2 Controller – LAB00:00:00
30. Nav2 Lifecycle Manager00:00:00
31. nav2_lifecycle_manager – LAB00:00:00
Decision Making
1. Behavior Trees00:00:00
2. Behavior Tree Nodes00:00:00
3. How tick works00:00:00
4. Blackboard and Ports00:00:00
6. Nav2 BT Navigator00:00:00
7. nav2_bt_navigator – LAB00:00:00
8. Create a Behavior Tree – LAB00:00:00
9. Use the Behavior Tree for Navigation – LAB00:00:00
10. Improve Planner and Controller Plugins – LAB00:00:00
11. Navigate to Pose with Replanning – LAB00:00:00
12. Nav2 Behaviors00:00:00
13. Autonomous Navigation Overview00:00:00
14. nav2_behaviors – LAB00:00:00
15. Navigate to Pose with Replanning and Recoveries – LAB00:00:00
Material Includes
- Workspaces
- Hands-on Projects
- Quizzes
- Progress Tracker