🍐C.3 Setting up Navigation Plugins
Planner and Controller Servers
ဒီအခန်းကတော့ navigation plugin တွေကို ဘယ်လိုသုံးမလဲ၊ planner အမျိုးမျိုး controller အမျိုးမျိုး ကို ဘယ်လိုသုံးကြမလဲဆိုတာကို ဆွေးနွေးကြမယ်။ အထူးသဖြင့် ဒီအခန်းမှာဆိုရင် controller နဲ့ planner server တွေအကြောင်းပေါ့။
planner server ဆိုတာကတော့ robot ရဲ့ သွားမယ့် လမ်းကြောင်း path ကို တွက်ထုတ်ပေးနိုင်တဲ့ကောင်ပဲ။ position နှစ်ခုရဲ့ shortest path ကို planner မှာသုံးတဲ့ algorithm က တွက်ချက်ပေးနိုင်တယ်။
Controller server ကတော့ local environment ထဲမှာ သွားဖို့အတွက် control လုပ်ပေးနိုင်တယ်။ planner server က ထွက်လာတဲ့ path ကို follow လုပ်ပြီး သွားနိုင်တယ်။ dynamic obstacle ကို ရှောင်သွားနိုင်တယ်။ ဒါတွေက controller server ကို က လုပ်ပေးနိုင်တာတွေပါပဲ။
Selecting the Algorithm Plugins
အဲ့တော့ ဒီကောင်တွေအတွက်ဘယ်လို plugin တွေသုံးမလဲဆိုတာ အရင်ဆုံးလေ့လာကြည့်ရမယ်။ အဆင်ပြေရင် planner plugin တွေ၊ controller plugin တွေကို လည်း ကိုယ်တိုင်ရေးလို့လည်းရတယ်နော်။ လောလောဆယ်တော့ defaults ပေထား တဲ့ plugin တွေကိုပဲ အရင်စမ်းသုံးတာပေါ့။ အဲဒီအတွက် navigation plugin ဆိုတဲ့ Nav 2 Documentation ကိုကြည့်ဖို့လိုပါလိမ့်မယ်။
Planner Server
အဲ့တော့ ဒီ planner serverမှာဆိုလိုရင် သူက path လမ်းကြောင်း တွက်ထုတ်မှာဖြစ်တဲ့အတွက်ကြောင့် ဘယ်လိုကောင်တွေသုံးလို့ရလဲဆိုတော့
NavFn Planner
Smac Planner 2d
Theta Star Planner ဒါတွေကိုသုံးလို့ရတယ်။
NavFn Planner ဆိုတာက Dijkstra ဒါမှမဟုတ် A* algorithm ကိုသုံးပြီးတော့ planning လုပ်တဲ့ကောင်ပါ။ NavFn Planner သည် circular robot မဟုတ်တဲ့ ကောင်တွေအတွက် အသုံး၀င်မယ်လို့ documentation ထဲမှာ ရေးမထားပါဘူး။ အာမခံမထားပါဘူးပေါ့။ ဒီ Planner plugin သည် ackermann နဲ့ legged robot ( ခြေလေးချောင်နဲ့ dog robot ) လိုကောင်တွေအတွက် အဆင်မပြေဘဲ differential robots နဲ့ omnidirectional robots တွေအတွက်ပဲ သင့်တော်တယ်လို့ဆိုပါတယ်။
Smac Planner 2d မှာဆိုရင် 2D A* algorithm ပါ။ သူကပြောတာက 4 or 8 connected neighborhoods ကိုသုံးပြီးတော့ smooth ဖြစ် အောင်လုပ်ထားတဲ့ကောင်တဲ့။ ဒီကောင်လည်း differential နဲ့ omnidirectional အတွက်ပဲ။
Theta Star Planner ကတော့ Theta Star algorithm ကို သုံးထားတယ်ပေ့ါလေ။ ဒီ algorithm ကလည်း robot အမျိုးအစား အားလုံးအတွက် အလုပ်လုပ်တယ်လို့ အာမခံချက်တော့ ပေးမထားဘူး။
Smac Hybrid-A* planner ဒီကောင်က ackermann (full steering) နဲ့ legged robot တွေအတွက် support ပေးထားတယ်။
Smac Lattice planner သူကတော့ လမ်းကြောင်းကို smooth ဖြစ်စေပြီး robot ရဲ့ တည်နေရာကို ချဲ့ထွင်ပေးနိုင်တယ်လို့ဆိုပါတယ်။

ဒီမှာ ပုံနဲ့ summary table ကို ပြထားတယ်။ Planner plugin တွေကို ဘယ်လိုသုံးရတာလဲဆိုတော့ အောက်က example configuration မှာပြထားသလို plugin နေရာမှာ ရေးလိုက်ရုံပါပဲ။ အသေးစိတ်ကိုတော့ နောက်ပိုင်းမှာ Configuration Guide ဆိုတဲ့အခန်းကို ကြည့်ပါ။
planner_server:
ros__parameters:
planner_plugins: ['GridBased']
GridBased:
plugin: 'nav2_navfn_planner/NavfnPlanner'
Controller Server
controller server အတွက်တော့ default plugin က DWB controller ပေါ့ ။ ros1 မှာတုန်းကတော့ DWA (dynamic window approach) algorithm သုံးပါတယ်။ ဒီမှာသုံးလို့ရတဲ့ plugins တွေက အောက်ပါအတိုင်းပါ။
DWB သည် robot အတွက် velocity command တွေကို local map ပေါ်မှာ ထုတ် ပေး တာပေါ့။ သူသည် trajectory generator plugin သုံးပြီးတော့ trajectory လမ်းကြောင်းတစ်ခုကို တွက်ထုတ်ပေးတယ်။ DWB သည် circular ပဲဖြစ်ဖြစ် non-circular ပဲဖြစ်ဖြစ် legged robot, ackermann တွေမှာပဲဖြစ်ဖြစ် သုံးနိုင်တယ်။
TEB controller . သူကလည်း differential, omnidirectional, ackermann နဲ့ legged robots တွေအတွက် သုံးလို့ ရတယ်။ သူကတော့ robot ရဲ့ trajectory ကို execution time နဲ့ optimize လုပ်ပေးလို့ Timed Elastic Band (TEB) လို့ခေါ်သတဲ့။
RPP controller . Regulated Pure Pursuit controller သူ့ကိုလည်း differential, ackermann နဲ့ legged robot တွေအတွက်သုံးတယ်။ သူ့ရဲ့ မူကွဲပုံစံတွေကိုလည်း industrial service robot တွေမှာ သုံးတယ်လို့ပြောပါတယ်။
အောက်က ပုံကတော့ controller plugins တွေနဲ့ သူတို့ကို သုံးတဲ့ task တွေပါ။

controller_server:
ros__parameters:
controller_plugins: ["FollowPath"]
FollowPath:
plugin: "dwb_core::DWBLocalPlanner"
ဒါကတော့ plugin တွေကို ရွေးပေးတဲ့ပုံစံပါ။ ဒီမှာဆိုရင် ကျတော်နားလည်သလောက်ကတော့ controller_plugins မှာ FollowPath လိုဆိုတာက အောက်မှာ define လုပ်ထားတဲ့ plugin ပဲ။ အဲ့ဒီ အမည်ကို namespace အနေနဲ့လည်း အသုံးပြု မှာဖြစ်ပါတယ်။ အဲ့တော့ သူနဲ့ပါက်သက်တဲ့ configuration တွေ ( ကျတော်ထင်တာမမှားဘူးဆိုရင် topic တွေပါ ပါနိုင်တယ် ) သည် အဲ့ဒီ namespace အောက်မှာပဲရှိလိမ့်မယ်ဗျ။
မှတ်သားစရာတခုကတော့ controller server, planner server တွေကို ထိန်းချုပ်လို့ရလွယ်ကူအောင် ROS 2 မှာ lifecycle node စတိုင်နဲ့ရေးထားတယ်ဆိုတာပဲ။
Last updated