rotation-shim-controller

Rotates a differential-drive robot in place to align heading with path in ROS 2 navigation before handing off to MPPI, DWB, or RPP controller.

18|2|Updated Apr 20, 2026
One-click install
npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill rotation-shim-controller
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: rotation-shim-controller
Source: https://github.com/wimblerobotics/ros2-copilot-skills/tree/main/rotation-shim-controller
Command: npx skills add https://github.com/wimblerobotics/ros2-copilot-skills --skill rotation-shim-controller

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

The RotationShimController resolves misalignment between the robot's heading and the path direction at the start of a new navigation goal by performing an in-place rotation and then handing off to the chosen primary controller.

Core Features & Use Cases

  • Wraps a primary controller (MPPI, DWB, or RPP) to perform an initial rotation on differential-drive robots for a smoother start.
  • Provides configurable parameters (angular_dist_threshold, forward_sampling_distance, simulate_ahead_time) with a collision-check loop during rotation.
  • Use case: when a new path starts facing a different direction, RotationShim ensures safe, aligned startup before following the path.

Quick Start

Configure the FollowPath plugin to use the RotationShimController with a chosen primary controller and rotation parameters, then issue a new navigation goal to observe in-place alignment before movement.

Frequently Asked Questions about rotation-shim-controller

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

FAQPage Schema
How do I rotate a differential-drive robot in place before following a path in ROS 2 navigation?

To rotate a differential-drive robot in place before path following in ROS 2 navigation, you can use a rotation shim controller. It aligns the robot's heading with the new path direction at the start of a navigation goal before handing off to your primary controller.

Why does my robot try to follow a path before it is facing the right direction?

Your robot attempts path following before facing the right direction due to misalignment between its heading and the path's starting orientation. An in-place rotation controller resolves this by first rotating the robot to align with the path trajectory.

Can I use a rotation shim with MPPI, DWB, or RPP controllers in ROS 2?

Yes, you can use a rotation shim with MPPI, DWB, or RPP controllers in ROS 2. The shim wraps around your chosen primary controller, performing the initial in-place rotation and then transferring control to the primary controller for path following.

How do I configure angular distance thresholds and collision checking for in-place rotation?

To configure in-place rotation, you set parameters like angular_dist_threshold, forward_sampling_distance, and simulate_ahead_time. The controller uses these values to define rotation limits and runs a collision-check loop during the alignment process.

What is the best way to ensure a smooth navigation startup when a new path faces a different direction?

The best way to ensure smooth navigation startup when a new path faces a different direction is applying an initial in-place rotation. This guarantees safe, aligned startup on differential-drive robots before the primary path following controller engages.

Does in-place rotation during ROS 2 navigation goals check for obstacles?

Yes, in-place rotation during ROS 2 navigation goals checks for obstacles. The rotation controller includes a built-in collision-check loop that monitors the environment while the robot performs the initial alignment rotation.