मुख्य कंटेंट तक स्किप करें

रेंज में आना

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;
}

यदि आपको शूटिंग दूरी बदलने की आवश्यकता है, तो बस अपने रोबोट को नई दूरी पर ले जाएं और लाइमलाइट क्रॉसहेयर को फिर से कैलिब्रेट करें।

Image

यहां एक रोबोट का उदाहरण है जो उपरोक्त विचार का उपयोग कर रहा है। ध्यान दें कि जब ड्राइवर ड्राइविंग बंद करता है और "एम" बटन दबाता है, तो यह स्वचालित रूप से सही रेंज में वापस आ जाता है:

Image