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

ממשק NetworkTables

מערכת ההפעלה של Limelight כוללת לקוח 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) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה)
botpose_wpibluedoubleArrayטרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה)
botpose_wpireddoubleArrayטרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה)
botpose_orbdoubleArrayטרנספורמציית הרובוט במרחב השדה (Megatag2). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה)
botpose_orb_wpibluedoubleArrayטרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה)
botpose_orb_wpireddoubleArrayטרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (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 הראשי הנראה
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מגדיר את מצב הלד של limelight
[0]השתמש במצב הלד שהוגדר בצינור הנוכחי
[1]כפה כיבוי
[2]כפה הבהוב
[3]כפה הדלקה
pipelineמגדיר את הצינור הנוכחי של limelight
0 .. 9בחר צינור 0..9
streamמגדיר את מצב הזרימה של limelight
0סטנדרטי - זרמים זה לצד זה אם מצלמת רשת מחוברת ל-Limelight
1PiP ראשי - זרם המצלמה המשנית ממוקם בפינה הימנית התחתונה של זרם המצלמה הראשית
2PiP משני - זרם המצלמה הראשית ממוקם בפינה הימנית התחתונה של זרם המצלמה המשנית
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מערך מספרים הנשלח על ידי הרובוט. ניתן לגשת אליו בתוך סקריפטי Snap של Python.

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

פינות:

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

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

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

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

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

Fiducials גולמיים:

קבל את כל ה-fiducials התקפים (לא מסוננים)

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

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

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

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

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

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

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