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

रेंज में आना

FRC रोबोट को अक्सर स्कोरिंग गोल से एक विशिष्ट दूरी पर स्थित होना आवश्यक होता है ताकि उनका स्कोरिंग मैकेनिज्म अच्छी तरह से काम कर सके। आप limelight के कैलिब्रेटेड क्रॉस-हेयर के साथ एक सरल प्रोपोर्शनल कंट्रोल लूप का उपयोग करके बहुत आसानी से अपने रोबोट को गोल से एक विशिष्ट दूरी तक ड्राइव करवा सकते हैं।

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

एमिंग उदाहरण के समान, यहां हम एक फंक्शन दिखाते हैं जिसे आपके रोबोट के अपडेट लूप में चलाया जा सकता है।

float KpDistance = -0.1f;  // दूरी के लिए प्रोपोर्शनल कंट्रोल कॉन्स्टेंट
float current_distance = Estimate_Distance(); // 'Case Study: Estimating 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 सेटिंग की कुछ ट्यूनिंग के साथ, आपका रोबोट बहुत जल्दी और सटीक रूप से वांछित दूरी तक ड्राइव करना चाहिए। एमिंग की तुलना में, सही दूरी तक ड्राइव करना आमतौर पर आसान होता है क्योंकि अधिकांश रोबोट आगे और पीछे जगह पर मुड़ने की तुलना में बहुत आसानी से चलते हैं।

अगला हम सही दूरी तक ड्राइव करना और भी आसान बनाने के लिए एक सरल ट्रिक बताएंगे। वास्तव में दूरी की गणना करने के बजाय, आप limelight क्रॉस-हेयर का उपयोग कर सकते हैं। बस अपने रोबोट को टारगेट से अपनी आदर्श दूरी पर रखें और क्रॉस-हेयर की 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;
}

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

Image

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

Image