SpeedController

A node that controls the tick rate for its child based on current robot speed. The maximum and minimum replanning rates can be supplied to the node as parameters along with maximum and minimum speed. The node returns RUNNING when it is not ticking its child. Currently, in the navigation stack, the SpeedController is used to adjust the rate at which the ComputePathToPose and GoalReached nodes are ticked.

Input Ports

min_rate

Type

Default

double

0.1

Description

The minimum rate at which child node can be ticked (hz).

max_rate

Type

Default

double

1.0

Description

The maximum rate at which child node can be ticked (hz).

min_speed

Type

Default

double

0.0

Description

The minimum robot speed below which the child node is ticked at minimum rate (m/s).

max_speed

Type

Default

double

0.5

Description

The maximum robot speed above which the child node is ticked at maximum rate (m/s).

filter_duration

Type

Default

double

0.3

Description

Duration (secs) over which robot velocity should be smoothed.

goal

Type

Default

geometry_msgs::msg::PoseStamped

“{goal}”

Description

Destination to check. Takes in a blackboard variable, “{goal}” if not specified.

goals

Type

Default

std::vector<geometry_msgs::msg::PoseStamped>

“{goals}”

Description

Vector of goals to check. Takes in a blackboard variable, “{goals}” if not specified.

Example

<SpeedController min_rate="0.1" max_rate="1.0" min_speed="0.0" max_speed="0.5" filter_duration="0.3">
  <!--Add tree components here--->
</SpeedController>