velocity-smoother

Smooth controller velocity commands to enforce acceleration limits in Nav2 pipelines.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Enforces acceleration/deceleration limits on controller commands by acting as a buffer between the Nav2 controller and the robot actuators, reducing jerky motion and mechanical stress.

Core Features & Use Cases

  • Rate-limited velocity commands: applies max_accel / max_decel per axis to gradually reach target velocities.
  • Open-loop and Closed-loop support: can operate without odometry or read odometry from a specified odom_topic for feedback.
  • Smoother integration: effective between /cmd_vel_nav and /cmd_vel_smoothed in Nav2 pipelines to improve stability for differential-drive robots in both real robots and simulations.

Quick Start

Configure the velocity_smoother with your desired limits and launch it in your ROS 2/Nav2 system, wiring controller output to its input and using the smoothed output for actuation.

Frequently Asked Questions about velocity-smoother

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

FAQPage Schema
How do I smooth cmd_vel commands in ROS 2 to reduce jerky robot motion?

You smooth cmd_vel by placing a velocity smoother between the Nav2 controller and actuators. It buffers velocity commands and applies max_accel and max_decel limits per axis to gradually reach target velocities, reducing mechanical stress.

Does the velocity smoother require odometry feedback to work?

Odometry feedback is optional for velocity smoothing. The smoother supports open-loop operation without odometry, but can read from an odom_topic for closed-loop feedback to refine velocity calculations using a specified odom_duration.

How do I configure acceleration limits for a differential-drive robot in Nav2?

You configure acceleration limits for differential-drive robots by setting smoothing_frequency, max_accel, max_decel, and deadband_velocity parameters. The smoother integrates between cmd_vel_nav and cmd_vel_smoothed in Nav2 pipelines to improve stability.

Can I use velocity smoothing for both real robots and simulations?

Velocity smoothing applies to both real robots and simulations in Nav2-based stacks. It acts as a buffer between the controller and actuators, ensuring stable motion by enforcing rate limits regardless of the operating environment.

What is the best way to preserve trajectory while smoothing velocity commands?

To preserve trajectory while smoothing velocity commands, enable the optional scale_velocities parameter. This ensures the robot maintains its intended path while the smoother enforces acceleration and deceleration limits on the cmd_vel output.