🚗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 မလုပ်ဖို့ လိုအပ်ချက်များကို စတင်ရှာဖွေဖို့ လုပ်ဆောင်ကြပါတယ်။
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