Saltar al contenido principal

Especificación de Resultados JSON

La salida de resultados JSON de Limelight es una colección de arrays que contienen resultados de detección. Existen arrays separados para resultados retroreflectivos, fiduciales, clasificadores neuronales y detectores neuronales. JSON es legible por humanos y fácil de analizar en cualquier lenguaje en cualquier plataforma, por lo que es perfecto para la mayoría de los casos de uso.

La misma salida de resultados JSON puede obtenerse utilizando las APIs REST/HTTP, Websocket y NetworkTables.

Analizar esta salida JSON es increíblemente fácil con nuestras bibliotecas FRC.

Limelightlib tiene funcionalidad incorporada que analiza el JSON Dump en un objeto LimelightResults.

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

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

Cada resultado JSON contiene las siguientes entradas:

Nombre de ClaveDescripción del Valor
tlLatencia de detección (milisegundos consumidos por el bucle de seguimiento en este frame)
clLatencia de captura (milisegundos entre el final de la exposición de la fila central hasta el inicio del bucle de seguimiento)
txDesplazamiento horizontal desde la cruz al objetivo (LL1: -27 grados a 27 grados / LL2: -29.8 a 29.8 grados)
tyDesplazamiento vertical desde la cruz al objetivo (LL1: -20.5 grados a 20.5 grados / LL2: -24.85 a 24.85 grados)
txncDesplazamiento horizontal desde el píxel principal al objetivo (grados)
tyncDesplazamiento vertical desde el píxel principal al objetivo (grados)
taÁrea normalizada sin distorsión del objetivo (0-100)
PythonOutDatos de salida de los Pipelines SnapScript de Python
stdev_mt1Desviación estándar MT1 [x, y, z, roll, pitch, yaw] (metros, grados)
stdev_mt2Desviación estándar MT2 [x, y, z, roll, pitch, yaw] (metros, grados)
pIDÍndice del Pipeline actual
pTYPETipo de Pipeline actual, por ejemplo "pipe_color"
tsMarca de tiempo en milisegundos desde el arranque
vIndicador de validez. 1 = objetivos válidos, 0 = sin objetivos válidos
botposeBotpose (MegaTag): x,y,z, roll, pitch, yaw (metros, grados)
botpose_wpiredBotpose (MegaTag, WPI Red driverstation): x,y,z, roll, pitch, yaw (metros, grados)
botpose_wpiblueBotpose (MegaTag, WPI Blue driverstation): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orbBotpose (MegaTag2): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orb_wpiredBotpose (MegaTag2, WPI Red driverstation): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orb_wpiblueBotpose (MegaTag2, WPI Blue driverstation): x,y,z, roll, pitch, yaw (metros, grados)
botpose_avgareaÁrea promedio de las etiquetas utilizadas para calcular botpose
botpose_avgdistDistancia máxima entre etiquetas utilizadas para calcular botpose (metros)
botpose_spanDistancia máxima entre etiquetas utilizadas para calcular botpose (metros)
botpose_tagcountNúmero de etiquetas utilizadas para calcular botpose
RetroArray de resultados del pipeline de Color/Retroreflectivo
FiducialArray de resultados del pipeline de AprilTag
DetectorArray de resultados del pipeline de Detector Neural
ClassifierArray de resultados del pipeline de Clasificador
BarcodeArray de resultados del pipeline de Código de Barras

Resultados de Color/Retroreflectivo

El array "Retro" contiene entradas con la siguiente estructura:

Nombre de ClaveDescripción del Valor
t6c_tsPose de la cámara en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz)
t6r_fsPose del robot en el espacio de campo calculada por solvepnp (x,y,z,rx,ry,rz)
t6r_tsPose del robot en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz)
t6t_csPose del objetivo en el espacio de la cámara calculada por solvepnp (x,y,z,rx,ry,rz)
t6t_rsPose del objetivo en el espacio del robot calculada por solvepnp (x,y,z,rx,ry,rz)
taEl tamaño del objetivo como porcentaje de la imagen (0-1)
txCoordenada X del centro del objetivo en grados relativa a la cruz. Positivo-derecha, centro-cero
tx_nocrossCoordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
txpCoordenada X del centro del objetivo en píxeles relativa a la cruz. Positivo-derecha, centro-cero
tyCoordenada Y del centro del objetivo en grados relativa a la cruz. Positivo-abajo, centro-cero
ty_nocrossCoordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
typCoordenada Y del centro del objetivo en píxeles relativa a la cruz. Positivo-abajo, centro-cero
ptsArray de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida
Ejemplo JSON para Pipelines de Color / Retroreflectivo
{
"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
}

Resultados de AprilTag/Fiducial

El array "Fiducial" contiene entradas con la siguiente estructura:

Nombre de ClaveDescripción del Valor
fidID de la etiqueta fiducial
famFamilia Fiducial (16H5C, 25H9C, 36H11C, etc)
ptsDevuelve puntos de esquina individuales. Debe estar habilitado.
skewActualmente sin uso
t6c_tsPose de la cámara en el espacio del objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_fsPose del robot en el espacio de campo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_fs_orbPose del robot en el espacio de campo calculada por este fiducial (Megatag2) (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_tsPose del robot en el espacio del objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6t_csPose del objetivo en el espacio de la cámara calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6t_rsPose del objetivo en el espacio del robot calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
taEl tamaño del objetivo como porcentaje de la imagen (0-1)
txCoordenada X del centro del objetivo en grados relativa a la cruz. Positivo-derecha, centro-cero
tx_nocrossCoordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
txpCoordenada X del centro del objetivo en píxeles relativa a la cruz. Positivo-derecha, centro-cero
tyCoordenada Y del centro del objetivo en grados relativa a la cruz. Positivo-abajo, centro-cero
ty_nocrossCoordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
typCoordenada Y del centro del objetivo en píxeles relativa a la cruz. Positivo-abajo, centro-cero
ptsArray de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida
Ejemplo JSON para Pipelines de 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
}

Resultados del Detector Neural

El array "Detector" contiene entradas con la siguiente estructura:

Nombre de ClaveDescripción del Valor
classCadena de texto del nombre de clase legible para humanos
classIDEntero de ClassID
confConfianza de la predicción
ptsPuntos de esquina individuales como un array de [x,y] en píxeles. Centro-cero, positivo derecha y abajo. Debe estar habilitado.
taEl tamaño del objetivo como porcentaje de la imagen (0-1)
txCoordenada X del centro del objetivo en grados relativa a la cruz. Positivo-derecha, centro-cero
tx_nocrossCoordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
txpCoordenada X del centro del objetivo en píxeles relativa a la cruz. Positivo-derecha, centro-cero
tyCoordenada Y del centro del objetivo en grados relativa a la cruz. Positivo-abajo, centro-cero
ty_nocrossCoordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
typCoordenada Y del centro del objetivo en píxeles relativa a la cruz. Positivo-abajo, centro-cero
ptsArray de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida
Ejemplo JSON para Pipelines de Detector
{
"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
}

Resultados del Clasificador Neural

El array "Classifier" contiene entradas con la siguiente estructura:

Nombre de ClaveDescripción del Valor
classCadena de texto del nombre de clase legible para humanos
classIDEntero de ClassID
confConfianza de la predicción
Ejemplo JSON para Pipelines de Clasificador
{
"Classifier": [
{
"class": "digital clock",
"classID": 531,
"conf": 0.16796875
}
],
"Detector": [],
"Fiducial": [],
"Retro": [],
"pID": 0,
"tl": 16.704740524291992,
"ts": 4751332.7542280005,
"v": 1
}

Resultados de Código de Barras

El array "Barcode" contiene entradas con la siguiente estructura:

Nombre de ClaveDescripción del Valor
famFamilia de código de barras, p.ej. "qr"
dataDatos decodificados del código de barras como cadena de texto
taEl tamaño del objetivo como porcentaje de la imagen (0-1)
txCoordenada X del centro del objetivo en grados relativa a la cruz. Positivo-derecha, centro-cero
tx_nocrossCoordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
txpCoordenada X del centro del objetivo en píxeles relativa a la cruz. Positivo-derecha, centro-cero
tyCoordenada Y del centro del objetivo en grados relativa a la cruz. Positivo-abajo, centro-cero
ty_nocrossCoordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero
typCoordenada Y del centro del objetivo en píxeles relativa a la cruz. Positivo-abajo, centro-cero
ptsArray de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida
Ejemplo JSON para Pipelines de Código de Barras
{
"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
}