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
ROS Message Definition
The standard occupancy grid message used throughout ROS
and Nav2: header, MapMetaData (resolution, width,
height, origin), and the cell data array.
ROS Enhancement Proposal
Defines the standard coordinate frames for mobile
platforms: world, map, odom, base_link,
and base_footprint, including jump vs. drift
semantics.
Nav2 Documentation
Walk-through for using slam_toolbox to build a map
and feed it into Nav2 for navigation.
Steve Macenski’s slam_toolbox
Source, parameter reference, and usage notes for the graph-based 2D SLAM library used in this lecture.
ROS 2 Jazzy: slam_toolbox
Auto-generated API and parameter reference for the
slam_toolbox package as shipped with Jazzy.
Localization (AMCL)
Nav2 Documentation
Full parameter reference for nav2_amcl, including
motion model, sensor model, and adaptive resampling
parameters.
ROS 2 Jazzy: nav2_amcl
API reference for the AMCL implementation that ships with Nav2 on Jazzy.
Nav2 Stack
Nav2: Top-level Docs
Entry point for the Nav2 navigation stack: getting started, configuration, behavior trees, plugins, and tutorials.
Nav2: Concepts Overview
Conceptual overview of the navigation stack: planners, controllers, costmaps, recoveries, and the behavior tree navigator.
Nav2 Configuration
Parameter reference for the global and local costmaps, including the static, obstacle, voxel, and inflation layers.
Nav2 Configuration
Configuration of the classical Dijkstra/A* grid planner. Fast and simple, ignores kinematic constraints.
Nav2 Configuration
Configuration of the Smac family of planners (Hybrid A*, lattice, Theta*) for kinematically constrained planning.
Nav2 Configuration
Configuration of the Dynamic Window-based DWB local controller, including critic plugins and trajectory scoring.
Nav2 Configuration
Configuration of the Regulated Pure Pursuit controller, which slows the robot near obstacles and tight curves.
Nav2 Documentation
Reference for the behavior tree XML files that orchestrate planning, control, and recovery in Nav2.
Behavior Tree Library
Documentation for the C++ behavior tree engine that Nav2 uses to execute its navigation BTs.
NavigateToPose API
Nav2: nav2_simple_commander
Python convenience API (BasicNavigator) wrapping
NavigateToPose and the waypoint follower.
GitHub Source
The source for BasicNavigator and friends, useful
for understanding what the Python wrapper does under the
hood.
ROS 2 Jazzy: nav2_msgs
The NavigateToPose action definition: goal pose,
feedback fields (current pose, distance remaining,
recoveries), and the empty result.
Recommended Reading
Textbook: Chapter 14
Comprehensive treatment of mobile robot localization and mapping, including occupancy grids, particle filters, and SLAM.
Textbook: Chapter 13
Open-access textbook chapter on wheeled mobile robots covering kinematics, odometry, and motion planning.