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 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 rangée du milieu 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 exemple "pipe_color"
tsHorodatage en millisecondes depuis le démarrage
vIndicateur de validité. 1 = cibles valides, 0 = pas de cibles valides
botposeBotpose (MegaTag) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_wpiredBotpose (MegaTag, station de pilotage WPI Rouge) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_wpiblueBotpose (MegaTag, station de pilotage WPI Bleue) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orbBotpose (MegaTag2) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orb_wpiredBotpose (MegaTag2, station de pilotage WPI Rouge) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_orb_wpiblueBotpose (MegaTag2, station de pilotage WPI Bleue) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_avgareaZone moyenne des balises utilisées pour calculer la botpose
botpose_avgdistDistance maximale entre les balises utilisées pour calculer la botpose (mètres)
botpose_spanDistance maximale entre les balises utilisées pour calculer la botpose (mètres)
botpose_tagcountNombre de balises utilisées pour calculer la botpose
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 de 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)
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, 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 vers le 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 vers le 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 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 de coin 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 de terrain calculée par ce fiducial (x,y,z,tangage,lacet,roulis) (mètres, degrés)
t6r_fs_orbPose du robot dans l'espace de 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)
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, 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 vers le 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 vers le 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 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
classNom de classe lisible par l'homme sous forme de chaîne de caractères
classIDEntier représentant l'ID de la classe
confConfiance de la prédiction
ptsPoints de coin 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 vers le 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 vers le 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'homme
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 de 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, par exemple "qr"
dataDonnées décodées du code-barres 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, 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 vers le 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 vers le 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 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
}