๐ŸšD.21 Velocity Smoother

nav2_velocity_smoother แ€†แ€ญแ€ฏแ€แ€ฒแ€ท package แ€™แ€พแ€ฌ lifecycle node แ€แ€…แ€บแ€แ€ฏแ€•แ€ซแ€แ€šแ€บแ‹ แ€žแ€ฐแ€€ Nav2 แ€€แ€”แ€ฑ robot controller แ€†แ€ฎแ€•แ€ญแ€ฏแ€ทแ€แ€ฒแ€ท velicities แ€แ€ฝแ€ฑแ€€แ€ญแ€ฏ smooth แ€–แ€ผแ€…แ€บแ€กแ€ฑแ€ฌแ€„แ€บแ€œแ€ฏแ€•แ€บแ€•แ€ฑแ€ธแ€แ€ฌแ‹ แ€’แ€ฎ package แ€žแ€Šแ€บ Nav2 แ€€ แ€œแ€ฌแ€แ€ฒแ€ท implement velocity, acceleration, and deadband แ€แ€ญแ€ฏแ€ทแ€€แ€ญแ€ฏ smoothing แ€–แ€ผแ€…แ€บแ€…แ€ฑแ€–แ€ญแ€ฏแ€ท แ€›แ€Šแ€บแ€›แ€ฝแ€šแ€บแ€‘แ€ฌแ€ธแ€แ€šแ€บแ€œแ€ญแ€ฏแ€ทแ€†แ€ญแ€ฏแ€•แ€ซแ€แ€šแ€บแ‹

Params
Description
Type
Default

smoothing_ frequency

Frequency (Hz) to use the last received velocity command to smooth by velocity, acceleration, and deadband constraints. If set approximately to the rate of your local trajectory planner, it should smooth by acceleration constraints velocity commands. If set much higher, it will interpolate and provide a smooth set of commands to the hardware controller

double

20

scale_velocities

Whether or not to adjust other components of velocity proportionally to a componentโ€™s required changes due to acceleration limits. This will try to adjust all components to follow the same direction, but still enforces acceleration limits to guarantee compliance, even if it means deviating off commanded trajectory slightly.

bool

FALSE

feedback

Type of feedback to use for the current state of the robotโ€™s velocity. In OPEN_LOOP, it will use the last commanded velocity as the next iterationโ€™s current velocity. When acceleration limits are set appropriately, this is a good assumption. In CLOSED_LOOP, it will use the odometry from the odom topic to estimate the robotโ€™s current speed. In closed loop mode, it is important that the odometry is high rate and low latency, relative to the smoothing frequency.

string

"OPEN_LOOP"

Max_velocity

Maximum velocities (m/s) in [x, y, theta] axes.

vector <double>

[0.5,0.0,2.5]

Min_velocity

Minimum velocities (m/s) in [x, y, theta] axes. This is signed and thus must be negative to reverse. Note: rotational velocities negative direction is a right-hand turn, so this should always be negative regardless of reversing preference.

vector <double>

[-0.5,0.0,-2.5]

deadbond_ velocity

Minimum velocities (m/s) to send to the robot hardware controllers, to prevent small commands from damaging hardware controllers if that speed cannot be achieved due to stall torque.

vecctor <double>

[0.0,0.0,0.0]

vel_timeout

Twist แ€€แ€ญแ€ฏ zero แ€แ€”แ€บแ€–แ€ญแ€ฏแ€ธแ€”แ€ฒแ€ท publish แ€•แ€ผแ€ฎแ€ธ publishing แ€›แ€•แ€บแ€›แ€”แ€บ แ€€แ€ผแ€ฌแ€แ€ปแ€ญแ€”แ€บแ‹

double

0.0

max_accel

Maximum acceleration to apply to each axis [x, y, theta].

vector <double>

[2.5, 0.0, 3.2]

max+decel

Minimum acceleration to apply to each axis [x, y, theta]. This is signed and thus these should generally all be negative.

vector <double>

[-2.5, 0.0,-3.2]

odom_topic

Topic to find robot odometry, if in CLOSED_LOOP operational mode.

string

"odom"

odom_duration

Time (s) to buffer odometry commands to estimate the robot speed, if in CLOSED_LOOP operational mode.

double

0.1

แ€”แ€™แ€ฐแ€”แ€ฌ

velocity_smoother:
  ros__parameters:
    smoothing_frequency: 20.0
    scale_velocities: false
    feedback: "OPEN_LOOP"
    max_velocity: [0.5, 0.0, 2.5]
    min_velocity: [-0.5, 0.0, -2.5]
    deadband_velocity: [0.0, 0.0, 0.0]
    velocity_timeout: 1.0
    max_accel: [2.5, 0.0, 3.2]
    max_decel: [-2.5, 0.0, -3.2]
    odom_topic: "odom"
    odom_duration: 0.1

Last updated