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

दूरी का अनुमान लगाना

एक निश्चित कोण वाले कैमरे का उपयोग करना

यदि आपका विज़न ट्रैकिंग कैमरा आपके रोबोट पर इस तरह लगा है कि ज़मीन के तल और उसकी दृष्टि रेखा के बीच का कोण नहीं बदलता है, तो आप इस तकनीक का उपयोग करके लक्ष्य तक की दूरी की बहुत सटीक गणना कर सकते हैं। फिर आप इस दूरी के मान का उपयोग या तो अपने रोबोट को आगे-पीछे चलाकर सही रेंज में लाने के लिए या लॉन्चिंग मैकेनिज्म की पावर को समायोजित करने के लिए कर सकते हैं।

नीचे दिए गए आरेख को देखें। इस संदर्भ में, सभी वेरिएबल ज्ञात हैं: लक्ष्य की ऊंचाई (h2) ज्ञात है क्योंकि यह फील्ड की एक विशेषता है। फर्श से आपके कैमरे की ऊंचाई (h1) ज्ञात है और इसका माउंटिंग कोण ज्ञात है (a1)। Limelight (या आपका विज़न सिस्टम) आपको लक्ष्य तक का y कोण (a2) बता सकता है।

Distance Estimation

हम निम्नलिखित समीकरण का उपयोग करके d का हल निकाल सकते हैं:

tan(a1+a2) = (h2-h1) / d

"d = (h2-h1) / tan(a1+a2)"

"tan" फ़ंक्शन आमतौर पर रेडियन में मापे गए इनपुट की अपेक्षा करता है। किसी कोण माप को डिग्री से रेडियन में बदलने के लिए, (3.14159/180.0) से गुणा करें। पूर्ण कोड उदाहरण नीचे देखें।

    NetworkTable table = NetworkTableInstance.getDefault().getTable("limelight");
NetworkTableEntry ty = table.getEntry("ty");
double targetOffsetAngle_Vertical = ty.getDouble(0.0);

// आपका limelight पूर्णतः लंबवत से कितने डिग्री पीछे घुमा हुआ है?
double limelightMountAngleDegrees = 25.0;

// Limelight लेंस के केंद्र से फर्श तक की दूरी
double limelightLensHeightInches = 20.0;

// लक्ष्य से फर्श तक की दूरी
double goalHeightInches = 60.0;

double angleToGoalDegrees = limelightMountAngleDegrees + targetOffsetAngle_Vertical;
double angleToGoalRadians = angleToGoalDegrees * (3.14159 / 180.0);

// दूरी की गणना करें
double distanceFromLimelightToGoalInches = (goalHeightInches - limelightLensHeightInches) / Math.tan(angleToGoalRadians);

इस तकनीक का उपयोग करते समय अपने कैमरे के माउंटिंग कोण को सावधानी से चुनना महत्वपूर्ण है। आप लक्ष्य को तब देखने में सक्षम होना चाहते हैं जब आप बहुत करीब हों और जब बहुत दूर हों। आप यह भी नहीं चाहते कि यह कोण बदले, इसलिए इसे सुरक्षित रूप से माउंट करें और अपनी माउंटिंग ज्यामिति में स्लॉट का उपयोग करने से बचें।

यदि आपको यह पता लगाने में परेशानी हो रही है कि कोण a1 क्या है, तो आप a1 का हल निकालने के लिए भी उपरोक्त समीकरण का उपयोग कर सकते हैं। बस अपने रोबोट को एक ज्ञात दूरी पर रखें (अपने कैमरे के लेंस से मापते हुए) और उसी समीकरण को a1 के लिए हल करें।

उस स्थिति में जहां आपका लक्ष्य आपके कैमरे की ऊंचाई के लगभग समान है, यह तकनीक उपयोगी नहीं है।

दूरी का अनुमान लगाने के लिए क्षेत्रफल का उपयोग करना

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