Regulated Pure Pursuit
source link: https://navigation.ros.org/configuration/packages/configuring-regulated-pp.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
Regulated Pure Pursuit¶
Source code on Github.
The Regulated Pure Pursuit controller implements a variation on the Pure Pursuit controller that specifically targeting service / industrial robot needs. It regulates the linear velocities by curvature of the path to help reduce overshoot at high speeds around blind corners allowing operations to be much more safe. It also better follows paths than any other variation currently available of Pure Pursuit. It also has heuristics to slow in proximity to other obstacles so that you can slow the robot automatically when nearby potential collisions. It also implements the Adaptive lookahead point features to be scaled by velocities to enable more stable behavior in a larger range of translational speeds.
See the package’s README
for more complete information.
Regulated Pure Pursuit Parameters¶
desired_linear_velDefault |
|
double |
The desired maximum linear velocity (m/s) to use.
lookahead_distDefault |
|
double |
The lookahead distance (m) to use to find the lookahead point when use_velocity_scaled_lookahead_dist
is false
.
Default |
|
double |
The minimum lookahead distance (m) threshold when use_velocity_scaled_lookahead_dist
is true
.
Default |
|
double |
The maximum lookahead distance (m) threshold when use_velocity_scaled_lookahead_dist
is true
.
Default |
|
double |
The time (s) to project the velocity by when use_velocity_scaled_lookahead_dist
is true
. Also known as the lookahead gain.
Default |
|
double |
If use_rotate_to_heading
is true
, this is the angular velocity to use.
Default |
|
double |
The TF transform tolerance (s).
use_velocity_scaled_lookahead_distDefault |
|
false |
Whether to use the velocity scaled lookahead distances or constant lookahead_distance
.
Default |
|
double |
The minimum velocity (m/s) threshold to apply when approaching the goal to ensure progress. Must be > 0.01
.
Default |
|
double |
The time (s) to project a velocity command forward to check for collisions. Pre-Humble
, this was max_allowed_time_to_collision
.
Default |
|
Whether to use the regulated features for path curvature (e.g. slow on high curvature paths).
use_cost_regulated_linear_velocity_scalingDefault |
|
Whether to use the regulated features for proximity to obstacles (e.g. slow in close proximity to obstacles).
regulated_linear_scaling_min_radiusDefault |
|
double |
The turning radius (m) for which the regulation features are triggered when use_regulated_linear_velocity_scaling
is tru
. Remember, sharper turns have smaller radii.
Default |
|
double |
The minimum speed (m/s) for which any of the regulated heuristics can send, to ensure process is still achievable even in high cost spaces with high curvature. Must be > 0.1
.
Default |
|
Whether to enable rotating to rough heading and goal orientation when using holonomic planners. Recommended on for all robot types that can rotate in place.
Note: both use_rotate_to_heading
and allow_reversing
cannot be set to true
at the same time as it would result in ambiguous situations.
Default |
|
false |
Enables the robot to drive in the reverse direction, when the path planned involves reversing (which is represented by orientation cusps). Variants of the smac_planner comes with the support of reversing. Checkout the Smac Planner to know more.
Note: both use_rotate_to_heading
and allow_reversing
cannot be set to true
at the same time as it would result in ambiguous situations.
Default |
|
double |
0.785 |
The difference in the path orientation and the starting robot orientation (radians) to trigger a rotate in place, if use_rotate_to_heading
is true
.
Default |
|
double |
Maximum allowable angular acceleration (rad/s/s) while rotating to heading, if use_rotate_to_heading
is true
.
Default |
|
double |
Local costmap max extent (max(width, height) / 2) |
Upper bound on integrated distance along the global plan to search for the closest pose to the robot pose. This should be left as the default unless there are paths with loops and intersections that do not leave the local costmap, in which case making this value smaller is necessary to prevent shortcutting.
use_interpolationDefault |
|
Enable linear interpolation between poses for lookahead point selection. Leads to smoother commanded linear and angular velocities.
Example¶
controller_server:
ros__parameters:
use_sim_time: True
controller_frequency: 20.0
min_x_velocity_threshold: 0.001
min_y_velocity_threshold: 0.5
min_theta_velocity_threshold: 0.001
progress_checker_plugin: "progress_checker"
goal_checker_plugins: "goal_checker"
controller_plugins: ["FollowPath"]
progress_checker:
plugin: "nav2_controller::SimpleProgressChecker"
required_movement_radius: 0.5
movement_time_allowance: 10.0
goal_checker:
plugin: "nav2_controller::SimpleGoalChecker"
xy_goal_tolerance: 0.25
yaw_goal_tolerance: 0.25
stateful: True
FollowPath:
plugin: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
desired_linear_vel: 0.5
lookahead_dist: 0.6
min_lookahead_dist: 0.3
max_lookahead_dist: 0.9
lookahead_time: 1.5
rotate_to_heading_angular_vel: 1.8
transform_tolerance: 0.1
use_velocity_scaled_lookahead_dist: false
min_approach_linear_velocity: 0.05
max_allowed_time_to_collision_up_to_carrot: 1.0
use_regulated_linear_velocity_scaling: true
use_cost_regulated_linear_velocity_scaling: false
regulated_linear_scaling_min_radius: 0.9
regulated_linear_scaling_min_speed: 0.25
use_rotate_to_heading: true
allow_reversing: false
rotate_to_heading_min_angle: 0.785
max_angular_accel: 3.2
max_robot_pose_search_dist: 10.0
use_interpolation: false
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK