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, clasificador neural y detector neural. JSON es legible por humanos y fácil de analizar en cualquier lenguaje y 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 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 Clave | Descripción del Valor |
---|---|
tl | Latencia de detección (milisegundos consumidos por el bucle de seguimiento en este frame) |
cl | Latencia de captura (milisegundos entre el final de la exposición de la fila media hasta el inicio del bucle de seguimiento) |
tx | Desplazamiento horizontal desde la mira hasta el objetivo (LL1: -27 grados a 27 grados / LL2: -29.8 a 29.8 grados) |
ty | Desplazamiento vertical desde la mira hasta el objetivo (LL1: -20.5 grados a 20.5 grados / LL2: -24.85 a 24.85 grados) |
txnc | Desplazamiento horizontal desde el píxel principal hasta el objetivo (grados) |
tync | Desplazamiento vertical desde el píxel principal hasta el objetivo (grados) |
ta | Área normalizada sin distorsión del objetivo (0-100) |
PythonOut | Datos de salida de tuberías 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 de tubería actual |
pTYPE | Tipo de tubería actual ej. "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, WPI Red driverstation): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_wpiblue | Botpose (MegaTag, WPI Blue driverstation): 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, WPI Red driverstation): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_orb_wpiblue | Botpose (MegaTag2, WPI Blue driverstation): x,y,z, roll, pitch, yaw (metros, grados) |
botpose_avgarea | Área promedio de las etiquetas usadas para calcular botpose |
botpose_avgdist | Distancia máxima entre etiquetas usadas para calcular botpose (metros) |
botpose_span | Distancia máxima entre etiquetas usadas para calcular botpose (metros) |
botpose_tagcount | Número de etiquetas usadas para calcular botpose |
Retro | Array de resultados de tubería Color/Retroreflectiva |
Fiducial | Array de resultados de tubería AprilTag |
Detector | Array de resultados de tubería Detector Neural |
Classifier | Array de resultados de tubería Clasificador |
Barcode | Array de resultados de tubería Código de Barras |
Resultados de Color/Retroreflectante
El array "Retro" contiene entradas con la siguiente estructura:
Nombre de 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 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 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 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 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 Clave | Descripción del Valor |
---|---|
class | Cadena de texto del nombre de clase legible por humanos |
classID | Número entero ClassID |
conf | Confianza de la predicción |
pts | Puntos de esquina individuales como un array de [x,y] en píxeles. Centro-cero, positivo 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-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 mira. Positivo-derecha, centro-cero |
ty | Coordenada Y del centro del objetivo en grados relativa a la 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 a la 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 JSON para Pipelines del 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 | Número entero ClassID |
conf | Confianza de la predicción |
Ejemplo JSON para Pipelines del 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 Clave | Descripción del Valor |
---|---|
fam | Familia del código de barras, ej. "qr" |
data | Datos decodificados del código de barras como cadena de texto |
ta | 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 JSON para Tuberías 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
}