ממשק NetworkTables
מערכת ההפעלה של Limelight כוללת לקוח NetworkTables 4. הוא מתחבר אוטומטית לשרת NetworkTables 4 הפועל על רובוטים של FRC על בסיס מספר הקבוצה / המזהה שהוגדר בממשק הגדרות המשתמש.
כל הנתונים מפורסמים לטבלה התואמת את שם המכשיר (למשל "limelight"). אם הוקצה שם מארח / כינוי למצלמה שלך, שם הטבלה יתאים לשם המלא של limelight (למשל "limelight-top").
LimelightLib WPIJava ו-LimelightLib WPICPP מתקשרים עם מכשירי Limelight באמצעות NetworkTables.
נתוני מיקוד בסיסיים
השתמש בקוד הבא:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumber("<variablename>",0.0);
NetworkTables.getTable("limelight").getNumber('<variablename>');
כדי לאחזר את הנתונים הבאים:
מפתח | סוג | תיאור |
---|---|---|
tv | int | 1 אם קיימת מטרה תקפה. 0 אם אין מטרות תקפות |
tx | double | היסט אופקי מהצלב למטרה (LL1: -27 מעלות עד 27 מעלות / LL2: -29.8 עד 29.8 מעלות) |
ty | double | היסט אנכי מהצלב למטרה (LL1: -20.5 מעלות עד 20.5 מעלות / LL2: -24.85 עד 24.85 מעלות) |
txnc | double | היסט אופקי מהפיקסל הראשי למטרה (מעלות) |
tync | double | היסט אנכי מהפיקסל הראשי למטרה (מעלות) |
ta | double | שטח המטרה (0% מהתמונה עד 100% מהתמונה) |
tl | double | תרומת השהיית הצינור (מילישניות). הוסף ל-"cl" כדי לקבל את השהיה הכוללת. |
cl | double | השהיית צינור הלכידה (מילישניות). הזמן בין סוף החשיפה של השורה האמצעית של החיישן לתחילת צינור המעקב. |
t2d | double | מערך המכיל מספר ערכים עבור סטטיסטיקות תואמות זמן: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector , targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees] |
getpipe | int | אינדק ס הצינור הפעיל האמיתי של המצלמה (0 .. 9) |
getpipetype | string | סוג הצינור, למשל "pipe_color" |
json | string | הטלת JSON מלאה של תוצאות המיקוד. חייב להיות מופעל לכל צינור בלשונית 'פלט' |
tclass | string | שם המחלקה של תוצאת הגלאי העצבי הראשי או תוצאת המסווג העצבי |
tc | doubleArray | קבל את צבע ה-HSV הממוצע מתחת לאזור הצלב (אזור של 3x3 פיקסלים) כמערך מספרים |
hb | double | ערך דופק. עולה פעם אחת בכל פריים, מתאפס ב-2 מיליארד |
hw | doubleArray | מדדי חומרה [fps, טמפרטורת מעבד, שימוש בזיכרון RAM, טמפרטורה] |
crosshairs | doubleArray | צלבים דו-ממדיים [cx0, cy0, cx1, cy1] |
tcclass | string | שם המחלקה המחושבת של צינור המסווג |
tdclass | string | שם הזיהוי הראשי של צינור הגלאי |
AprilTag ונתוני תלת-ממד
השתמש בקוד הבא:
- Java
- C++
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->GetNumberArray("<variablename>",std::vector<double>(6));
כדי לאחזר את הנתונים הבאים:
מפתח | סוג | תיאור |
---|---|---|
botpose | doubleArray | טרנספורמציית הרובוט במרחב השדה. תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
botpose_wpiblue | doubleArray | טרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
botpose_wpired | doubleArray | טרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
botpose_orb | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
botpose_orb_wpiblue | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג הכחולה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
botpose_orb_wpired | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג האדומה). תרגום (X,Y,Z) במטרים, סיבוב (גלגול, עלרוד, סבסוב) במעלות, השהיה כוללת (cl+tl), מספר תגים, מרווח תגים, מרחק ממוצע של תג מהמצלמה, שטח ממוצע של תג (אחוז מהתמונה) |
camerapose_targetspace | doubleArray | טרנספורמציה תלת-ממדית של המצלמה במערכת הקואורדינטות של ה-AprilTag הראשי הנראה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות) |
targetpose_cameraspace | doubleArray | טרנספורמציה תלת-ממדית של ה-AprilTag הראשי הנראה במערכת הקואורדינטות של המצלמה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות) |
targetpose_robotspace | doubleArray | טרנספורמציה תלת-ממדית של ה-AprilTag הראשי הנראה במערכת הקואורדינטות של הרובוט (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות) |
botpose_targetspace | doubleArray | טרנספורמציה תלת-ממדית של הרובוט במערכת הקואורדינטות של ה-AprilTag הראשי הנראה (מערך (6)) [tx, ty, tz, pitch, yaw, roll] (מטרים, מעלות) |
camerapose_robotspace | doubleArray | טרנספורמציה תלת-ממדית של המצלמה במערכת הקואורדינטות של הרובוט (מערך (6)) |
tid | int | מזהה של ה-AprilTag הראשי הנראה |
camerapose_robotspace_set | doubleArray | הגדר את מיקום המצלמה במערכת הקואורדינטות של הרובוט. |
priorityid | int | הגדר את המזהה הנדרש עבור מיקוד tx/ty. התעלם ממטרות אחרות. לא משפיע על מיקום |
robot_orientation_set | doubleArray | הגדר את כיוון הרובוט ומהירויות הסיבוב במעלות ומעלות לשנייה [yaw,yawrate,pitch,pitchrate,roll,rollrate] |
fiducial_id_filters_set | doubleArray | עקוף מזהי fiducial תקפים למיקום (מערך) |
fiducial_offset_set | doubleArray | הגדר את היסט נקודת העניין התלת-ממדית [x,y,z] |
בקרת מצלמה
השתמשו בקוד הבא:
- Java
- LabView
- C++
- Python
NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);
nt::NetworkTableInstance::GetDefault().GetTable("limelight")->PutNumber("<variablename>",<value>);
NetworkTables.getTable("limelight").putNumber('<variablename>',<value>)
כדי להגדיר את הנתונים הבאים:
ledMode | מגדיר את מצב הלד של limelight |
---|---|
[0] | השתמש במצב הלד שהוגדר בצינור הנוכחי |
[1] | כפה כיבוי |
[2] | כפה הבהוב |
[3] | כפה הדלקה |
pipeline | מגדיר את הצינור הנוכחי של limelight |
---|---|
0 .. 9 | בחר צינור 0..9 |
stream | מגדיר את מצב הזרימה של limelight |
---|---|
0 | סטנדרטי - זרמים זה לצד זה אם מצלמת רשת מחוברת ל-Limelight |
1 | PiP ראשי - זרם המצלמה המשנית ממוקם בפינה הימנית התחתונה של זרם המצלמה הראשית |
2 | PiP משני - זרם המצלמה הראשית ממוקם בפינה הימנית ה תחתונה של זרם המצלמה המשנית |
crop | (מערך) מגדיר את מלבן החיתוך. הצינור חייב להשתמש במלבן החיתוך ברירת המחדל בממשק האינטרנט. המערך חייב להכיל בדיוק 4 ערכים. |
---|---|
[0] | X0 - ערך X מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1) |
[1] | X1 - ערך X מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1) |
[2] | Y0 - ערך Y מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1) |
[3] | Y1 - ערך Y מינימלי או מקסימלי של מלבן החיתוך (-1 עד 1) |
- Java
- C++
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);
wip
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 | מערך מחרוזות של נתוני ברקוד |