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