रोबोट लोकलाइजेशन MegaTag के साथ
यदि आपके Limelight का रोबोट-स्पेस पोज़ वेब यूआई में कॉन्फ़िगर किया गया है, और एक फ़ील्ड मैप वेब यूआई के माध्यम से अपलोड किया गया है, तो रोबोट का फ़ील्ड स्पेस में स्थान 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 Forward, LL Right, और LL Up रोबोट के आगे, दाएं, और ऊपर के वेक्टर्स के साथ दूरियों का प् रतिनिधित्व करते हैं यदि आप रोबोट का अवतार लेते हैं। (मीटर में)। LL Roll, Pitch, और Yaw आपके Limelight के रोटेशन को डिग्री में दर्शाते हैं। आप इन मानों को संशोधित कर सकते हैं और 3D व्यूअर में Limelight के 3D मॉडल में परिवर्तन देख सकते हैं। Limelight इस कॉन्फ़िगरेशन का उपयोग आंतरिक रूप से कैमरा स्पेस में लक्ष्य पोज़ से -> फ़ील्ड स्पेस में रोबोट पोज़ तक जाने के लिए करता है।