A Laptop

Don't forget the power cord and travel adapters (as needed). If you want, you can bring a joystick to be used for teleoperation, but you can also just use a keyboard.


The preferred operating system is Ubuntu 22.04 / ROS 2 Iron, but you may be able to use other combinations with some effort.

Gazebo Classic

This is the version shipped with ROS 2 Iron.

ROS Packages

You should install and compile the packages listed in the Software Setup Instructions listed below, using vcstool file.

Some Familiarity with ROS...

You're attending a ROS conference, so it is assumed you'll have some familiarity with ROS 2 command-line tools, such as compiling with colcon, running and writing launch files and the structure of YAML files. C++ will be discussed but you will not need to write any code.

...But Not TOO Much

This workshop is intended for people seeking an introduction to ROS Navigation. If you've been to multiple ROSCons, given a talk at ROSCon or already have experience running robots around using Nav, this workshop may be too basic for you.


Tech Slow Start

08:00 AM - 08:30 AM

Mingle, get wifi connected and make sure everything is working

Your New Robot

08:30 AM - 09:00 AM

Generate a robot, run it in simulation, visualize in RViz and explore the ROS graph.


09:00 AM - 09:30 AM

Configure teleop for your robot and collect a bag file of the simulated environment.


09:30 AM - 10:30 AM

This section will cover converting the bag file into a static map and provide advice for getting loops to close.

Coffee & Code

10:30 AM - 11:00 AM

Coffee break and/or continue working

Global Planning on a Static Map

11:00 AM - 12:00 PM

Given the newly created map, configure a minimalist costmap with just the static map, and run the global planner offline to get initial global plans.


12:00 PM - 01:00 PM

nom nom nom


01:00 PM - 01:30 PM

This portion is reserved for answering questions and solving problems.


01:30 PM - 02:15 PM

Use the static map to properly configure the robot's localization.


02:15 PM - 03:00 PM

Configure the global and local costmaps to integrate sensor data.

Local Planning

03:00 PM - 03:30 PM

Configure the local planner and learn how to debug issues.

Coffee & Code

03:30 PM - 04:00 PM

Coffee break and/or continue working

High Level Coordination

04:00 PM - 04:30 PM

Participants will learn about behavior trees, state machines and the other high level coordination needed for reliable navigation.

Wrap Up

04:30 PM - 05:00 PM

Wrap up work

Software Setup Instructions

Setup Up Your Folder Structure / Clone Repos

  • You can use your own colcon workspace, but you may want to create a clean one for this workshop.
  • If you are creating one, run mkdir ~/ros2_ws/src -p
  • cd ~/ros2_ws
  • wget
  • vcs import --recursive < repos.yaml
  • You may also want to create a new empty git repo for the new robot you'll create.
    • mkdir ~/ros2_ws/src/my_new_robot
    • cd ~/ros2_ws/src/my_new_robot
    • git init

Install More Dependencies

  • cd ~/ros2_ws,
  • rosdep install -r --from-paths src --ignore-src --rosdistro iron -y

Build the ROS Workspace

  • source /opt/ros/iron/setup.bash
  • colcon build --symlink-install