🚗D.13 Rotation Shim Controller

nav2_rotation _shim_controller က robot နဲ့ သူရဲ့ပတ်လမ်းကြောင်းသစ် ကြားကကွာခြားချက်ကို အကြမ်း အားဖြင့် စစ်ဆေးပေးခြင်းကို လုပ်ဆောင်ပါတယ်။

အကယ်၍ တံခါးဘောင်လို အတွင်းနေရာမျိုးမှာဆိုရင် ၄င်သည် primary_controller ကို taskတွေကို execute လုပ်ဆောင်ဖို့ request တင်ပေးပါတယ်။

အကယ်၍ အပြင်ဘက်မှာဆိုရင်တော့ ဒီcontrollerက ပတ်လမ်းကြောင်းစီကို ဦးတည်ဖို့ robot ကို လှည့်လည် ပေးပါလိမ့်မယ်။ Tolerance အတ္ငင်းမှာဆိုရင်တော့ ဒီ rotation shim controller က primary controller plugin စီသို့ control_execution ကို pass off လုပ်ဆောင်ပါလိမ့်မယ်။ robot ရဲ့ main plugin က smooth hand off လုပ်ဆောင်ချက်အတွက် ထိန်းချုပ်ဖို့ တာဝန်ယူဆောင်ပါလိမ့်မည်။

RotationShimController က အောက်ပါလုပ်ဆောင်ချက်များအတွက် အထူးသင့်တော်ပါတယ်:

  • Robots သည် differential robot Omnidirectional robots များကဲ့သို့ နေရာတစ်ခုမှာ လှည့်လည် နိုင်သည်။

  • Rotate လုပ်ရန် ဦးစားပေး လမ်းကြောင်းသစ်တစ်ခု စတင်ဖို့ track လုပ်ဆောင်သောအခါ robotရဲ့ လက်ရှိ ဦးတည်ရာနေရာထက် လမ်းကြောင်းသစ်က သိသိသာသာ ကွဲပြားစွာဉီးတည်နေပါမယ် (သို့) သင့်ရဲ့ controller ကို turning လုပ်သောအခါမှာလည်း tight rotations ခက်ခဲနေတာကို တွေ့ရပါလိမ့်မည်

  • Planner အသုံးပြုမယ်ဆိုရင် ၄င်းကောင်းက non-kinematically feasible ပါ။ (ဥပမာ - NavFn, Theta* or Smac 2D ) ။ Feasible planners များဖြစ်တဲ့ Smac Hybrid-A* နဲ့ State Lattice တို့က တော့ robot ရဲ့ အမှန်တကယ် စတင်ဦးတည်ရာ၊ rotation မလုပ်ဖို့ လိုအပ်ချက်များကို စတင်ရှာဖွေဖို့ လုပ်ဆောင်ကြပါတယ်။

Name
Description
Type
Default

angular_dist_threshold

Maximum angular distance, in radians, away from the path heading to trigger rotation until within.

double

0.785

forward_sampling_distance

Forward distance, in meters, along path to select a sampling point to use to approximate path heading

double

0.5

rotate_to_heading_angular_vel

Angular rotational velocity, in rad/s, to rotate to the path heading

double

1.8

primary_controller

Internal controller plugin to use for actual control behavior after rotating to heading

string

N/A

max_angular_accel

Maximum angular acceleration for rotation to heading (rad/s/s)

double

3.2

simulate_ahead_time

Time in seconds to forward simulate a rotation command to check for collisions. If a collision is found, forwards control back to the primary controller plugin.

double

1

နမူနာ

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_rotation_shim_controller::RotationShimController"
      primary_controller: "nav2_regulated_pure_pursuit_controller::RegulatedPurePursuitController"
      angular_dist_threshold: 0.785
      forward_sampling_distance: 0.5
      rotate_to_heading_angular_vel: 1.8
      max_angular_accel: 3.2
      simulate_ahead_time: 1.0

      # Primary controller params can be placed here below
      # ...

Last updated