
Explore the ROS 2 nav2 navigation stack with hands-on gazebo simulations. Perform SLAM to map environments and navigate a robot while learning stack internals and adapting a custom robot.
Discover how the ROS 2 Nav2 navigation stack accelerates robotics development by providing a standard, open source framework for safe, map-based navigation using SLAM and the navigation stack.
Follow the practical navigation course with solid prerequisites, especially Rust basics; in hands-on lessons, code as shown and consult the official docs later to deepen understanding.
Install the navigation stack and essential tools on ubuntu 22.04, preparing you for ROS 2 Nav2 features with recommended prerequisites and setup steps.
Learn to install and configure ROS 2 on Ubuntu 22.04, including apt setup, upgrading, choosing the humble desktop, and sourcing the setup script to enable navigation stack.
Install the ROS 2 navigation stack on Ubuntu 22.04, then install the navigation packages and bringup components, plus the turtlebot3 packages for a complete simulation-based setup.
Install tools for course, including the rust build tool cargo, git, terminator for terminal layouts, and Visual Studio Code with ROS 2 extensions to work with navigation and SLAM code.
Generate a map of the world using SLAM to enable navigation. Learn how to run SLAM with a simulated robot in Gazebo, save the map, and prepare for navigation.
Launch a turtlebot3 in a gazebo simulation with ROS 2, configure the model, and control a differential drive robot via keyboard to collect laser scan and prepare for slam-based mapping.
Generate and save a map with slam in ROS 2 using Gazebo and Cartographer. Move the robot to collect laser scans and save the map with the map saver.
Discover what the map contains, including the gm file image with white free space, black obstacles, gray unknown areas, YAML metadata defining 0.05 m per pixel and occupancy thresholds (65%/25%).
Launch TurtleBot3 in Gazebo, run SLAM to generate a map of the house world, then save the map as an image and YAML file for the TurtleBot3 house.
Run slam with cartographer in sim time to map three houses, validate walls and unknown spaces, then save the map as my house using the map server.
Explore the two-step process from mapping with slam to navigating with the nav2 stack, using the generated map to move from point a to point b while avoiding obstacles.
Switch to cyclone DDS to fix map loading in ROS 2 Nav2, export the rmw implementation, and edit waffle.yaml to enable differential motion model, then reboot.
Activate ROS 2 Nav2 to navigate a TurtleBot3 in Gazebo using a saved map, set 2D pose estimate, and issue navigation goals to reach targets while avoiding obstacles.
Explore the waypoint follower in nav2, preparing multiple navigation goals for a robot to visit a sequence of waypoints, with an option to follow them one-by-one or continuously without stops.
Learn how the navigation stack dynamically avoids newly appearing obstacles not in the map by updating paths in real time, using Gazebo simulations to insert objects and test re-planned routes.
Practice robot navigation using the turtlebot3_house map in Gazebo by loading the map, launching the navigation stack, and guiding the robot through small, sequential room goals and waypoints.
Explore ROS 2 Nav2 to build a house map with SLAM in gazebo, estimate the robot's 2D pose, and navigate through waypoints with a global and local planner.
Explore the navigation 2 stack by examining its main components and architecture, then learn how slam creates a map and how the robot uses it, through hands-on, component-by-component practice.
Demonstrate how the global planner uses a cost map to compute a path to a destination, then the local planner follows it with safety margins.
Explore how global and local cost maps, inflation radius, and robot radius influence navigation in ROS 2 Nav2, using dynamic reconfigure to tune planning behavior.
discover how recovery behaviors in ros 2 nav2 automatically fix navigation when the global or local planner fails, using turning, backing up, and map clearing to reach the goal.
Explore how tf and tf2 manage map, odometry, and robot frames in the ros nav stack, combining long-term map precision with short-term odometry smoothing to track position over time.
Learn to build a custom Gazebo world to simulate your robot for ROS 2 Nav2, enabling development and testing without a physical robot.
Build and save a custom Gazebo world using the building editor, adding walls, doors, windows, textures, and stairs, then save as test_world with an SDF model and import it.
Import a floor plan into the gazebo building editor, set the scale, draw walls and doors, apply textures, and save to create a ready-to-use floor plan world in Gazebo.
Learn to add objects to a Gazebo world by inserting models, moving and rotating them, and saving scene as a world file named my world dot world with SDF/XML description.
Learn to use a custom simulated world in gazebo with turtlebot3 under ros 2, clone and overlay the turtlebot3 gazebo package, build with colcon, and launch navigation in the world.
Clone the 3d0 package, add a custom Gazebo world, create a launch file, build and run Turtlebot3 in the new world, and set starting pose to -1 and -5 for teleoperation.
Generate a map with SLAM and navigate a turtlebot3 in a custom world using ROS 2 Nav2 and Cartographer, then save the map and use waypoints for door navigation.
Edit the map image in GIMP to fill missing pixels, strengthen walls, and mark obstacles, improving accuracy without redoing SLAM. For larger areas, merge multiple maps to cover the space.
Create a custom gazebo world from a generated maze, spawn the robot at an entrance, and use ros 2 nav2 to navigate while performing slam with turbo three and waypoints.
Create a gazebo world by importing a generated maze, set walls to 1.2 metres, place doors and walls, add textures and objects, and save as maze.world.
Add the turtlebot3 robot to a gazebo world with a launch file, set the Masdar World, and spawn at zero coordinates; build, source the workspace, and test movement.
Create a custom maze map with slam using Cartographer on TurtleBot3 in Gazebo, save the map, and then use Nav2 to plan and follow a path with waypoints.
Learn to adapt a custom robot for the nav stack by creating transforms, publishing odometry and sensor data, and translating velocity into motor commands, then launch navigation with parameters.
Learn tf transforms and urdf basics to describe robot frames and their relationships for navigation with map, odom, and the base link to base scan transform.
Publish odometry from wheel encoders to the navigation stack and base link to map transform, and consider ros2 control for closed-loop motion with sensor fusion options.
Start your robot, run slam_toolbox to generate and save a map, then launch nav2 to enable navigation using the created map.
Learn to start slam and navigation on a custom robot with a single launch file by adapting turtlebot3 launch settings for nav2 and cartographer, including key parameters.
Interact programmatically with Nav2 navigation stack using topics, services, and actions, from setting the initial pose to sending navigation goals with the Nav2 simple commander Python API.
Discover how ROS 2 Nav2 uses initial pose topics and navigate to pose action, detailing geometry messages, quaternions, headers, and the BT Navigator, plus a simple Python API.
Learn to install the ros 2 nav2 simple commander API and set the robot’s initial pose from Python using a pose stamped message, with quaternion handling via a basic navigator.
Initialize the simple commander API, set the initial pose, and publish a Nav2 goal as a stamped pose; monitor navigation until completion, then retrieve the result and feedback.
learn to use the simple command api to set the initial pose, navigate to goals, and follow multiple waypoints with nav.follow_waypoints, plus a downloadable template to accelerate python integration.
Practice with the simple commander api to patrol three houses in gazebo, using the navigation stack and the generated map, and write a Python program to set the initial pose.
Use the simple commander API to patrol a robot through waypoints in Gazebo using the Nav2 stack, with map setup and initial pose, looping over waypoints.
Apply nav2 to your own project by building a Gazebo world, integrating the commander API, exploring topics and actions, and advancing with ROS 2 control and MoveIt 2.
You have learned ROS 2 basics and want to start with SLAM and the Navigation 2 stack?
Or you have already started but you feel completely lost?
In this course you will finally understand what the Navigation 2 stack is, step by step. And you will be able to apply this knowledge to your own ROS2 robotics projects.
And to get started, no need to buy any hardware! You will be able to complete the course with a Gazebo simulation.
-- Why this course?
I realized that (while doing it myself) learning the Navigation stack is really not easy. If you thought that learning ROS2 was hard, then wait until you start with Nav2!
There are not so many resources online, and just getting started with the existing documentation can be a nightmare - unless you’re already a ROS expert. For many parts, in order to understand, you need so many prerequisites in ROS2 that it can become overwhelming.
Because of this, understanding Navigation2 would take you weeks of painful learning and frustration. That’s actually exactly what happened to me. And I don’t wish that to you.
That’s why I created this course: so you can SAVE COUNTLESS HOURS and learn the Navigation 2 stack with minimum knowledge of ROS2, in the easiest possible way.
Instead of dropping you in a sea of documentation I will guide you to make you experiment first, and then progress in a smooth way towards a practical understanding.
To be clear, this course is not for complete ROS2 beginners, you need to have some ROS2 basics. But then, once you have the basics, you will be able to easily follow the course and learn Nav2 efficiently.
My goal is to make Navigation accessible to anyone with a basic to intermediate level of ROS2.
-- How do I teach?
If you’ve taken other ROS 2 courses from me you know that I’m not here to waste your time.
My teaching method is quite simple:
Step by step
Going to the point
Learn while doing
Also I strongly focus on the “why” behind what you learn. The goal is not just to make you blindly repeat some steps, but to understand why those steps matter.
And don’t take my word for it - here are some reviews from fellow students/researchers/engineers/teachers who took my ROS 2 course on Udemy:
“Best course on ROS2 I’ve taken! Other courses (different sites/platforms) made it confusing but this course makes it so clear and easy to understand while letting you try on your own. I am definitely learning a lot in a painless and simple way. I should have gotten this course from the beginning.” - Miguel Martinez G.
“Overall very satisfied. I’ve a strong background in programming, but at a higher level (web mostly) and the elegant, fluent and clean approach of this course has leveraged my introduction to the ROS environment in a short amount of time, without the struggle of going through a lot of documentation” - Devis D.
“This is the best course in ROS2 I’ve ever seen” - Aleksandar K.
“Great course content, straight to the point and very easy to follow” - Kevin M.
-- What will you do and learn in the course?
You will follow a progression line that allows you to experiment first, so you get an intuitive approach to Navigation. And only then we reinforce the learning with some explanations and a bit of theory, followed by more practice.
In the course you will:
Install ROS2 and the Navigation 2 stack.
Generate and save a map with SLAM (Simultaneous Localization and Mapping).
Make a robot navigate using this map.
Understand how Navigation 2 works and what are the different components of the stack: global planner, local planner, recovery behavior, TFs, etc.
Build a custom Gazebo world to be able to create a simulation of your own environment.
Discover the steps to adapt your own robot for the Navigation 2 stack.
Interact with Nav2 using the Python Simple Commander API.
Each section is built on top of the previous ones, and you will reinforce what you’ve learned with extra challenges to practice more.
So, to learn the Navigation stack and save countless hours, don’t wait anymore and enroll in the course today!
Oh and you don’t take any risk here, because you also get a 30-day money back guarantee if you’re not fully satisfied - no questions asked.
See you in the course!
Note - this course is not for you if:
You are a complete ROS 2 beginner. In this case, you need to learn ROS 2 Basics first
You want to learn the Navigation 1 Stack for ROS1 (not exactly the same thing)