रेंज में आना
FRC रोबोट को अक्सर स्कोरिंग गोल से एक विशिष्ट दूरी पर स्थित होने की आवश्यकता होती है ताकि उनका स्कोरिंग तंत्र अच्छी तरह से काम कर सके। आप लाइमलाइट के कैलिब्रेटेड क्रॉस-हेयर के साथ एक सरल आनुपातिक नियंत्रण लूप का उपयोग करके बहुत आसानी से अपने रोबोट को लक्ष्य से एक विशिष्ट दूरी पर ले जा सकते हैं।
इस उदाहरण के लिए, आपको यह सुनिश्चित करना चाहिए कि आपका रोबोट लक्ष्य की ओर निशाना लगा रहा है। बाद में हम लक्ष्य साधने और दूरी समायोजित करने को एक फ़ंक्शन में संयोजित करेंगे, लेकिन इस उदाहरण में हम केवल उस कोड पर ध्यान केंद्रित कर रहे हैं जो रोबोट को सही दूरी पर ले जाता है।
लक्ष्य साधने के उदाहरण के समान, यहां हम एक फ़ंक्शन दिखाते हैं जिसे आपके रोबोट के अपडेट लूप में चलाया जा सकता है।
float KpDistance = -0.1f; // दूरी के लिए आनुपातिक नियंत्रण स्थिरांक
float current_distance = Estimate_Distance(); // 'केस स्टडी: दूरी का अनुमान लगाना' देखें
if (joystick->GetRawButton(9))
{
float distance_error = desired_distance - current_distance;
driving_adjust = KpDistance * distance_error;
left_command += distance_adjust;
right_command += distance_adjust;
}
KpDistance सेटिंग के कुछ ट्यूनिंग के साथ, आपका रोबोट बहुत जल्दी और सटीक रूप से वांछित दूरी तक पहुंच जाना चाहिए। लक्ष्य साधने की तुलना में, सही दूरी तक पहुंचना आमतौर पर आसान होता है क्योंकि अधिकांश रोबोट एक ही स्थान पर मुड़ने की तुलना में आगे और पीछे बहुत आसानी से चलते हैं।
अगले हम एक सरल तरकीब का वर्णन करेंगे जो सही दूरी तक पहुंचने को और भी आसान बनाता है। वास्तविक दूरी की गणना करने के बजाय, आप लाइमलाइट क्रॉस-हेयर का उपयो ग कर सकते हैं। बस अपने रोबोट को लक्ष्य से आपकी आदर्श दूरी पर रखें और क्रॉस-हेयर की y-स्थिति को कैलिब्रेट करें। अब आपका y-कोण 0.0 के रूप में रिपोर्ट करेगा जब आपका रोबोट सही दूरी पर होगा। इस तरकीब का उपयोग करके, आपको कभी भी वास्तविक दूरी की गणना नहीं करनी पड़ेगी और आपका कोड कुछ इस तरह दिख सकता है:
float KpDistance = -0.1f;
std::shared_ptr<NetworkTable> table = NetworkTable::GetTable("limelight");
float distance_error = table->GetNumber("ty");
if (joystick->GetRawButton(9))
{
driving_adjust = KpDistance * distance_error;
left_command += distance_adjust;
right_command += distance_adjust;
}
यदि आपको शूटिंग दूरी बदलने की आवश्यकता है, तो बस अपने रोबोट को नई दूरी पर ले जाएं और लाइमलाइट क्रॉसहेयर को फिर से कैलिब्रेट करें।
यहां एक रोबोट का उदाहरण दिया गया है जो उपरोक्त विचार का उपयोग कर रहा है। ध्यान दें कि जब ड्राइवर ड्राइविंग बंद कर देता है और "लक्ष्य" बटन दबाता है तो यह स्वचालित रूप से सही रेंज तक पीछे हटता है: