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 séparés existent pour les résultats rétroréfléchissants, fiduciaires, classificateurs neuronaux et détecteurs neuronaux. Le JSON est lisible par l'homme et facile à analyser dans n'importe quel langage sur n'importe quelle plateforme, ce qui le rend parfait pour la plupart des cas d'utilisation.

La même sortie de résultats JSON peut être récupérée en utilisant 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 dump JSON 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 Vers la Cible (LL1 : -27 degrés à 27 degrés / LL2 : -29.8 à 29.8 degrés)
tyDécalage Vertical Du Réticule Vers la Cible (LL1 : -20.5 degrés à 20.5 degrés / LL2 : -24.85 à 24.85 degrés)
txncDécalage Horizontal Du Pixel Principal Vers la Cible (degrés)
tyncDécalage Vertical Du Pixel Principal Vers la Cible (degrés)
taSurface normalisée et non distordue de la cible (0-100)
PythonOutDonnées de sortie des pipelines Python SnapScript
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 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, station de pilotage WPI Rouge) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_wpibluePosition du robot (MegaTag, station de pilotage WPI Bleu) : 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, station de pilotage WPI Rouge) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orb_wpibluePosition du robot (MegaTag2, station de pilotage WPI Bleu) : 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 Détecteur Neuronal
ClassifierTableau des résultats du pipeline Classificateur
BarcodeTableau des résultats du pipeline 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_tsPosition de la Caméra dans l'espace de la cible calculée par solvepnp (x,y,z,rx,ry,rz)
t6r_fsPosition du Robot dans l'espace du terrain calculée par solvepnp (x,y,z,rx,ry,rz)
t6r_tsPosition du Robot dans l'espace de la cible calculée par solvepnp (x,y,z,rx,ry,rz)
t6t_csPosition de la Cible dans l'espace de la caméra calculée par solvepnp (x,y,z,rx,ry,rz)
t6t_rsPosition de la Cible dans l'espace du robot calculée par solvepnp (x,y,z,rx,ry,rz)
taLa taille 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/Fiduciaire

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

Nom de la CléDescription de la Valeur
fidID du tag fiduciaire
famFamille Fiduciaire (16H5C, 25H9C, 36H11C, etc)
ptsRetourne les points de coin individuels. Doit être activé.
skewActuellement non utilisé
t6c_tsPosition de la Caméra dans l'espace de la cible calculée par ce fiduciaire (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_fsPosition du Robot dans l'espace du terrain calculée par ce fiduciaire (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_fs_orbPosition du Robot dans l'espace du terrain calculée par ce fiduciaire (Megatag2) (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_tsPosition du Robot dans l'espace de la cible calculée par ce fiduciaire (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6t_csPosition de la Cible dans l'espace de la caméra calculée par ce fiduciaire (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6t_rsPosition de la Cible dans l'espace du robot calculée par ce fiduciaire (x,y,z,tangage,lacet,roulis) (mètres, degrés)
taLa taille 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 Neuronal

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

Nom de la CléDescription de la Valeur
classChaîne de nom de classe lisible par l'homme
classIDEntier ClassID
confConfiance de la prédiction
ptsPoints de coin individuels sous forme de tableau de [x,y] en pixels. Centre-zéro, positif droite et bas. Doit être activé.
taLa taille 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 Détecteur
{
"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 nom de classe lisible par l'homme
classIDEntier ClassID
confConfiance de la prédiction
Exemple JSON pour les Pipelines Classificateur
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}

Résultats Code-barres

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

Nom de la CléDescription de la Valeur
famFamille de Code-barres ex. "qr"
dataDonnées du code-barres décodées sous forme de chaîne
taLa taille 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 Code-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
}