🎱D.11 Regulated Pure Pursuit

Regulated Pure Pursuit Controller ဆိုတာ service နဲ့ industrial robot တွေ အတွက် အထူးထုတ် ထားတဲ့ Pure Pursuit controller တမျိုး ဖြစ်ပါတယ်။ Robot Safety ဖြစ်ရန် အလိုငှါမျက်ကွယ်ထောင့်တွေ ရောက်ရင် controller ရဲ့ linear velocity ကို လျော့ချပေးပါတယ်။

တိကျတဲ့ trajectory တွေ ၊ smoother robot motion တွေ အတွက် အခြားသော controller pkg တွေထက် path-following ကောင်းပါတယ်။ Obstacle တွေ တွေ့တဲ့ အခါ controller ကို အလိုအလျောက် အရှိန်လျော့စေပါတယ်။

ဒီလို အရှိန်လျော့စေခြင်းအားဖြင့် accident အရေအတွက်ကို လျော့ချပေးပါတယ်။ Dynamic Environments အတွက် သုံးတဲ့ robot တွေ အတွက် ဒီ Regulated Pure Pursuit controller ‌က safety ဖြစ်ပြီး path-following အတွက် Performance ကောင်းကောင်း ထုတ်ပေးနိုင်ပါတယ်။

accident အရေအတွက်ကိုလည်း လျော့ချပေးပါတယ်။ Dynamic Environments အတွက် သုံးတဲ့ robot တွေ အတွက် ဒီ Regulated Pure Pursuit controller ‌က safety ဖြစ်ပြီး path-following အတွက် Performance ကောင်းကောင်း ထုတ်ပေးနိုင်ပါတယ်။

Parameter
Description
Type
Default

desired_levelt_vel

desired max linear velocity

double

0.5

lookahead_dist

lookahead distance to find the lookahead point

double

0.6

min_lookahead_dist

minimum lookahead distance

double

0.3

max_lookahead_dist

maxmum lookahead distance

double

0.9

lookahead_time

The time to project the velocity

double

1.5

rotate_to_heading_angular_vel

If use_rotate_to_ heading is true, this's the angular velocity

double

1.8

transform_tolerance

The TF transform tolerance

double

0.1

use_velocity_scaled_lookahead_dist

Whether to use the velocity scaled lookahead distance

bool

TRUE

min_approach_linear_velovity

The minimum velocity to apply when approaching the goal (Must be >0.01)

double

0.05

approach_velocity_scaling_dist

Distance left on the path to start slowing down. (Should be less than hlaf the costmap width)

double

0.6

use_collision_detection

To enable collision detection

bool

TRUE

max_allowed_time_to_collision_up_to_carrot

time (s) to project a velocity command forward to check for collisions

double

1

use_regulated_linear_velocity_scaling

To use the regulated features for path curvature

bool

TRUE

use_cost_regulated_linear_velocity_scaling

To use the regulated features for proximity to obstacles

bool

TRUE

regulated_linear_scaling_min_radius

turning radius (m) for which the regulation features are triggered

double

0.9

regulated_linear_scaling_min_speed

minimum speed for any of the regulated heuristics can send

double

0.25

use_fixed_curvature_lookahead

To use a fixed lookahead distance to compute curvature from.

bool

FALSE

curvature_lookahead_dist

Distance to look ahead on the path to detect curvature.

double

0.6

use_rotate_to_heading

To enable rotating to rough heading and goal orientation when using holonomic planners.

bool

TRUE

allow_reversing

Enables the robot to drive in the reverse direction, when the path planned involves reversing

bool

FALSE

rotate_to_heading_min_angle

The difference in the path orientation and the starting robot orientation to trigger a rotate in place

double

0.785

max_angular_accel

Maximum allowable angular acceleration (rad/s/s) while rotating to heading

double

3.2

max_robot_pose_search_dist

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.

double

Local costmap max extent (max(width, height) / 2)

use_interpolation

Enable linear interpolation between poses for lookahead point selection. Leads to smoother commanded linear and angular velocities.

bool

TRUE

The Regulated Pure Pursuit controller implements a variation on the Pure Pursuit controller that specifically t argeting 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.

နမူနာ

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_plugins: ["progress_checker"] # progress_checker_plugin: "progress_checker" For Humble and older
    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
      approach_velocity_scaling_dist: 0.6
      use_collision_detection: true
      max_allowed_time_to_collision_up_to_carrot: 1.0
      use_regulated_linear_velocity_scaling: true
      use_fixed_curvature_lookahead: false
      curvature_lookahead_dist: 0.25
      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

Last updated