ros-navigation/navigation2
Hardware & IoTA ROS 2 navigation framework that gives mobile robots mapping, localization, path planning and autonomous movement.
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.