In the tutorials below, we will cover the ROS 2 Navigation Stack (also known as Nav2) in detail, step-by-step. The ROS 2 Navigation Stack is a collection of software packages that you can use to help your mobile robot move from a starting location to a goal location safely. Here will be our final output:
Credit to Ramkumar Gandhinathan and Lentin Joseph’s awesome book ROS Robotics Projects Second Edition (Disclosure: As an Amazon Associate I earn from qualifying purchases) for the world file, which comes from their book’s public GitHub page.
The ROS 2 Navigation Stack can be used in a number of real-world robotic applications:
- Ground Delivery
- Hospitals and Medical Centers
- Hotels (Room Service)
- And more…
In this project, we will work with a simulated robot in a simulated world. Roboticists like to simulate robots before building them in order to test out different algorithms. You can imagine the cost of making mistakes with a physical robot can be high (e.g. crashing a mobile robot into a wall at high speed means lost money).
Let’s get started!
- ROS 2 Foxy Fitzroy installed on Ubuntu Linux 20.04
- If you are using another ROS 2 distribution, you will need to replace ‘foxy’ with the name of your distribution everywhere I mention ‘foxy’ in this tutorial.
- I highly recommend you get the newest version of ROS 2. If you are using a newer version of ROS 2, you can still follow most of the steps in this tutorial. I will point out the areas where you will need to do things differently.
- You have already created a ROS 2 workspace. The name of our workspace is “dev_ws”, which stands for “development workspace.”
For future reference, here is a complete package (named ‘two_wheeled_robot‘) I developed that uses both URDF and SDF robot model files with the ROS 2 Navigation Stack. You can use this as a template after you have gone through the tutorials below.
Complete the following five tutorials in order, step by step. When you are done, you will have a deep understanding of the ROS 2 Navigation Stack and will be ready to confidently use this package in your own robotics projects.
- How to Create a Simulated Mobile Robot in ROS 2 Using URDF
- Set Up the Odometry for a Simulated Mobile Robot in ROS 2
- Sensor Fusion Using the Robot Localization Package – ROS 2
- Set Up LIDAR for a Simulated Mobile Robot in ROS 2
- Navigation and SLAM Using the ROS 2 Navigation Stack