References#

Lecture 13

ENPM605 – L13: Mapping and Navigation with Nav2

Covers map representations (metric, topological, semantic), occupancy grids (resolution, origin, free / occupied / unknown cell states, Bayesian / log-odds updates from LiDAR), the map frame and the REP 105 chain (world, map, odom, base_link), SLAM with slam_toolbox (scan matching, pose graph, loop closure, key parameters, online-async mapping), map saving and loading (map_saver_cli, map_server, .pgm / .yaml format), localization with AMCL (particle filter, predict/update/resample, initial pose), Nav2 stack (global and local costmaps, layers, inflation, footprint, NavFn / Smac global planners, DWB / Regulated Pure Pursuit local controllers, behavior tree and recovery behaviors), and the NavigateToPose action API (goal / feedback / result, sending goals from RViz2, nav2_simple_commander / BasicNavigator Python API).

Mapping and SLAM
nav_msgs/OccupancyGrid

ROS Message Definition

The standard occupancy grid message used throughout ROS and Nav2: header, MapMetaData (resolution, width, height, origin), and the cell data array.

https://docs.ros.org/en/api/nav_msgs/html/msg/OccupancyGrid.html
REP 105: Coordinate Frames

ROS Enhancement Proposal

Defines the standard coordinate frames for mobile platforms: world, map, odom, base_link, and base_footprint, including jump vs. drift semantics.

https://www.ros.org/reps/rep-0105.html
Nav2 + slam_toolbox Tutorial

Nav2 Documentation

Walk-through for using slam_toolbox to build a map and feed it into Nav2 for navigation.

https://docs.nav2.org/tutorials/docs/navigation2_with_slam.html
slam_toolbox Repository

Steve Macenski’s slam_toolbox

Source, parameter reference, and usage notes for the graph-based 2D SLAM library used in this lecture.

https://github.com/SteveMacenski/slam_toolbox
slam_toolbox API

ROS 2 Jazzy: slam_toolbox

Auto-generated API and parameter reference for the slam_toolbox package as shipped with Jazzy.

https://docs.ros.org/en/jazzy/p/slam_toolbox/
Localization (AMCL)
Nav2: Configuring AMCL

Nav2 Documentation

Full parameter reference for nav2_amcl, including motion model, sensor model, and adaptive resampling parameters.

https://docs.nav2.org/configuration/packages/configuring-amcl.html
nav2_amcl

ROS 2 Jazzy: nav2_amcl

API reference for the AMCL implementation that ships with Nav2 on Jazzy.

https://docs.ros.org/en/jazzy/p/nav2_amcl/
Nav2 Stack
Nav2 Documentation

Nav2: Top-level Docs

Entry point for the Nav2 navigation stack: getting started, configuration, behavior trees, plugins, and tutorials.

https://docs.nav2.org/index.html
Nav2 Concepts

Nav2: Concepts Overview

Conceptual overview of the navigation stack: planners, controllers, costmaps, recoveries, and the behavior tree navigator.

https://docs.nav2.org/concepts/index.html
Configuring Costmaps

Nav2 Configuration

Parameter reference for the global and local costmaps, including the static, obstacle, voxel, and inflation layers.

https://docs.nav2.org/configuration/packages/configuring-costmaps.html
NavFn Planner

Nav2 Configuration

Configuration of the classical Dijkstra/A* grid planner. Fast and simple, ignores kinematic constraints.

https://docs.nav2.org/configuration/packages/configuring-navfn.html
Smac Planner

Nav2 Configuration

Configuration of the Smac family of planners (Hybrid A*, lattice, Theta*) for kinematically constrained planning.

https://docs.nav2.org/configuration/packages/configuring-smac-planner.html
DWB Controller

Nav2 Configuration

Configuration of the Dynamic Window-based DWB local controller, including critic plugins and trajectory scoring.

https://docs.nav2.org/configuration/packages/configuring-dwb-controller.html
Regulated Pure Pursuit

Nav2 Configuration

Configuration of the Regulated Pure Pursuit controller, which slows the robot near obstacles and tight curves.

https://docs.nav2.org/configuration/packages/configuring-regulated-pp.html
Nav2 Behavior Trees

Nav2 Documentation

Reference for the behavior tree XML files that orchestrate planning, control, and recovery in Nav2.

https://docs.nav2.org/behavior_trees/index.html
BehaviorTree.CPP

Behavior Tree Library

Documentation for the C++ behavior tree engine that Nav2 uses to execute its navigation BTs.

https://www.behaviortree.dev/
NavigateToPose API
Simple Commander API

Nav2: nav2_simple_commander

Python convenience API (BasicNavigator) wrapping NavigateToPose and the waypoint follower.

https://docs.nav2.org/commander_api/index.html
nav2_simple_commander Source

GitHub Source

The source for BasicNavigator and friends, useful for understanding what the Python wrapper does under the hood.

https://github.com/ros-navigation/navigation2/tree/main/nav2_simple_commander
NavigateToPose Interface

ROS 2 Jazzy: nav2_msgs

The NavigateToPose action definition: goal pose, feedback fields (current pose, distance remaining, recoveries), and the empty result.

https://docs.ros.org/en/jazzy/p/nav2_msgs/interfaces/action/NavigateToPose.html
Recommended Reading
Robotics, Vision and Control (Corke)

Textbook: Chapter 14

Comprehensive treatment of mobile robot localization and mapping, including occupancy grids, particle filters, and SLAM.

https://link.springer.com/book/10.1007/978-3-031-07262-8
Modern Robotics (Lynch & Park)

Textbook: Chapter 13

Open-access textbook chapter on wheeled mobile robots covering kinematics, odometry, and motion planning.

http://hades.mech.northwestern.edu/index.php/Modern_Robotics