MegaTag के साथ रोबोट लोकलाइज़ेशन
यदि आपके Limelight की robot-space pose को web ui में कॉन्फ़िगर किया गया है, और web ui के माध्यम से एक field map अपलोड किया गया है, तो field space में रोबोट की स्थिति getBotpose() और "botpose" networktables array (x,y,z मीटर में, roll, pitch, yaw डिग्री में) के माध्यम से उपलब्ध होगी।
हमारे रोबोट लोकलाइज़ेशन एल्गोरिदम को MegaTag कहा जाता है। यदि एक से अधिक टैग दृश्य में हैं, तो यह व्यक्तिगत टैग अस्पष्टताओं और इमेज में शोर के प्रति लचीला है। यदि सभी keypoints coplanar हैं, तो अभी भी अस्पष्टता फ्ल िपिंग का कुछ जोखिम है।
- हरा सिलेंडर: व्यक्तिगत प्रति-टैग bot pose
- नीला सिलेंडर: पुराना BotPose
- सफेद सिलेंडर: MegaTag Botpose
यहाँ स्पष्ट pose अस्पष्टता देखें:
ध्यान दें कि नया botpose (सफेद सिलेंडर) पुराने botpose (नीले सिलेंडर) की तुलना में कितना स्थिर है। आप tx और ty मानों को भी देख सकते हैं।
यह planar टैग्स तक सीमित नहीं है। यह किसी भी संख्या में टैग्स के लिए पूर्ण 3D में और किसी भी ओरिएंटेशन में स्केल करता है। फ्लोर टैग्स और सीलिंग टैग्स पूरी तरह से काम करते हैं।
यहाँ एक डायग्राम है जो दर्शाता है कि यह एक साधारण planar केस के साथ कैसे काम करता है। परिणाम वास्तव में दिखाए गए से बेहतर हैं, क्योंकि दिखाए गए MegaTag में एक बिंदु के बजाय ती न बिंदुओं पर महत्वपूर्ण त्रुटि लागू है। जैसे-जैसे 3D संयुक्त MegaTag आकार और keypoint संख्या में बढ़ता है, इसकी स्थिरता बढ़ती है।

WPILib के Pose Estimator का उपयोग करना
2024 में, अधिकांश WPILib Ecosystem ने single-origin coordinate system में परिवर्तन किया। 2023 में, आपका coordinate system origin आपके alliance color के आधार पर बदलता था।
2024 और उसके बाद के लिए, आपके coordinate system का origin हमेशा "blue" origin होना चाहिए। FRC टीमों को pose-संबंधित कार्यक्षमता के लिए हमेशा 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 की Robot-Space Pose कॉन्फ़िगर करना
LL Forward, LL Right, और LL Up रोबोट के forward, right, और up वेक्टर्स के साथ दूरियों को दर्शाते ह ैं यदि आप रोबोट को embody करें। (मीटर में)। LL Roll, Pitch, और Yaw आपके Limelight के रोटेशन को डिग्री में दर्शाते हैं। आप इन मानों को संशोधित कर सकते हैं और 3D viewer में Limelight के 3D मॉडल को बदलते हुए देख सकते हैं। Limelight इस कॉन्फ़िगरेशन का आंतरिक रूप से उपयोग करता है camera space में target pose से -> field space में robot pose में जाने के लिए।