ממשק 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 מלא של תוצאות המיקוד. חייב להיות מופעל לכל צינור בלשונית 'output' |
| tclass | string | שם המחלקה של תוצאת גלאי הרשת העצבית הראשית או תוצאת מסווג הרשת העצבית |
| tc | doubleArray | קבל את צבע HSV הממוצע מתחת לאזור הכוונת (אזור של 3x3 פיקסלים) כמערך מספרים |
| hb | double | ערך פעימת לב. עולה פעם אחת לכל פריים, מתאפס ב-2 מיליארד |
| hw | doubleArray | מדדי חומרה [fps, טמפרטורת מעבד, שימוש בזיכרון, טמפרטורה] |
| 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) במטרים סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (cl+tl), מספר תגיות, טווח תגיות, מרחק ממוצע של תגית מהמצלמה, שטח תגית ממוצע (אחוז מהתמונה) |
| botpose_wpiblue | doubleArray | טרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג הכחולה). תזוזה (X,Y,Z) במטרים סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (cl+tl), מספר תגיות, טווח תגיות, מרחק ממוצע של תגית מהמצלמה, שטח תגית ממוצע (אחוז מהתמונה) |
| botpose_wpired | doubleArray | טרנספורמציית הרובוט במרחב השדה (מקור WPILIB של תחנת הנהג האדומה). תזוזה (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (cl+tl), מספר תגיות, טווח תגיות, מרחק ממוצע של תגית מהמצלמה, שטח תגית ממוצע (אחוז מהתמונה) |
| botpose_orb | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2). תזוזה (X,Y,Z) במטרים סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (cl+tl), מספר תגיות, טווח תגיות, מרחק ממוצע של תגית מהמצלמה, שטח תגית ממוצע (אחוז מהתמונה) |
| botpose_orb_wpiblue | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג הכחולה). תזוזה (X,Y,Z) במטרים סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (cl+tl), מספר תגיות, טווח תגיות, מרחק ממוצע של תגית מהמצלמה, שטח תגית ממוצע (אחוז מהתמונה) |
| botpose_orb_wpired | doubleArray | טרנספורמציית הרובוט במרחב השדה (Megatag2) (מקור WPILIB של תחנת הנהג האדומה). תזוזה (X,Y,Z) במטרים, סיבוב (Roll,Pitch,Yaw) במעלות, השהיה כוללת (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 הראשי הנראה |
| stddevs | doubleArray | סטיות תקן של MegaTag [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw] |
| 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 | מגדיר את מצב ה-LED של limelight |
|---|---|
| [0] | השתמש במצב LED שהוגדר בצינור הנוכחי |
| [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) |
| throttle_set | (int) אנו ממליצים להגדיר זאת ל-100-200 כשהרובוט מושבת. מגדיר את מספר הפריימים לדלג ביניהם בין פריימים מעובדים כדי להפחית עליית טמפרטורה. הפלטים לא מתאפסים במהלך פריימים שדולגו. |
|---|
- 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
בקרות IMU
| מפתח | סוג | תיאור |
|---|---|---|
| imumode_set | int | הגדר את מצב ה-imu. 0 - השתמש ב-imu חיצוני, 1 - השתמש ב-imu חיצוני, זרע imu פנימי, 2 - השתמש בפנימי, 3 - השתמש בפנימי עם התכנסות בסיוע MT1, 4 - השתמש ב-IMU פנימי עם התכנסות בסיוע IMU חיצוני |
| imuassistalpha_set | double | אלפא / עוצמה של פילטר משלים. ערכים גבוהים יותר יגרמו ל-imu הפנימי להתכנס למקור הסיוע מהר יותר. ברירת המחדל מוגדרת לערך נמוך 0.001 כי כעת אנו סומכים על ה-IMU הפנימי יותר מבעבר. מצבי סיוע בנויים "למשוך" בעדינות רבה את ה-imu הפנימי לכיוון מקור הסיוע שנבחר. |
Python
סקריפטי Python מאפשרים נתונים נכנסים ויוצאים שרירותיים.
| llpython | מערך מספרים שנשלח על ידי סקריפטי python. זה נגיש בתוך קוד הרובוט. |
| llrobot | מערך מספרים שנשלח על ידי הרובוט. זה נגיש בתוך SnapScripts של python. |
נתונים גולמיים
פינות:
הפעל "send contours" בלשונית "Output" כדי לשדר קואורדינטות פינות:
| 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.....] |
זיהויים גולמיים:
קבל את כל תוצאות הזיהוי העצבי התקפות (לא מסוננות)
| rawdetections | [id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....] |
ברקודים גולמיים:
קבל את כל תוצאות הברקוד התקפות (לא מסוננות)
| rawbarcodes | מערך מחרוזות של נתוני ברקוד |