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, de clasificador neural y de detector neural. 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 se puede obtener utilizando las API 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 la Clave | Descripción del Valor |
---|---|
tl | Latencia de detección (milisegundos consumidos por el bucle de seguimiento en este cuadro) |
cl | Latencia de captura (milisegundos entre el final de la exposición de la fila central y el inicio del bucle de seguimiento) |
tx | Desplazamiento horizontal desde la mira al objetivo (LL1: -27 grados a 27 grados / LL2: -29.8 a 29.8 grados) |
ty | Desplazamiento vertical desde la mira al objetivo (LL1: -20.5 grados a 20.5 grados / LL2: -24.85 a 24.85 grados) |
txnc | Desplazamiento horizontal desde el píxel principal al objetivo (grados) |
tync | Desplazamiento vertical desde el píxel principal al objetivo (grados) |
ta | Área no distorsionada y normalizada del objetivo (0-100) |
PythonOut | Datos de salida de los pipelines SnapScript de Python |
stdev_mt1 | Desviación estándar MT1 [x, y, z, roll, pitch, yaw] (metros, grados) |
stdev_mt2 | Desviación estándar MT2 [x, y, z, roll, pitch, yaw] (metros, grados) |
pID | Índice del pipeline actual |
pTYPE | Tipo de pipeline actual, por ejemplo "pipe_color" |
ts | Marca de tiempo en milisegundos desde el arranque |
v | Indicador de validez. 1 = objetivos válidos, 0 = sin objetivos válidos |
botpose | Botpose (MegaTag): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_wpired | Botpose (MegaTag, estación de conductor WPI Roja): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_wpiblue | Botpose (MegaTag, estación de conductor WPI Azul): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_orb | Botpose (MegaTag2): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_orb_wpired | Botpose (MegaTag2, estación de conductor WPI Roja): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_orb_wpiblue | Botpose (MegaTag2, estación de conductor WPI Azul): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_avgarea | Área promedio de las etiquetas utilizadas para calcular botpose |
botpose_avgdist | Distancia máxima entre las etiquetas utilizadas para calcular botpose (metros) |
botpose_span | Distancia máxima entre las etiquetas utilizadas para calcular botpose (metros) |
botpose_tagcount | Número de etiquetas utilizadas para calcular botpose |
Retro | Array de resultados del pipeline de color/retroreflectivo |
Fiducial | Array de resultados del pipeline de AprilTag |
Detector | Array de resultados del pipeline del detector neural |
Classifier | Array de resultados del pipeline del clasificador |
Barcode | Array de resultados del pipeline de código de barras |
Resultados de Color/Retroreflectante
El array "Retro" contiene entradas con la siguiente estructura:
Nombre de la Clave | Descripción del Valor |
---|---|
t6c_ts | Pose de la cámara en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz) |
t6r_fs | Pose del robot en el espacio de campo calculada por solvepnp (x,y,z,rx,ry,rz) |
t6r_ts | Pose del robot en el espacio del objetivo calculada por solvepnp (x,y,z,rx,ry,rz) |
t6t_cs | Pose del objetivo en el espacio de la cámara calculada por solvepnp (x,y,z,rx,ry,rz) |
t6t_rs | Pose del objetivo en el espacio del robot calculada por solvepnp (x,y,z,rx,ry,rz) |
ta | El tamaño del objetivo como porcentaje de la imagen (0-1) |
tx | Coordenada X del centro del objetivo en grados relativa al punto de mira. Positivo-derecha, centro-cero |
tx_nocross | Coordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
txp | Coordenada X del centro del objetivo en píxeles relativa al punto de mira. Positivo-derecha, centro-cero |
ty | Coordenada Y del centro del objetivo en grados relativa al punto de mira. Positivo-abajo, centro-cero |
ty_nocross | Coordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
typ | Coordenada Y del centro del objetivo en píxeles relativa al punto de mira. Positivo-abajo, centro-cero |
pts | Array de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida |
Ejemplo de JSON para Pipelines de Color / Retroreflectante
{
"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 la Clave | Descripción del Valor |
---|---|
fid | ID de la etiqueta fiducial |
fam | Familia Fiducial (16H5C, 25H9C, 36H11C, etc) |
pts | Devuelve puntos de esquina individuales. Debe estar habilitado. |
skew | Actualmente sin uso |
t6c_ts | Pose de la cámara en el espacio objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados) |
t6r_fs | Pose del robot en el espacio de campo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados) |
t6r_fs_orb | Pose del robot en el espacio de campo calculada por este fiducial (Megatag2) (x,y,z,pitch,yaw,roll) (metros, grados) |
t6r_ts | Pose del robot en el espacio objetivo calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados) |
t6t_cs | Pose del objetivo en el espacio de la cámara calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados) |
t6t_rs | Pose del objetivo en el espacio del robot calculada por este fiducial (x,y,z,pitch,yaw,roll) (metros, grados) |
ta | El tamaño del objetivo como porcentaje de la imagen (0-1) |
tx | Coordenada X del centro del objetivo en grados relativa al punto de mira. Positivo-derecha, centro-cero |
tx_nocross | Coordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
txp | Coordenada X del centro del objetivo en píxeles relativa al punto de mira. Positivo-derecha, centro-cero |
ty | Coordenada Y del centro del objetivo en grados relativa al punto de mira. Positivo-abajo, centro-cero |
ty_nocross | Coordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
typ | Coordenada Y del centro del objetivo en píxeles relativa al punto de mira. Positivo-abajo, centro-cero |
pts | Array de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida |
Ejemplo de 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 la Clave | Descripción del Valor |
---|---|
class | Cadena de texto del nombre de la clase legible por humanos |
classID | Entero del ID de la clase |
conf | Confianza de la predicción |
pts | Puntos de esquina individuales como un array de [x,y] en píxeles. Cero en el centro, positivo a la derecha y abajo. Debe estar habilitado. |
ta | El tamaño del objetivo como porcentaje de la imagen (0-1) |
tx | Coordenada X del centro del objetivo en grados relativa a la mira. Positivo a la derecha, cero en el centro |
tx_nocross | Coordenada X del centro del objetivo en grados relativa al píxel principal. Positivo a la derecha, cero en el centro |
txp | Coordenada X del centro del objetivo en píxeles relativa a la mira. Positivo a la derecha, cero en el centro |
ty | Coordenada Y del centro del objetivo en grados relativa a la mira. Positivo hacia abajo, cero en el centro |
ty_nocross | Coordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo a la derecha, cero en el centro |
typ | Coordenada Y del centro del objetivo en píxeles relativa a la mira. Positivo hacia abajo, cero en el centro |
pts | Array de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida |
Ejemplo de 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 la Clave | Descripción del Valor |
---|---|
class | Cadena de texto del nombre de la clase legible por humanos |
classID | Entero del ID de la clase |
conf | Confianza de la predicción |
Ejemplo de JSON para Pipelines de Clasificación
{
"Classifier": [
{
"class": "reloj digital",
"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 la Clave | Descripción del Valor |
---|---|
fam | Familia del código de barras, por ejemplo "qr" |
data | Datos decodificados del código de barras como cadena |
ta | El tamaño del objetivo como porcentaje de la imagen (0-1) |
tx | Coordenada X del centro del objetivo en grados relativa a la cruz. Positivo-derecha, centro-cero |
tx_nocross | Coordenada X del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
txp | Coordenada X del centro del objetivo en píxeles relativa a la cruz. Positivo-derecha, centro-cero |
ty | Coordenada Y del centro del objetivo en grados relativa a la cruz. Positivo-abajo, centro-cero |
ty_nocross | Coordenada Y del centro del objetivo en grados relativa al píxel principal. Positivo-derecha, centro-cero |
typ | Coordenada Y del centro del objetivo en píxeles relativa a la cruz. Positivo-abajo, centro-cero |
pts | Array de esquinas (píxeles) [x0,y0,x1,y1.....]. Debe estar habilitado en la pestaña de salida |
Ejemplo de 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
}