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

रेंज में आना

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