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

ממשק NetworkTables

Limelight OS כולל לקוח NetworkTables 4. הוא מתחבר אוטומטית לשרת NetworkTables 4 שרץ על רובוטי FRC בהתבסס על מספר הקבוצה / מזהה שהוגדר בממשק הגדרות.

כל המידע מפורסם לטבלה שתואמת את שם המכשיר (למשל "limelight"). אם הוקצה שם מארח / כינוי למצלמה שלך, שם הטבלה יתאים לשם המלא של ה-limelight (למשל "limelight-top").

LimelightLib WPIJava ו-LimelightLib WPICPP מתקשרים עם מכשירי Limelight באמצעות NetworkTables.

נתוני מעקב בסיסיים

השתמש בקוד הבא:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);

כדי לאחזר את הנתונים הבאים:

מפתחסוגתיאור
tvint1 אם קיימת מטרה תקפה. 0 אם אין מטרות תקפות
txdoubleהיסט אופקי מהצלב למטרה (LL1: -27 מעלות עד 27 מעלות / LL2: -29.8 עד 29.8 מעלות)
tydoubleהיסט אנכי מהצלב למטרה (LL1: -20.5 מעלות עד 20.5 מעלות / LL2: -24.85 עד 24.85 מעלות)
txncdoubleהיסט אופקי מפיקסל ראשי למטרה (מעלות)
tyncdoubleהיסט אנכי מפיקסל ראשי למטרה (מעלות)
tadoubleשטח המטרה (0% מהתמונה עד 100% מהתמונה)
tldoubleתרומת השהיית הצינור (מילישניות). הוסף ל-"cl" כדי לקבל השהייה כוללת
cldoubleהשהיית לכידת הצינור (מילישניות). הזמן בין סוף החשיפה של השורה האמצעית של החיישן לתחילת צינור המעקב
t2ddoubleמערך המכיל מספר ערכים לסטטיסטיקות עם חותמת זמן מותאמת: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector, targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees]
getpipeintאינדקס הצינור הפעיל האמיתי של המצלמה (0 .. 9)
getpipetypestringסוג הצינור למשל "pipe_color"
jsonstringהטלת JSON מלאה של תוצאות המעקב. חייב להיות מופעל לכל צינור בלשונית 'פלט'
tclassstringשם המחלקה של תוצאת הגלאי העצבי הראשי או תוצאת המסווג העצבי
tcdoubleArrayקבל את צבע HSV הממוצע מתחת לאזור הצלב (אזור של 3x3 פיקסלים) כמערך מספרים
hbdoubleערך דופק לב. עולה פעם אחת בכל פריים, מתאפס ב-2 מיליארד
hwdoubleArrayמדדי חומרה [fps, טמפרטורת מעבד, שימוש בזיכרון RAM, טמפרטורה]
crosshairsdoubleArrayצלבים דו-ממדיים [cx0, cy0, cx1, cy1]
tcclassstringשם המחלקה המחושבת של צינור הסיווג
tdclassstringשם הזיהוי הראשי של צינור הגלאי

AprilTag ונתוני תלת-מימד

השתמש בקוד הבא:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);

כדי לאחזר את הנתונים הבאים:

מפתחסוגתיאור
botposedoubleArrayטרנספורמציית הרובוט במרחב המגרש. תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
botpose_wpibluedoubleArrayטרנספורמציית הרובוט במרחב המגרש (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
botpose_wpireddoubleArrayטרנספורמציית הרובוט במרחב המגרש (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
botpose_orbdoubleArrayטרנספורמציית הרובוט במרחב המגרש (Megatag2). תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
botpose_orb_wpibluedoubleArrayטרנספורמציית הרובוט במרחב המגרש (Megatag2) (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
botpose_orb_wpireddoubleArrayטרנספורמציית הרובוט במרחב המגרש (Megatag2) (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהייה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תגים מהמצלמה, שטח תג ממוצע (אחוז מהתמונה)
camerapose_targetspacedoubleArrayטרנספורמציה תלת-מימדית של המצלמה במערכת הקואורדינטות של תג ה-AprilTag הראשי בשדה הראייה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות)
targetpose_cameraspacedoubleArrayטרנספורמציה תלת-מימדית של תג ה-AprilTag הראשי בשדה הראייה במערכת הקואורדינטות של המצלמה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות)
targetpose_robotspacedoubleArrayטרנספורמציה תלת-מימדית של תג ה-AprilTag הראשי בשדה הראייה במערכת הקואורדינטות של הרובוט (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות)
botpose_targetspacedoubleArrayטרנספורמציה תלת-מימדית של הרובוט במערכת הקואורדינטות של תג ה-AprilTag הראשי בשדה הראייה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות)
camerapose_robotspacedoubleArrayטרנספורמציה תלת-מימדית של המצלמה במערכת הקואורדינטות של הרובוט (מערך (6))
tidintמזהה של תג ה-AprilTag הראשי בשדה הראייה
stddevsdoubleArrayסטיות תקן של MegaTag [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw]
camerapose_robotspace_setdoubleArrayהגדר את תנוחת המצלמה במערכת הקואורדינטות של הרובוט.
priorityidintהגדר את המזהה הנדרש עבור מיקוד tx/ty. התעלם ממטרות אחרות. לא משפיע על מיקום
robot_orientation_setdoubleArrayהגדר את כיוון הרובוט ומהירויות זוויתיות במעלות ומעלות לשנייה [yaw,yawrate,pitch,pitchrate,roll,rollrate]
fiducial_id_filters_setdoubleArrayעקוף מזהי fiducial תקפים למיקום (מערך)
fiducial_offset_setdoubleArrayהגדר את היסט נקודת העניין התלת-מימדית [x,y,z]

בקרת מצלמה

השתמש בקוד הבא:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);

כדי להגדיר את הנתונים הבאים:

ledModeקובע את מצב הנורית LED של ה-limelight
[0]השתמש במצב LED שנקבע בצינור הנוכחי
[1]כפה כיבוי
[2]כפה הבהוב
[3]כפה הדלקה
pipelineקובע את הצינור הנוכחי של ה-limelight
0 .. 9בחר צינור 0..9
streamקובע את מצב הזרימה של ה-limelight
0סטנדרטי - זרמים זה לצד זה אם מצלמת רשת מחוברת ל-Limelight
1PiP ראשי - זרם המצלמה המשנית ממוקם בפינה הימנית התחתונה של זרם המצלמה הראשית
[2]PiP משני - זרם המצלמה הראשית ממוקם בפינה הימנית התחתונה של זרם המצלמה המשנית
crop(מערך) קובע את מלבן החיתוך. הצינור חייב להשתמש במלבן החיתוך המוגדר כברירת מחדל בממשק האינטרנט. המערך חייב להכיל בדיוק 4 ערכים.
[0]X0 - ערך X מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1)
[1]X1 - ערך X מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1)
[2]Y0 - ערך Y מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1)
[3]Y1 - ערך Y מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1)
double[] cropValues = new double[4];
cropValues[0] = -1.0;
cropValues[1] = 1.0;
cropValues[2] = -1.0;
cropValues[3] = 1.0;
NetworkTableInstance.getDefault().getTable("limelight").getEntry("crop").setDoubleArray(cropValues);

Python

סקריפטים של Python מאפשרים נתונים נכנסים ויוצאים באופן שרירותי.

llpythonמערך מספרים שנשלח על ידי סקריפטי Python. ניתן לגשת אליו בתוך קוד הרובוט.
llrobotמערך מספרים שנשלח על ידי הרובוט. ניתן לגשת אליו בתוך סקריפטי Python Snap.

נתונים גולמיים

פינות:

הפעל "שלח קונטורים" בכרטיסיית "פלט" כדי להזרים קואורדינטות פינה:

tcornxyמערך מספרים של קואורדינטות פינה [x0,y0,x1,y1......]

מטרות גולמיות:

Limelight מפרסם שלושה קונטורים גולמיים ל-NetworkTables שאינם מושפעים ממצב הקיבוץ שלך. כלומר, הם מסוננים עם פרמטרי הצינור שלך, אך לעולם לא מקובצים. X ו-Y מוחזרים במרחב מסך מנורמל (-1 עד 1) במקום במעלות.

rawtargets[txnc,tync,ta,txnc2,tync2,ta2....]

סמנים פידוציאליים גולמיים:

קבל את כל הסמנים הפידוציאליים התקפים (ללא סינון)

rawfiducials[id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....]

זיהויים גולמיים:

קבל את כל תוצאות הזיהוי העצבי התקפות (ללא סינון)

rawdetections[id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....]

ברקודים גולמיים:

קבל את כל תוצאות הברקוד התקפות (ללא סינון)

rawbarcodesמערך מחרוזות של נתוני ברקוד