ros-navigation/navigation2

Hardware & IoT

A ROS 2 navigation framework that gives mobile robots mapping, localization, path planning and autonomous movement.

4,947
1,998
C++
NOASSERTION
8 years old

Nav2 is the ROS 2 navigation framework and system: a set of C++ packages that lets a mobile robot build and use a map, localize itself, plan a route, and follow it while avoiding obstacles. It is aimed at robotics developers working with ROS 2 rather than at people who want an out-of-the-box robot app. The project documentation is the main entry point.

What it changes in a workflow

Instead of writing navigation logic from scratch, you assemble a running navigation stack from packaged nodes. The README lists separate packages for localization (nav2_amcl), mapping and map serving (nav2_map_server), planning (nav2_navfn_planner, nav2_smac_planner, nav2_theta_star_planner), path following (nav2_mppi_controller, nav2_regulated_pure_pursuit, nav2_graceful_controller), collision monitoring, docking, route planning, and a simple commander API. These are exposed as plugins, so swaps happen through configuration rather than rewriting the core.

A typical flow is: load a map and localize on it, send a goal through the navigation interface, let a planner produce a path, and have a controller publish velocity commands until the goal is reached. Behavior trees in nav2_behavior_tree and nav2_bt_navigator orchestrate recovery and multi-step behavior around that loop.

Two mechanisms stand out. First, the plugin architecture: planners, controllers, smoothers and behaviors are selectable components, which is why the repository carries plugin tutorials and a plugin catalogue. Second, nav2_simple_commander provides a higher-level way to drive the stack from scripts, useful when integrating navigation into a larger robot application.

Prerequisites and paths

The framework targets ROS 2 distributions. The build table covers Humble (Ubuntu Jammy), Jazzy (Ubuntu Noble) and Lyrical (Ubuntu Resolute), for both source and Debian binary builds, so the Ubuntu version you need follows the ROS 2 distribution you choose. Some newer packages appear only for the newest distribution in that table. The README links to a first-time setup guide, build instructions, and a Docker container for a prebuilt environment.

This is a library and framework for programmers: it expects a ROS 2 workspace, your own robot description and sensor input, and configuration files. Expect configuration and migration work; the project publishes a configuration guide and migration guides for moving between versions.

License and support

The GitHub repository does not carry a recognized license identifier, so check the per-package license files before reuse. The README directs professional-support enquiries to Open Navigation rather than offering a support guarantee.

Written by AI from the project's README, updated October 29, 2026. The project's own docs are the source of truth.