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

מפרט תוצאות 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, roll, pitch, yaw] (מטרים, מעלות)
stdev_mt2סטיית תקן MT2 [x, y, z, roll, pitch, yaw] (מטרים, מעלות)
pIDאינדקס צינור נוכחי
pTYPEסוג צינור נוכחי לדוגמה "pipe_color"
tsחותמת זמן במילישניות מהאתחול
vמחוון תקפות. 1 = מטרות תקפות, 0 = אין מטרות תקפות
botposeמיקום רובוט (MegaTag): x,y,z, roll, pitch, yaw (מטרים, מעלות)
botpose_wpiredמיקום רובוט (MegaTag, תחנת נהג WPI אדומה): x,y,z, roll, pitch, yaw (מטרים, מעלות)
botpose_wpiblueמיקום רובוט (MegaTag, תחנת נהג WPI כחולה): x,y,z, roll, pitch, yaw (מטרים, מעלות)
botpose_orbמיקום רובוט (MegaTag2): x,y,z, roll, pitch, yaw (מטרים, מעלות)
botpose_orb_wpiredמיקום רובוט (MegaTag2, תחנת נהג WPI אדומה): x,y,z, roll, pitch, yaw (מטרים, מעלות)
botpose_orb_wpiblueמיקום רובוט (MegaTag2, תחנת נהג WPI כחולה): x,y,z, roll, pitch, yaw (מטרים, מעלות)
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
}