// the find
ros-navigation/navigation2
ROS 2 Navigation Framework and System
Nav2 is the standard autonomous navigation stack for ROS 2 robots — localization (AMCL), costmaps, path planning (A*, Smac/Hybrid-A*), and path following (DWB, MPPI, RPP) wired together via behavior trees. It's the go-to choice if you're building a ground robot on ROS 2, whether a warehouse AMR or a research platform. If you're not on ROS 2, this is irrelevant to you.
The MPPI controller is genuinely good — it handles non-holonomic constraints and dynamic obstacles better than DWA ever did, and it's been production-validated. The Smac Hybrid-A* planner produces kinematically feasible paths for car-like robots, not just grid-optimal ones that the controller then has to fight. The behavior tree architecture means you can swap planners, controllers, and recovery behaviors without touching core code — the plugin system actually works. Active professional maintenance from Open Navigation with corporate sponsors means this isn't abandonware; the kilted distribution builds are green.
The configuration surface area is brutal — 30+ packages each with their own parameter namespaces, and getting costmap inflation, planner tolerances, and controller lookahead distances to cooperate correctly requires days of trial and error. Behavior tree XML files are the primary composition mechanism, and debugging a BT that's stuck or looping requires Groot; there's no good way to reason about BT state from logs alone. The 2D costmap assumption bites you the moment you have a multi-floor building or a robot that needs to navigate under/over obstacles — nav2_route helps but it's still early. Getting it running without a physical robot requires Gazebo or a loopback sim, and the devcontainer setup is heavy; there's no lightweight 'just test the planner' path for someone new to ROS.