MegaTag के साथ रोबोट लोकलाइजेशन
यदि आपके Limelight का रोबोट-स्पेस पोज़ वेब UI में कॉन्फ़िगर किया गया है, और फ़ील्ड मैप वेब UI के माध्यम से अपलोड किया गया है, तो रोबोट का फ़ील्ड स्पेस में स्थान getBotpose() और "botpose" नेटवर्कटेबल्स ऐरे (x,y,z मीटर में, रोल, पिच, यॉ डिग्री में) के माध्यम से उपलब्ध होगा।
हमारा रोबोट लोकलाइजेशन एल्गोरिदम MegaTag कहलाता है। यदि एक से अधिक टैग दृश्य में हैं, तो यह व्यक्तिगत टैग अस्पष्टताओं और छवि में शोर के प्रति लचीला है। यदि सभी कीपॉइंट्स कोप्लानर हैं, तो अभी भी अस्पष्टता फ्लिपिंग का कुछ जोखिम है।
- हरा सिलेंडर: व्यक्तिगत प्रति-टैग बॉट पोज़
- नीला सिलेंडर: पुराना BotPose
- सफेद सिलेंडर: MegaTag Botpose
यहां स्पष्ट पोज़ अस्पष्टता पर ध्यान दें:
देखें कि नया botpose (सफेद सिलेंडर) पुराने botpose (नीले सिलेंडर) की तुलना में कितना स्थिर है। आप tx और ty मानों को भी देख सकते हैं।
यह केवल प्लेनर टैग तक सीमित नहीं है। यह पूर्ण 3D में और किसी भी ओरिएंटेशन में किसी भी संख्या के टैग के लिए स्केल करता है। फ्लोर टैग और सीलिंग टैग पूरी तरह से काम करते हैं।
यहां एक आरेख है जो एक सरल प्लेनर केस के साथ इसके काम करने के एक पहलू को दर्शाता है। वास्तविक परिणाम वास्तव में दर्शाए गए से बेहतर हैं, क्योंकि चित्रित MegaTag में एक बिंदु के बजाय तीन बिंदुओं पर एक महत्वपूर्ण त्रुटि लागू की गई है। जैसे-जैसे 3D संयुक्त MegaTag आकार और कीपॉइंट संख्या में बढ़ता है, इसकी स्थिरता बढ़ती है।
WPILib के Pose Estimator का उपयोग करना
2024 में, अधिकांश WPILib इकोसिस्टम एक सिंगल-ओरिजिन कोऑर्डिनेट सिस्टम में परिवर्तित हो गया। 2023 में, आपका कोऑर्डिनेट सिस्टम ओरिजिन आपके अलायंस कलर के आधार पर बदलता था।
2024 और उसके बाद के लिए, आपके कोऑर्डिनेट सिस्टम का ओरिजिन हमेशा "ब्लू" ओरिजिन होना चाहिए। FRC टीमों को पोज़-संबंधित कार्यक्षमता के लिए हमेशा botpose_wpiblue का उपयोग करना चाहिए
LimelightHelpers.PoseEstimate mt1 = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");
if(mt1.tagCount == 1 && mt1.rawFiducials.length == 1)
{
if(mt1.rawFiducials[0].ambiguity > .7)
{
doRejectUpdate = true;
}
if(mt1.rawFiducials[0].distToCamera > 3)
{
doRejectUpdate = true;
}
}
if(mt1.tagCount == 0)
{
doRejectUpdate = true;
}
if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.5,.5,9999999));
m_poseEstimator.addVisionMeasurement(
mt1.pose,
mt1.timestampSeconds);
}
अपने Limelight के रोबोट-स्पेस पोज़ को कॉन्फ़िगर करना
LL फॉरवर्ड, LL राइट, और LL अप रोबोट के फॉरवर्ड, राइट, और अप वेक्टर्स के साथ दूरियों का प्रतिनिधित्व करते हैं जैसे कि आप रोबोट का अवतार हों। (मीटर में)। LL रोल, पिच, और यॉ आपके Limelight के रोटेशन को डिग्री में दर्शाते हैं। आप इन मानों को संशोधित कर सकते हैं और 3D व्यूअर में Limelight के 3D मॉडल में परिवर्तन देख सकते हैं। Limelight कैमरा स्पेस में टारगेट पोज़ से -> फ़ील्ड स्पेस में रोबोट पोज़ तक जाने के लिए आंतरिक रूप से इस कॉन्फ़िगरेशन का उपयोग करता है।