navfn-planner

Configure Nav2 NavFn global planner with Dijkstra or A* grid path planning.

Updated Aug 16, 2026
One-click install
npx skills add https://github.com/three1324/yeonjinautomotive --skill navfn-planner-three1324
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: navfn-planner
Source: https://github.com/three1324/yeonjinautomotive/tree/main/.claude/skills/navfn-planner
Command: npx skills add https://github.com/three1324/yeonjinautomotive --skill navfn-planner-three1324

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Setting up a global path planner in ROS 2 Nav2 requires choosing between Dijkstra and A*, tuning tolerance and unknown-space handling, and diagnosing planning failures. This Skill provides the complete NavFn planner configuration reference so you can get reliable grid-based global planning working without digging through Nav2 source code. ## Core Features & Use Cases - Planner Configuration: Complete YAML setup for the nav2_navfn_planner::NavfnPlanner plugin, including use_astar, tolerance, and allow_unknown parameters. - Algorithm Guidance: Explains the Dijkstra vs A* tradeoff, potential field behavior, and path characteristics so you can pick the right mode for your map size. - Troubleshooting & Migration: Covers common failures (unreachable goals, slow planning, paths through narrow gaps) and migration notes when moving to SMAC planners. - Use Case: You are bringing up a differential-drive robot with Nav2 and need a global planner that produces optimal grid paths on a 50m indoor map, plus a smoother to clean up staircase segments. ## Quick Start Ask the assistant to configure the Nav2 planner server with the NavFn planner using Dijkstra, a 0.5 meter goal tolerance, and unknown space allowed.

Frequently Asked Questions about navfn-planner

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I configure the Nav2 NavFn planner in YAML?

Add nav2_navfn_planner::NavfnPlanner as a plugin under planner_server's planner_plugins list, then set tolerance, use_astar, and allow_unknown under the plugin name. The Skill provides a complete working YAML block you can copy directly.

Should I use Dijkstra or A* in the NavFn planner?

Use Dijkstra (use_astar: false, the default) for guaranteed optimal grid paths and reliability. Switch to A* only when planning time is a bottleneck on very large maps, and verify path quality does not degrade.

Why does NavFn fail to compute a plan for a reachable goal?

The goal is likely inside an inflated costmap cell. Increase the tolerance parameter (in meters) or check the inflation radius, and inspect the costmap at the goal location in rviz2 to confirm.

How do I smooth NavFn planner paths in Nav2?

NavFn output is grid-aligned with sharp turns, so add the smoother server with nav2_smoother::SimpleSmoother or nav2_constrained_smoother::ConstrainedSmoother. The Skill includes YAML snippets for both smoother options.

What is the difference between NavFn and SMAC planner tolerance?

NavFn tolerance is measured in meters, while SMAC planner tolerance is measured in costmap cells. When migrating from NavFn to SMAC, convert your tolerance value accordingly and note SMAC planners include built-in smoothers.