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

रोबोट लोकलाइजेशन MegaTag2 के साथ

2024 में प्रस्तुत, Megatag2 मोबाइल रोबोट के लिए एक सटीक और स्पष्ट AprilTag-आधारित लोकलाइजर है। इसे निम्नलिखित लक्ष्यों के साथ बनाया गया था:

  • पोज़ अस्पष्टता समस्या को समाप्त करें और छवि/कोने के शोर के खिलाफ मजबूती बढ़ाएं।
  • एकल टैग के आधार पर उत्कृष्ट पोज़ अनुमान प्रदान करें, परिप्रेक्ष्य कुछ भी हो।
  • भौतिक AprilTag प्लेसमेंट अशुद्धियों के खिलाफ मजबूती बढ़ाएं
  • अच्छे पोज़ अनुमान परिणामों के लिए आवश्यक फ़िल्टरिंग की मात्रा को कम करें

Megatag2 एकल टैग के साथ किसी भी दूरी पर उत्कृष्ट परिणाम प्रदान करता है। इसका मतलब है कि केवल उन टैग पर ध्यान केंद्रित करना पूरी तरह से व्यवहार्य है जो प्रासंगिक और सहनशीलता के भीतर हैं, और अन्य सभी टैग को फ़िल्टर करें। यदि कोई टैग सही स्थान पर नहीं है, तो उसे MegaTag2 के साथ प्रस्तुत डायनामिक फ़िल्टर सुविधा के साथ फ़िल्टर करें।

int[] validIDs = {3,4};
LimelightHelpers.SetFiducialIDFiltersOverride("limelight", validIDs);

MT1 के विपरीत, MT2 मानता है कि आप अपने रोबोट की हेडिंग (यॉ) जानते हैं। वैकल्पिक रूप से, Megatag2 एक पूर्ण रोबोट ओरिएंटेशन और कोणीय वेग स्वीकार करता है।

आवश्यकताएं:

  • आपके Limelight का रोबोट-स्पेस पोज़ वेबUI में या API के माध्यम से कॉन्फ़िगर किया गया है
  • एक फील्ड मैप (.fmap) अपलोड किया गया है
  • LimelightHelpers.SetRobotOrientation(robotYawInDegrees,0,0,0,0,0) को हर फ्रेम में रोबोट-साइड कोड में कॉल किया जाता है
  • SetRobotOrientation एक केंद्रित (मैप जनरेटर देखें) या ब्लू-कॉर्नर मूल मानता है। CCW-पॉजिटिव, 0 डिग्री -> FRC में रेड अलायंस वॉल की ओर।

नेटवर्कटेबल्स कीज़:

  • botpose_orb_wpiblue
  • botpose_orb_wpired
  • botpose_orb

JSON कीज़:

  • botpose_orb_wpiblue
  • botpose_orb_wpired
  • botpose_orb
  • (प्रति फिडूशियल टारगेट) t6r_fs_orb - केवल इस टैग के आधार पर megatag2 का उपयोग करके फील्ड स्पेस में रोबोट पोज़ (कोई मल्टीटैग नहीं)

इस अत्यधिक अस्पष्ट एकल-टैग मामले में MegaTag2 (लाल रोबोट) और Megatag (नीला रोबोट) के बीच अंतर देखें


  • गोल्ड सिलेंडर / रेड रोबोट: अनफिल्टर्ड Megatag2 botpose
  • येलो सिलेंडर: अनफिल्टर्ड सिंगल-टैग Megatag2 botposes

  • व्हाइट सिलेंडर/ब्लू रोबोट: MegaTag1 Botpose
  • ग्रीन सिलेंडर: व्यक्तिगत प्रति-टैग बोट पोज़ (MT1)
  • ब्लू सिलेंडर: व्यक्तिगत प्रति-टैग बोट पोज़ का औसत (MT1)

info

2024 में, WPILib इकोसिस्टम का अधिकांश भाग एकल-मूल कोऑर्डिनेट सिस्टम में स्थानांतरित हो गया। 2023 में, आपका कोऑर्डिनेट सिस्टम मूल आपके एलायंस कलर के आधार पर बदलता था।

2024 और उसके बाद के लिए, आपके कोऑर्डिनेट सिस्टम का मूल हमेशा "ब्लू" मूल होना चाहिए। FRC टीमों को पोज़-संबंधित कार्यक्षमता के लिए हमेशा botpose_orb_wpiblue का उपयोग करना चाहिए

WPILib के पोज़ एस्टीमेटर का उपयोग

  LimelightHelpers.SetRobotOrientation("limelight", m_poseEstimator.getEstimatedPosition().getRotation().getDegrees(), 0, 0, 0, 0, 0);
LimelightHelpers.PoseEstimate mt2 = LimelightHelpers.getBotPoseEstimate_wpiBlue_MegaTag2("limelight");
if(Math.abs(m_gyro.getRate()) > 720) // यदि हमारा कोणीय वेग 720 डिग्री प्रति सेकंड से अधिक है, तो विज़न अपडेट को अनदेखा करें
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}
if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.7,.7,9999999));
m_poseEstimator.addVisionMeasurement(
mt2.pose,
mt2.timestampSeconds);
}

अपने Limelight के रोबोट-स्पेस पोज़ को कॉन्फ़िगर करना

LL फॉरवर्ड, LL राइट, और LL अप रोबोट के फॉरवर्ड, राइट, और अप वेक्टर्स के साथ दूरियों का प्रतिनिधित्व करते हैं यदि आप रोबोट को एम्बॉडी करते हैं। (मीटर में)। LL रोल, पिच, और यॉ डिग्री में आपके Limelight का रोटेशन दर्शाते हैं। आप इन मानों को संशोधित कर सकते हैं और 3D व्यूअर में Limelight के 3D मॉडल में परिवर्तन देख सकते हैं। Limelight कैमरा स्पेस में टारगेट पोज़ से -> फील्ड स्पेस में रोबोट पोज़ तक जाने के लिए आंतरिक रूप से इस कॉन्फ़िगरेशन का उपयोग करता है।