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

ממשק 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, טמפרטורת מעבד, שימוש בזיכרון, טמפרטורה]
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מגדיר את מצב הנורית של limelight
[0]השתמש במצב LED שהוגדר בצינור הנוכחי
[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)
throttle_set(int) אנו ממליצים להגדיר זאת ל-100-200 כאשר מושבת. קובע את מספר הפריימים לדלג בין פריימים מעובדים כדי להפחית את עליית הטמפרטורה. הפלטים אינם מאופסים במהלך פריימים שדולגו.
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);

בקרת IMU

מפתחסוגתיאור
imumode_setintהגדר את מצב ה-imu. 0 - השתמש ב-imu חיצוני, 1 - השתמש ב-imu חיצוני, אתחל imu פנימי, 2 - השתמש בפנימי, 3 - השתמש בפנימי עם התכנסות בסיוע MT1, 4 - השתמש ב-IMU פנימי עם התכנסות בסיוע IMU חיצוני
imuassistalpha_setdoubleאלפא / עוצמת פילטר משלים. ערכים גבוהים יותר יגרמו ל-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 מערך מחרוזות של נתוני ברקוד