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

מפרט תוצאות 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 של Python
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
}