ros-navigation/navigation2

ROS 2 Navigation Framework and System

Nav2 – the ROS 2 Navigation Stack

What it is

  • Nav2 (short for Navigation 2) is the official, production‑ready navigation system for the Robot Operating System 2 (ROS 2). It provides the software building blocks that let a mobile robot move safely from point A to point B while avoiding obstacles, handling localisation, and planning paths.

Core capabilities

Component What it does
nav2_amcl Adaptive Monte‑Carlo localisation – estimates the robot’s pose on a known map using laser or depth data.
nav2_controller Executes a planned trajectory, generating velocity commands that respect the robot’s kinematics.
nav2_planner (via nav2_behavior_tree) Global path planning on a 2‑D costmap using algorithms such as A* or Dijkstra.
nav2_costmap_2d Maintains a 2‑D occupancy grid that fuses sensor data, static maps, and dynamic obstacles.
nav2_bt_navigator Orchestrates navigation actions through a Behavior Tree, making the overall flow (plan → follow → recover) easy to extend.
nav2_collision_monitor Monitors the robot’s surroundings in real‑time and can trigger emergency stops or recovery behaviours.
nav2_docking / nav2_docking_bt Specialized behaviours for autonomous docking to a charging station or other target.
nav2_constrained_smoother Refines paths to respect motion constraints (e.g., curvature limits).
nav2_bringup Launch files and configuration utilities that start the whole stack with a single command.

Why it matters

  • Modular & extensible – each piece is a separate ROS 2 package with a clean API, so developers can swap in custom planners, controllers, or sensors.
  • Cross‑distribution support – pre‑built binaries are provided for multiple ROS 2 releases (Humble, Jazzy, Lyrical), and CI badges show the build status for each.
  • Community & professional backing – maintained by the Open Navigation project and sponsored by companies such as Nvidia, AMD, and Polymath Robotics.
  • Rich documentation – tutorials, configuration guides, API docs, and ROSCon talks are all linked from the README.

Typical use‑cases

  • Autonomous warehouse robots that need to navigate aisles, avoid people, and dock for charging.
  • Service robots in hospitals or offices that must move between rooms while reacting to dynamic obstacles.
  • Research platforms exploring new localisation, planning, or recovery strategies.

Getting started

  1. Read the docs – the central site https://docs.nav2.org/ hosts a Concepts overview and a Getting Started guide.
  2. Install – follow the Build & Install instructions for your ROS 2 distribution, or pull a pre‑built Docker image from the navigation2 container registry.
  3. Run the demo – the nav2_bringup package provides launch files that start a simulated robot (e.g., in Gazebo) with a ready‑to‑use navigation stack.
  4. Customize – use the Configuration Guide to tweak parameters, or follow the Plugin Tutorials to add your own planner or controller.

Community & support

  • Join the Nav2 Slack (link in the README) for real‑time help.
  • Professional services are offered by Open Navigation (info@opennav.org).
  • The project is open‑source under the Apache‑2.0 license (standard for ROS packages).

All information above is taken directly from the repository’s README and linked documentation.

Related

  • Project
  • Project
  • Project
  • Project
  • Project