graceful-controller

Configure Nav2 GracefulController for smooth curvature-constrained approach-to-goal motion.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Robots that need to arrive at a goal pose smoothly—such as docking at a charging station—often produce jerky or imprecise motion with standard path-tracking controllers. This Skill provides the configuration knowledge to set up Nav2's GracefulController, which computes a smooth Lyapunov-based curve from the robot's current pose to the goal pose. ## Core Features & Use Cases - Graceful Motion Configuration: Full parameter reference (min_turning_radius, k_phi, k_delta, beta, lambda, slowdown_radius, initial/final rotation) with a ready-to-use YAML block for the Nav2 controller server. - Multiple Controller Plugins: Guidance on registering several controllers (MPPI, DWB, RPP, Graceful, RotationShim) and switching between them per path segment using the controller_id field in FollowPath behavior tree actions. - Use Case: A patrol robot navigates hallways with MPPI, then within 2 meters of its charger the behavior tree switches to a DockApproach controller running GracefulController for a precise, smooth final approach. ## Quick Start Configure my Nav2 controller server with a GracefulController plugin for smooth docking approach alongside my existing MPPI controller.

Frequently Asked Questions about graceful-controller

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

FAQPage Schema
How do I configure the Nav2 GracefulController for docking?

Add a controller plugin entry with plugin nav2_graceful_controller::GracefulController to the controller_server YAML, then tune min_turning_radius, v_linear_max, and slowdown_radius for your robot. Reference it in the behavior tree via the controller_id field of the FollowPath action.

How do I use multiple controller plugins in Nav2?

List all plugin names in controller_plugins and define each with its own plugin class and parameters. The behavior tree selects which one runs per path segment using the controller_id field, and switching mid-path is seamless since the new controller receives the remaining path via setPlan.

GracefulController vs MPPI vs Regulated Pure Pursuit in Nav2?

GracefulController produces smooth curves to a single goal pose, ideal for docking. MPPI handles complex obstacle-dense environments with optimal control, while Regulated Pure Pursuit suits simple paths with low CPU cost. RotationShim can wrap any controller for initial rotation.

When should I not use the Nav2 GracefulController?

Avoid it in complex obstacle-dense environments because it has no costmap-aware trajectory scoring, and for long-distance navigation since it only approaches a single goal. Use MPPI or DWB for those scenarios instead.

Do idle Nav2 controller plugins consume CPU?

No. Only the active controller runs computeVelocityCommands, so idle controllers consume no CPU. All controllers share the same local costmap, controller_frequency, progress_checker, and goal_checker settings.