דלג לתוכן הראשי

איתור רובוט עם MegaTag

אם תנוחת הרובוט של ה-Limelight שלך הוגדרה בממשק המשתמש באינטרנט, ומפת השדה הועלתה דרך ממשק המשתמש באינטרנט, אז מיקום הרובוט במרחב השדה יהיה זמין דרך getBotpose() ומערך ה-"botpose" ב-networktables (x,y,z במטרים, roll, pitch, yaw במעלות).

אלגוריתם איתור הרובוט שלנו נקרא MegaTag. אם יותר מתג אחד נראה, הוא עמיד בפני עמימויות של תגים בודדים ורעש בתמונה. אם כל נקודות המפתח הן במישור אחד, עדיין קיים סיכון מסוים להיפוך עמימות.

  • גליל ירוק: תנוחת רובוט לכל תג בנפרד
  • גליל כחול: תנוחת רובוט ישנה
  • גליל לבן: תנוחת רובוט MegaTag

שימו לב לעמימות התנוחה הברורה כאן:

שימו לב כיצד תנוחת הרובוט החדשה (גליל לבן) יציבה מאוד בהשוואה לתנוחת הרובוט הישנה (גליל כחול). אתם יכולים לצפות גם בערכי tx ו-ty.

זה לא מוגבל לתגים מישוריים. זה מתרחב לכל מספר של תגים בתלת-ממד מלא ובכל כיוון. תגי רצפה ותגי תקרה עובדים בצורה מושלמת.

הנה תרשים המדגים היבט אחד של איך זה עובד במקרה מישורי פשוט. התוצאות למעשה טובות יותר ממה שמוצג, כיוון שה-MegaTag המוצג יש שגיאה משמעותית המוחלת על שלוש נקודות במקום על נקודה אחת. ככל שה-MegaTag התלת-ממדי המשולב גדל בגודל ובמספר נקודות המפתח, היציבות שלו עולה.

דוגמה לתנוחת רובוט megatag:

שימוש ב-Pose Estimator של WPILib

info

בשנת 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 שלך במעלות. אתה יכול לשנות ערכים אלה ולצפות במודל התלת-ממדי של ה-Limelight משתנה בתצוגה התלת-ממדית. Limelight משתמש בתצורה זו באופן פנימי כדי לעבור מתנוחת המטרה במרחב המצלמה -> תנוחת הרובוט במרחב השדה.