Aller au contenu principal

Spécification des Résultats JSON

La sortie des résultats JSON de Limelight est une collection de tableaux contenant les résultats de ciblage. Des tableaux distincts existent pour les résultats rétroréfléchissants, fiduciaires, de classification neuronale et de détection neuronale. Le JSON est lisible par l'homme et facile à analyser dans n'importe quel langage sur n'importe quelle plateforme, il est donc parfait pour la plupart des cas d'utilisation.

La même sortie de résultats JSON peut être récupérée via les API REST/HTTP, Websocket et NetworkTables.

L'analyse de cette sortie JSON est incroyablement facile avec nos bibliothèques FRC.

Limelightlib dispose d'une fonctionnalité intégrée qui analyse le JSON Dump en un objet LimelightResults.

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

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

Chaque résultat JSON contient les entrées suivantes :

Nom de la CléDescription de la Valeur
tlLatence de ciblage (millisecondes consommées par la boucle de suivi pour cette image)
clLatence de capture (millisecondes entre la fin de l'exposition de la ligne médiane et le début de la boucle de suivi)
txDécalage horizontal du réticule à la cible (LL1 : -27 degrés à 27 degrés / LL2 : -29.8 à 29.8 degrés)
tyDécalage vertical du réticule à la cible (LL1 : -20.5 degrés à 20.5 degrés / LL2 : -24.85 à 24.85 degrés)
txncDécalage horizontal du pixel principal à la cible (degrés)
tyncDécalage vertical du pixel principal à la cible (degrés)
taZone normalisée non déformée de la cible (0-100)
PythonOutDonnées de sortie des pipelines SnapScript Python
stdev_mt1Écart-type MT1 [x, y, z, roulis, tangage, lacet] (mètres, degrés)
stdev_mt2Écart-type MT2 [x, y, z, roulis, tangage, lacet] (mètres, degrés)
pIDIndex du pipeline actuel
pTYPEType de pipeline actuel, par ex. "pipe_color"
tsHorodatage en millisecondes depuis le démarrage
vIndicateur de validité. 1 = cibles valides, 0 = pas de cibles valides
botposePosition du robot (MegaTag) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_wpiredPosition du robot (MegaTag, WPI Red driverstation) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_wpibluePosition du robot (MegaTag, WPI Blue driverstation) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orbPosition du robot (MegaTag2) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orb_wpiredPosition du robot (MegaTag2, WPI Red driverstation) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orb_wpibluePosition du robot (MegaTag2, WPI Blue driverstation) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_avgareaSurface moyenne des tags utilisés pour calculer la position du robot
botpose_avgdistDistance maximale entre les tags utilisés pour calculer la position du robot (mètres)
botpose_spanDistance maximale entre les tags utilisés pour calculer la position du robot (mètres)
botpose_tagcountNombre de tags utilisés pour calculer la position du robot
RetroTableau des résultats du pipeline couleur/rétroréfléchissant
FiducialTableau des résultats du pipeline AprilTag
DetectorTableau des résultats du pipeline de détection neuronale
ClassifierTableau des résultats du pipeline de classification
BarcodeTableau des résultats du pipeline de code-barres

Résultats Couleur/Rétroréfléchissant

Le tableau "Retro" contient des entrées avec la structure suivante :

Nom de la CléDescription de la Valeur
t6c_tsPose de la caméra dans l'espace cible calculée par solvepnp (x,y,z,rx,ry,rz)
t6r_fsPose du robot dans l'espace terrain calculée par solvepnp (x,y,z,rx,ry,rz)
t6r_tsPose du robot dans l'espace cible calculée par solvepnp (x,y,z,rx,ry,rz)
t6t_csPose de la cible dans l'espace caméra calculée par solvepnp (x,y,z,rx,ry,rz)
t6t_rsPose de la cible dans l'espace robot calculée par solvepnp (x,y,z,rx,ry,rz)
taTaille de la cible en pourcentage de l'image (0-1)
txCoordonnée X du centre de la cible en degrés par rapport au réticule. Positif-droite, centre-zéro
tx_nocrossCoordonnée X du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
txpCoordonnée X du centre de la cible en pixels par rapport au réticule. Positif-droite, centre-zéro
tyCoordonnée Y du centre de la cible en degrés par rapport au réticule. Positif-bas, centre-zéro
ty_nocrossCoordonnée Y du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
typCoordonnée Y du centre de la cible en pixels par rapport au réticule. Positif-bas, centre-zéro
ptsTableau des coins (pixels) [x0,y0,x1,y1.....]. Doit être activé dans l'onglet de sortie
Exemple JSON pour les Pipelines Couleur / Rétroréfléchissant
{
"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
}

Résultats AprilTag/Fiducial

Le tableau "Fiducial" contient des entrées avec la structure suivante :

Nom de la cléDescription de la valeur
fidID du tag fiducial
famFamille du fiducial (16H5C, 25H9C, 36H11C, etc)
ptsRenvoie les points des coins individuels. Doit être activé.
skewActuellement inutilisé
t6c_tsPose de la caméra dans l'espace cible calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_fsPose du robot dans l'espace terrain calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_fs_orbPose du robot dans l'espace terrain calculée par ce fiducial (Megatag2) (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_tsPose du robot dans l'espace cible calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6t_csPose de la cible dans l'espace caméra calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6t_rsPose de la cible dans l'espace robot calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
taTaille de la cible en pourcentage de l'image (0-1)
txCoordonnée X du centre de la cible en degrés par rapport au réticule. Positif-droite, centre-zéro
tx_nocrossCoordonnée X du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
txpCoordonnée X du centre de la cible en pixels par rapport au réticule. Positif-droite, centre-zéro
tyCoordonnée Y du centre de la cible en degrés par rapport au réticule. Positif-bas, centre-zéro
ty_nocrossCoordonnée Y du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
typCoordonnée Y du centre de la cible en pixels par rapport au réticule. Positif-bas, centre-zéro
ptsTableau des coins (pixels) [x0,y0,x1,y1.....]. Doit être activé dans l'onglet de sortie
Exemple JSON pour les pipelines 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
}

Résultats du Détecteur Neural

Le tableau "Detector" contient des entrées avec la structure suivante :

Nom de la CléDescription de la Valeur
classChaîne du nom de classe lisible par l'humain
classIDEntier ClassID
confConfiance de la prédiction
ptsPoints des coins individuels sous forme de tableau [x,y] en pixels. Zéro au centre, positif à droite et en bas. Doit être activé.
taTaille de la cible en pourcentage de l'image (0-1)
txCoordonnée X du centre de la cible en degrés par rapport au réticule. Positif-droite, zéro au centre
tx_nocrossCoordonnée X du centre de la cible en degrés par rapport au pixel principal. Positif-droite, zéro au centre
txpCoordonnée X du centre de la cible en pixels par rapport au réticule. Positif-droite, zéro au centre
tyCoordonnée Y du centre de la cible en degrés par rapport au réticule. Positif-bas, zéro au centre
ty_nocrossCoordonnée Y du centre de la cible en degrés par rapport au pixel principal. Positif-droite, zéro au centre
typCoordonnée Y du centre de la cible en pixels par rapport au réticule. Positif-bas, zéro au centre
ptsTableau des coins (pixels) [x0,y0,x1,y1.....]. Doit être activé dans l'onglet de sortie
Exemple JSON pour les Pipelines de Détection
{
"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
}

Résultats du Classificateur Neuronal

Le tableau "Classifier" contient des entrées avec la structure suivante :

Nom de la CléDescription de la Valeur
classChaîne de caractères du nom de classe lisible par l'humain
classIDEntier ClassID
confConfiance de la prédiction
Exemple JSON pour les Pipelines de Classification
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}

Résultats des codes-barres

Le tableau "Barcode" contient des entrées avec la structure suivante :

Nom de la cléDescription de la valeur
famFamille de code-barres, par ex. "qr"
dataDonnées décodées du code-barres sous forme de chaîne
taTaille de la cible en pourcentage de l'image (0-1)
txCoordonnée X du centre de la cible en degrés par rapport au réticule. Positif-droite, centre-zéro
tx_nocrossCoordonnée X du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
txpCoordonnée X du centre de la cible en pixels par rapport au réticule. Positif-droite, centre-zéro
tyCoordonnée Y du centre de la cible en degrés par rapport au réticule. Positif-bas, centre-zéro
ty_nocrossCoordonnée Y du centre de la cible en degrés par rapport au pixel principal. Positif-droite, centre-zéro
typCoordonnée Y du centre de la cible en pixels par rapport au réticule. Positif-bas, centre-zéro
ptsTableau des coins (pixels) [x0,y0,x1,y1.....]. Doit être activé dans l'onglet de sortie
Exemple JSON pour les pipelines de codes-barres
{
"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
}