# E.2  Robot footprint vs Radius

#### Robot footprint vs Radius

Nav 2 မှာ robot ပုံစံကို နည်းလမ်းနှစ်ခုနဲ့ ဖေါ်ပြနိုင်တယ်။

* footprint
* radius&#x20;

ROS 1 မှာတုန်းက robot radius နဲ့ အလုပ်လုပ်တာ။ အဲ့ကောင်ကို globla planner က အသုံးမပြုဘဲ local planner နဲ့ local costmaps ကသာအသုံးပြုပါတယ်။&#x20;

Nav 2 မှဆိုရင်တော့ planning နဲ့ controlling algorithm တွေက အမျိုးမျိုးရှိလေတော့ robot ဟာ စက်ဝိုင်းပုံစံမဟုတ်ဘူးဆိုရင် planners နဲ့ controllers တွေကို တကယ့် robot ရဲ့ geometric footprint ပေးသင့်ပါတယ်။ ဒါမှ ဒီကောင်တွေက ကျဥ်းထဲကျပ်ထဲလိုနေရာတွေအတွက် trajectories or plan တွက်ပေးနိုင်မှာပေါ့။ ( ပြောချင်တာက တီကောင်ပုံစံ စက်ရုပ်မျိုးဆိုရင် circular radius မထည့်သင့်ဘူး။ )&#x20;

actual footprint နဲ့သာ ဖေါ်ပြထားမယ်ဆိုရင် Smac Hybird-A\*, Smac State Lattice တို့လိုကောင်တွေသည် SE2 footprint ကိုသုံးပြီး kinematic အရ အဆင်ပြေစေတဲ့ plan တွေကို တွက်ပေးနိုင်မှာဖြစ်ပါတယ်။&#x20;

( စကားချပ်။ ။ SE2 ဆိုတာက special Euclidean ကို ပြောတာဖြစ်ပြီး ကြည့်ရတာ special Euclidean group of rigid body movement in two-dimensions ကို ပြောချင်တာဖြစ်မယ်။ အဲ့လိုပဲ Robotics မှာ SE3 တို့ SO3 တို့ so3 တို့ ဆိုတာတွေရှိပါတယ်။ special orthogonal ကိုပြောတာပေါ့။ so3 နဲ့ SO3 တောင်မတူဘူး။ စာလုံးအသေးအကြီးကွာတယ်။ :P ။ စာလုံးကွာသလို ယူဆချက်လည်း အနည်းငယ်ကွာပါတယ်။ )&#x20;

2021 December လောက်မှာ ROS2 ရဲ့ planner controllers တွေအားလုံးဟာ Footprint ကို support လုပ်လာကြပါတယ်။ အဲ့တော့ footprint သုံးမယ်ဆိုရင် robot ဟာ stuck ဖြစ်မဲ့ အကြိမ်အရေနည်းသွားပြီး အေးဆေး သွားလို့ရပြီတဲ့။ ( ပြောတာပါပဲဗျာ )&#x20;

တကယ်လို့ စက်ဝိုင်း ပုံစံ robot ကြီး တည်ဆောက်ထားတယ်ဆိုရင်တော့ robot\_radius ဆိုတဲ့ parameter ကို သုံးပေါ့ဗျာ။ တခါတလေကျတော့ စက်ဝိုင်းပုံ robot မဟုတ်ပေမဲ့ robot\_radius နဲ့ လုပ်ရတဲ့ case တွေလည်းရှိနိုင်ပါတယ်။ ဘယ်လိုမျိုးတွေလည်းဆိုတော့

* robot ဟာ environment နဲ့ ယှဥ်ရင် သိပ် သေးလွန်းတဲ့အခါ
* robot မှာ compute power နည်းတဲ့အခါ ( foodprint နဲ့ တွက်တာက cost ပိုကျတယ်။ )
* Theta\* , Smac 2D A\* , Navfn တို့လို Holonomic planner တွေသုံးမယ်ဆိုရင် circular footprint ကိုပဲသုံးတာမျိုးဖြစ်ပါလိမ့်မယ်။ ဒီကောင်တွေက SE2 footprint အသုံးပြုလို့မရဘူးဆိုတဲ့ သဘောပေါ့။
