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

מפרט תוצאות JSON

פלט תוצאות ה-JSON של Limelight הוא אוסף של מערכים המכילים תוצאות מיקוד. קיימים מערכים נפרדים עבור תוצאות רטרו-רפלקטיביות, פידוציאליות, מסווג נוירוני וגלאי נוירוני. JSON הוא קריא לאדם וקל לניתוח בכל שפה ובכל פלטפורמה, ולכן הוא מושלם לרוב המקרים.

ניתן לקבל את אותו פלט תוצאות JSON באמצעות ממשקי ה-REST/HTTP, Websocket ו-NetworkTables.

ניתוח פלט JSON זה הוא קל מאוד עם ספריות ה-FRC שלנו.

ל-Limelightlib יש פונקציונליות מובנית שמנתחת את ה-JSON Dump לאובייקט LimelightResults.

https://github.com/LimelightVision/limelightlib-wpijava

https://github.com/LimelightVision/limelightlib-wpicpp

כל תוצאת JSON מכילה את הרשומות הבאות:

שם המפתחתיאור הערך
tlזמן השהיה של המיקוד (אלפיות שניה שנצרכו על ידי לולאת המעקב בפריים זה)
clזמן השהיה של הלכידה (אלפיות שניה בין סוף החשיפה של השורה האמצעית לתחילת לולאת המעקב)
txהיסט אופקי מהצלב למטרה (LL1: -27 מעלות עד 27 מעלות / LL2: -29.8 עד 29.8 מעלות)
tyהיסט אנכי מהצלב למטרה (LL1: -20.5 מעלות עד 20.5 מעלות / LL2: -24.85 עד 24.85 מעלות)
txncהיסט אופקי מהפיקסל הראשי למטרה (מעלות)
tyncהיסט אנכי מהפיקסל הראשי למטרה (מעלות)
taשטח מנורמל ולא מעוות של המטרה (0-100)
PythonOutנתוני פלט מצינורות SnapScript של פייתון
stdev_mt1סטיית תקן MT1 [x, y, z, גלגול, עלרוד, סבסוב] (מטרים, מעלות)
stdev_mt2סטיית תקן MT2 [x, y, z, גלגול, עלרוד, סבסוב] (מטרים, מעלות)
pIDאינדקס הצינור הנוכחי
pTYPEסוג הצינור הנוכחי למשל "pipe_color"
tsחותמת זמן באלפיות שניה מההפעלה
vמחוון תקפות. 1 = מטרות תקפות, 0 = אין מטרות תקפות
botposeמיקום הרובוט (MegaTag): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_wpiredמיקום הרובוט (MegaTag, תחנת הנהג האדומה של WPI): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_wpiblueמיקום הרובוט (MegaTag, תחנת הנהג הכחולה של WPI): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_orbמיקום הרובוט (MegaTag2): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_orb_wpiredמיקום הרובוט (MegaTag2, תחנת הנהג האדומה של WPI): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_orb_wpiblueמיקום הרובוט (MegaTag2, תחנת הנהג הכחולה של WPI): x,y,z, גלגול, עלרוד, סבסוב (מטרים, מעלות)
botpose_avgareaשטח ממוצע של התגים ששימשו לחישוב מיקום הרובוט
botpose_avgdistמרחק מקסימלי בין התגים ששימשו לחישוב מיקום הרובוט (מטרים)
botpose_spanמרחק מקסימלי בין התגים ששימשו לחישוב מיקום הרובוט (מטרים)
botpose_tagcountמספר התגים ששימשו לחישוב מיקום הרובוט
Retroמערך תוצאות צינור צבע/רטרו-רפלקטיבי
Fiducialמערך תוצאות צינור AprilTag
Detectorמערך תוצאות צינור גלאי נוירוני
Classifierמערך תוצאות צינור מסווג
Barcodeמערך תוצאות צינור ברקוד

תוצאות צבע/רטרו-רפלקטיבי

המערך "Retro" מכיל רשומות עם המבנה הבא:

שם המפתחתיאור הערך
t6c_tsתנוחת המצלמה במרחב המטרה כפי שחושבה על ידי solvepnp (x,y,z,rx,ry,rz)
t6r_fsתנוחת הרובוט במרחב השדה כפי שחושבה על ידי solvepnp (x,y,z,rx,ry,rz)
t6r_tsתנוחת הרובוט במרחב המטרה כפי שחושבה על ידי solvepnp (x,y,z,rx,ry,rz)
t6t_csתנוחת המטרה במרחב המצלמה כפי שחושבה על ידי solvepnp (x,y,z,rx,ry,rz)
t6t_rsתנוחת המטרה במרחב הרובוט כפי שחושבה על ידי solvepnp (x,y,z,rx,ry,rz)
taגודל המטרה כאחוז מהתמונה (0-1)
txקואורדינטת X של מרכז המטרה במעלות ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tx_nocrossקואורדינטת X של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
txpקואורדינטת X של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tyקואורדינטת Y של מרכז המטרה במעלות ביחס לכוונת. חיובי-למטה, מרכז-אפס
ty_nocrossקואורדינטת Y של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
typקואורדינטת Y של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-למטה, מרכז-אפס
ptsמערך פינות (פיקסלים) [x0,y0,x1,y1.....]. חייב להיות מופעל בלשונית הפלט
דוגמת JSON עבור צינורות צבע / רטרו-רפלקטיבי
{
"Barcode": [],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"PythonOut": [],
"Retro": [
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.00531171215698123,
"tx": -4.535492777705656,
"tx_nocross": -4.428826910553056,
"txp": 542.53076171875,
"ty": -1.1722867231218714,
"ty_nocross": -0.09285491974145543,
"typ": 504.5538635253906
},
{
"pts": [],
"t6c_ts": [],
"t6r_fs": [],
"t6r_ts": [],
"t6t_cs": [],
"t6t_rs": [],
"ta": 0.005779948551207781,
"tx": 8.465099348209478,
"tx_nocross": 8.571765215362078,
"txp": 822.1087036132812,
"ty": -2.524207730360601,
"ty_nocross": -1.444775926980185,
"typ": 533.6112060546875
},
],
"botpose": [
0,
0,
0,
0,
0,
0
],
"botpose_avgarea": 0,
"botpose_avgdist": 0,
"botpose_orb": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_orb_wpired": [
0,
0,
0,
0,
0,
0
],
"botpose_span": 0,
"botpose_tagcount": 0,
"botpose_wpiblue": [
0,
0,
0,
0,
0,
0
],
"botpose_wpired": [
0,
0,
0,
0,
0,
0
],
"cl": 37.619998931884766,
"focus_metric": 0,
"pID": 0,
"pTYPE": "pipe_color",
"stdev_mt1": [
0,
0,
0,
0,
0,
0
],
"stdev_mt2": [
0,
0,
0,
0,
0,
0
],
"t6c_rs": [
0,
0,
0,
0,
0,
0
],
"ta": 0.39156023412942886,
"tl": 22.64053726196289,
"ts": 215248.979204,
"tx": -4.3848327488723555,
"txnc": -4.278166881719756,
"ty": -1.1144596937982527,
"tync": -0.035027890417836716,
"v": 1
}

תוצאות AprilTag/Fiducial

המערך "Fiducial" מכיל רשומות עם המבנה הבא:

שם המפתחתיאור הערך
fidמזהה תג Fiducial
famמשפחת Fiducial (16H5C, 25H9C, 36H11C, וכו')
ptsמחזיר נקודות פינה בודדות. חייב להיות מופעל.
skewלא בשימוש כרגע
t6c_tsתנוחת המצלמה במרחב היעד כפי שחושבה על ידי fiducial זה (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
t6r_fsתנוחת הרובוט במרחב השדה כפי שחושבה על ידי fiducial זה (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
t6r_fs_orbתנוחת הרובוט במרחב השדה כפי שחושבה על ידי fiducial זה (Megatag2) (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
t6r_tsתנוחת הרובוט במרחב היעד כפי שחושבה על ידי fiducial זה (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
t6t_csתנוחת היעד במרחב המצלמה כפי שחושבה על ידי fiducial זה (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
t6t_rsתנוחת היעד במרחב הרובוט כפי שחושבה על ידי fiducial זה (x,y,z,pitch,yaw,roll) (מטרים, מעלות)
taגודל היעד כאחוז מהתמונה (0-1)
txקואורדינטת X של מרכז היעד במעלות ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tx_nocrossקואורדינטת X של מרכז היעד במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
txpקואורדינטת X של מרכז היעד בפיקסלים ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tyקואורדינטת Y של מרכז היעד במעלות ביחס לכוונת. חיובי-למטה, מרכז-אפס
ty_nocrossקואורדינטת Y של מרכז היעד במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
typקואורדינטת Y של מרכז היעד בפיקסלים ביחס לכוונת. חיובי-למטה, מרכז-אפס
ptsמערך פינות (פיקסלים) [x0,y0,x1,y1.....]. חייב להיות מופעל בלשונית הפלט
דוגמת JSON עבור צינורות AprilTag
{
"Classifier": [],
"Detector": [],
"Fiducial": [
{
"fID": 2,
"fam": "16H5C",
"pts": [],
"skew": [],
"t6c_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6r_fs": [
4.738896418276903,
-1.5926603672041666,
0.5194469577830592,
4.522658587661256,
4.258580454853879,
5.5236539893713275
],
"t6r_ts": [
0.33247368976801916,
-0.05672695778305914,
-2.5042031405987144,
-4.680849607956358,
-5.171154989721864,
4.528697946312339
],
"t6t_cs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"t6t_rs": [
-0.09991902572799474,
-0.1234042720218289,
2.5218203039582496,
4.278368708252767,
5.508508005282244,
-4.1112864453027775
],
"ta": 0.005711808800697327,
"tx": -2.0525293350219727,
"txp": 149.4874725341797,
"ty": 2.7294836044311523,
"typ": 107.14710235595703
}
],
"Retro": [],
"pID": 0,
"tl": 19.78130340576172,
"ts": 3284447.910569,
"v": 1
}

תוצאות גלאי נוירונים

המערך "Detector" מכיל רשומות עם המבנה הבא:

שם המפתחתיאור הערך
classמחרוזת שם המחלקה הקריאה לאדם
classIDמספר שלם של מזהה המחלקה
confרמת הביטחון של התחזית
ptsנקודות פינה בודדות כמערך של [x,y] בפיקסלים. מרכז-אפס, חיובי ימינה ולמטה. חייב להיות מופעל.
taגודל המטרה כאחוז מהתמונה (0-1)
txקואורדינטת X של מרכז המטרה במעלות ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tx_nocrossקואורדינטת X של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
txpקואורדינטת X של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tyקואורדינטת Y של מרכז המטרה במעלות ביחס לכוונת. חיובי-למטה, מרכז-אפס
ty_nocrossקואורדינטת Y של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
typקואורדינטת Y של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-למטה, מרכז-אפס
ptsמערך פינות (פיקסלים) [x0,y0,x1,y1.....]. חייב להיות מופעל בלשונית הפלט
דוגמת JSON עבור צינורות גלאי
{
"Classifier": [],
"Detector": [
{
"class": "person",
"classID": 0,
"conf": 0.83984375,
"pts": [],
"ta": 0.2608712911605835,
"tx": -2.45949649810791,
"txp": 147.5,
"ty": -10.066887855529785,
"typ": 165.5
}
],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 63.50614547729492,
"ts": 4932985.266867,
"v": 1
}

תוצאות המסווג העצבי

המערך "Classifier" מכיל רשומות עם המבנה הבא:

שם המפתחתיאור הערך
classמחרוזת שם המחלקה בשפה קריאה לאדם
classIDמספר שלם של מזהה המחלקה
confרמת הביטחון של התחזית
דוגמת JSON עבור צינורות מסווג
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}

תוצאות ברקוד

המערך "Barcode" מכיל רשומות עם המבנה הבא:

שם המפתחתיאור הערך
famמשפחת הברקוד, לדוגמה "qr"
dataמידע מפוענח של הברקוד כמחרוזת
taגודל המטרה כאחוז מהתמונה (0-1)
txקואורדינטת X של מרכז המטרה במעלות ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tx_nocrossקואורדינטת X של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
txpקואורדינטת X של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-ימינה, מרכז-אפס
tyקואורדינטת Y של מרכז המטרה במעלות ביחס לכוונת. חיובי-למטה, מרכז-אפס
ty_nocrossקואורדינטת Y של מרכז המטרה במעלות ביחס לפיקסל הראשי. חיובי-ימינה, מרכז-אפס
typקואורדינטת Y של מרכז המטרה בפיקסלים ביחס לכוונת. חיובי-למטה, מרכז-אפס
ptsמערך פינות (בפיקסלים) [x0,y0,x1,y1.....]. חייב להיות מופעל בלשונית הפלט
דוגמת JSON עבור צינורות ברקוד
{
"Barcode": [
{
"fam": "QR",
"data": "Hello, World!",
"txp": 150.5,
"typ": 120.75,
"tx": -2.5,
"ty": 1.8,
"tx_nocross": -2.3,
"ty_nocross": 2.0,
"ta": 0.05,
"pts": [[140, 110], [160, 110], [160, 130], [140, 130]]
}
],
"Classifier": [],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 15.2,
"ts": 4751332.7542280005,
"v": 1
}