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

हम निम्नलिखित समीकरण का उपयोग करके d का हल निकाल सकते हैं:
tan(a1+a2) = (h2-h1) / d
"d = (h2-h1) / tan(a1+a2)"
"tan" फ़ंक्शन आमतौर पर रेडियन में मापे गए इनपुट की अपेक्षा करता है। किसी कोण माप को डिग्री से रेडियन में बदलने के लिए, (3.14159/180.0) से गुणा करें। पूर्ण कोड उदाहरण नीचे देखें।
- Java
- C++
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);
std::shared_ptr<NetworkTable> table = nt::NetworkTableInstance::GetDefault().GetTable("limelight");
double targetOffsetAngle_Vertical = table->GetNumber("ty",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)/tan(angleToGoalRadians);
इस तकनीक का उपयोग करते समय अपने कैमरे के माउंटिंग कोण को सावधानी स े चुनना महत्वपूर्ण है। आप लक्ष्य को तब देखने में सक्षम होना चाहते हैं जब आप बहुत करीब हों और जब बहुत दूर हों। आप यह भी नहीं चाहते कि यह कोण बदले, इसलिए इसे सुरक्षित रूप से माउंट करें और अपनी माउंटिंग ज्यामिति में स्लॉट का उपयोग करने से बचें।
यदि आपको यह पता लगाने में परेशानी हो रही है कि कोण a1 क्या है, तो आप a1 का हल निकालने के लिए भी उपरोक्त समीकरण का उपयोग कर सकते हैं। बस अपने रोबोट को एक ज्ञात दूरी पर रखें (अपने कैमरे के लेंस से मापते हुए) और उसी समीकरण को a1 के लिए हल करें।
उस स्थिति में जहां आपका लक्ष्य आपके कैमरे की ऊंचाई के लगभग समान है, यह तकनीक उपयोगी नहीं है।