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

रोबोट लोकलाइजेशन 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 में लाल गठबंधन दीवार का सामना करना।

NetworkTables कुंजियाँ:

  • 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 के Pose Estimator का उपयोग करना

  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 आंतरिक रूप से कैमरा स्पेस में लक्ष्य पोज़ से फील्ड स्पेस में रोबोट पोज़ तक जाने के लिए इस कॉन्फ़िगरेशन का उपयोग करता है।