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 seguimiento. Existen arrays separados para resultados retrorreflectivos, 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 usando las APIs REST/HTTP, Websocket y NetworkTables.

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

Limelightlib tiene funcionalidad integrada que analiza el volcado JSON 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 seguimiento (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 y 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 pipelines Python SnapScript
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 actual del Pipeline
pTYPETipo actual del Pipeline ej. "pipe_color"
tsMarca de tiempo en milisegundos desde el arranque.
vIndicador de validez. 1 = objetivos válidos, 0 = sin objetivos válidos
botposePosición del robot (MegaTag): x,y,z, roll, pitch, yaw (metros, grados)
botpose_wpiredPosición del robot (MegaTag, estación de conductores WPI Rojo): x,y,z, roll, pitch, yaw (metros, grados)
botpose_wpibluePosición del robot (MegaTag, estación de conductores WPI Azul): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orbPosición del robot (MegaTag2): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orb_wpiredPosición del robot (MegaTag2, estación de conductores WPI Rojo): x,y,z, roll, pitch, yaw (metros, grados)
botpose_orb_wpibluePosición del robot (MegaTag2, estación de conductores WPI Azul): x,y,z, roll, pitch, yaw (metros, grados)
botpose_avgareaÁrea promedio de las etiquetas usadas para calcular la posición del robot
botpose_avgdistDistancia máxima entre etiquetas usadas para calcular la posición del robot (metros)
botpose_spanDistancia máxima entre etiquetas usadas para calcular la posición del robot (metros)
botpose_tagcountNúmero de etiquetas usadas para calcular la posición del robot
RetroArray de resultados del pipeline de Color/Retrorreflectivo
FiducialArray de resultados del pipeline de AprilTag
DetectorArray de resultados del pipeline de Detector Neuronal
ClassifierArray de resultados del pipeline de Clasificador
BarcodeArray de resultados del pipeline de Código de Barras

Resultados de Color/Retrorreflectivo

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

Nombre de ClaveDescripción del Valor
t6c_tsPosición de la Cámara en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz)
t6r_fsPosición del Robot en el espacio del campo calculada por solvepnp (x,y,z,rx,ry,rz)
t6r_tsPosición del Robot en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz)
t6t_csPosición del Objetivo en el espacio de la cámara calculada por solvepnp (x,y,z,rx,ry,rz)
t6t_rsPosición 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 habilitarse en la pestaña de salida
Ejemplo JSON para Pipelines de Color / Retrorreflectivo
{
"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 habilitarse.
skewActualmente sin uso
t6c_tsPosición de la Cámara en el espacio del objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_fsPosición del Robot en el espacio del campo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_fs_orbPosición del Robot en el espacio del campo calculada por este fiducial (Megatag2) (x,y,z,pitch,yaw,roll) (metros, grados)
t6r_tsPosición del Robot en el espacio del objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6t_csPosición del Objetivo en el espacio de la cámara calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados)
t6t_rsPosición 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 habilitarse 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 Neuronal

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

Nombre de ClaveDescripción del Valor
classCadena de nombre de clase legible por humanos
classIDEntero 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 habilitarse.
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 habilitarse 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 Neuronal

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

Nombre de ClaveDescripción del Valor
classCadena de nombre de clase legible por humanos
classIDEntero 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 ej. "qr"
dataDatos del código de barras decodificados como cadena
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 habilitarse 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
}