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, 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 à l'aide des API REST/HTTP, Websocket et NetworkTables.

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

Limelightlib dispose de fonctionnalités intégrées qui analysent 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 trame)
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 exemple "pipe_color"
tsHorodatage en millisecondes depuis le démarrage.
vIndicateur de validité. 1 = cibles valides, 0 = aucune cible valide
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 Bleu) : 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 Bleu) : x,y,z, roulis, tangage, lacet (mètres, degrés)
botpose_avgareaSurface moyenne des balises utilisées pour calculer botpose
botpose_avgdistDistance maximale entre les balises utilisées pour calculer botpose (mètres)
botpose_spanDistance maximale entre les balises utilisées pour calculer botpose (mètres)
botpose_tagcountNombre de balises utilisées pour calculer 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échissants

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, 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échissants
{
"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,pitch,yaw,roll) (mètres, degrés)
t6r_fsPose du robot dans l'espace terrain calculée par ce fiducial (x,y,z,pitch,yaw,roll) (mètres, degrés)
t6r_fs_orbPose du robot dans l'espace terrain calculée par ce fiducial (Megatag2) (x,y,z,pitch,yaw,roll) (mètres, degrés)
t6r_tsPose du robot dans l'espace cible calculée par ce fiducial (x,y,z,pitch,yaw,roll) (mètres, degrés)
t6t_csPose de la cible dans l'espace caméra calculée par ce fiducial (x,y,z,pitch,yaw,roll) (mètres, degrés)
t6t_rsPose de la cible dans l'espace robot calculée par ce fiducial (x,y,z,pitch,yaw,roll) (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 Neuronal

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'homme
classIDEntier ClassID
confConfiance de la prédiction
ptsPoints de coin individuels sous forme de tableau [x,y] en pixels. Centre-zéro, 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, 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 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 du nom de classe lisible par l'homme
classIDEntier ClassID
confConfiance de la prédiction
Exemple JSON pour les pipelines de 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 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 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 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
}