rotation-shim-controller

Configure Nav2 RotationShimController to rotate robots in place before path following.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Differential-drive robots often face a different direction than a new navigation path requires, causing awkward or inefficient initial motion when the primary controller must rotate and translate simultaneously. This Skill provides the configuration knowledge to make the Nav2 RotationShimController handle that initial in-place rotation cleanly before handing off to the primary controller. ## Core Features & Use Cases - Parameter Guidance: Explains angular_dist_threshold, forward_sampling_distance, rotate_to_heading_angular_vel, max_angular_accel, and simulate_ahead_time with typical tuning values. - Complete YAML Examples: Provides a full controller_server configuration wrapping MPPI, including pass-through of primary controller parameters. - Controller Compatibility Advice: Covers when to combine RotationShim with MPPI, DWB, RPP, or GracefulController, and when to avoid it entirely. - Use Case: A differential-drive robot receives a goal behind it; with RotationShim configured, it rotates in place to face the path, then MPPI takes over for smooth forward driving. ## Quick Start Configure the Nav2 FollowPath plugin as RotationShimController wrapping MPPI with an angular_dist_threshold of 0.785 radians.

Frequently Asked Questions about rotation-shim-controller

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

FAQPage Schema
How do I configure Nav2 RotationShimController with MPPI?

Set the FollowPath plugin to nav2_rotation_shim_controller::RotationShimController and set primary_controller to nav2_mppi_controller::MPPIController. Place all MPPI parameters in the same FollowPath block; they pass through to the primary controller.

What does angular_dist_threshold do in Nav2 rotation shim?

angular_dist_threshold is the minimum heading error in radians that triggers in-place rotation. The default 0.785 rad (about 45 degrees) rotates only for large misalignments, while 0.4 rad gives smoother starts for moderate misalignments.

Should I use RotationShim with RPP in Nav2?

Only if RPP's use_rotate_to_heading is disabled. RPP already handles initial rotation internally when that option is enabled, so running both causes redundant double rotation behavior.

Why won't my robot rotate in tight spaces with RotationShim?

The collision check simulates the rotation simulate_ahead_time seconds into the future and aborts if the swept footprint hits an obstacle. Decrease simulate_ahead_time or increase costmap obstacle clearance to allow rotation.

When should I not use the Nav2 rotation shim controller?

Avoid it on omni-directional robots that can translate in any direction, in very tight spaces where in-place rotation is blocked, and with RPP when use_rotate_to_heading is already enabled.