Saltar al contenido principal

API de NetworkTables

Limelight OS incluye un Cliente de NetworkTables 4. Se conecta automáticamente al Servidor de NetworkTables 4 que se ejecuta en los Robots FRC basándose en el Número de Equipo / ID configurado en la interfaz de Configuración.

Todos los datos se publican en una tabla que coincide con el nombre del dispositivo (ej. "limelight"). Si se asigna un hostname / apodo a tu cámara, el nombre de la tabla coincidirá con el nombre completo del limelight (ej. "limelight-top").

LimelightLib WPIJava y LimelightLib WPICPP interactúan con los dispositivos Limelight a través de NetworkTables.

Datos Básicos de Seguimiento

Usa el siguiente código:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDouble(0);

para obtener estos datos:

clavetipodescripción
tvint1 si existe un objetivo válido. 0 si no existen objetivos válidos
txdoubleDesplazamiento Horizontal Desde la Cruceta al Objetivo (LL1: -27 grados a 27 grados / LL2: -29.8 a 29.8 grados)
tydoubleDesplazamiento Vertical Desde la Cruceta al Objetivo (LL1: -20.5 grados a 20.5 grados / LL2: -24.85 a 24.85 grados)
txncdoubleDesplazamiento Horizontal Desde el Píxel Principal al Objetivo (grados)
tyncdoubleDesplazamiento Vertical Desde el Píxel Principal al Objetivo (grados)
tadoubleÁrea del Objetivo (0% de la imagen a 100% de la imagen)
tldoubleContribución de latencia del pipeline (ms). Suma a "cl" para obtener la latencia total.
cldoubleLatencia del pipeline de captura (ms). Tiempo entre el final de la exposición de la fila central del sensor y el inicio del pipeline de seguimiento.
t2ddoubleArray que contiene varios valores para estadísticas de marca de tiempo sincronizada: [targetValid, targetCount, targetLatency, captureLatency, tx, ty, txnc, tync, ta, tid, targetClassIndexDetector , targetClassIndexClassifier, targetLongSidePixels, targetShortSidePixels, targetHorizontalExtentPixels, targetVerticalExtentPixels, targetSkewDegrees]
getpipeintÍndice real del pipeline activo de la cámara (0 .. 9)
getpipetypestringTipo de Pipeline ej. "pipe_color"
jsonstringVolcado JSON completo de los resultados de seguimiento. Debe habilitarse por pipeline en la pestaña 'output'
tclassstringNombre de clase del resultado principal del detector neuronal o resultado del clasificador neuronal
tcdoubleArrayObtiene el color HSV promedio debajo de la región de la cruceta (región de 3x3 píxeles) como un NumberArray
hbdoubleValor de heartbeat. Incrementa una vez por frame, se reinicia en 2 mil millones
hwdoubleArrayMétricas de HW [fps, temp cpu, uso de ram, temp]
crosshairsdoubleArrayCrucetas 2D [cx0, cy0, cx1, cy1]
tcclassstringNombre de la clase calculada del pipeline clasificador
tdclassstringNombre de la detección principal del pipeline detector

AprilTag y Datos 3D

Usa el siguiente código:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").getDoubleArray(new double[6]);

para obtener estos datos:

clavetipodescripción
botposedoubleArrayTransformación del robot en el espacio del campo. Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
botpose_wpibluedoubleArrayTransformación del robot en el espacio del campo (origen WPILIB estación de conductores azul). Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
botpose_wpireddoubleArrayTransformación del robot en el espacio del campo (origen WPILIB estación de conductores roja). Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
botpose_orbdoubleArrayTransformación del robot en el espacio del campo (Megatag2). Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
botpose_orb_wpibluedoubleArrayTransformación del robot en el espacio del campo (Megatag2) (origen WPILIB estación de conductores azul). Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
botpose_orb_wpireddoubleArrayTransformación del robot en el espacio del campo (Megatag2) (origen WPILIB estación de conductores roja). Traslación (X,Y,Z) en metros, Rotación(Roll,Pitch,Yaw) en grados, latencia total (cl+tl), cantidad de tags, extensión de tags, distancia promedio del tag a la cámara, área promedio del tag (porcentaje de imagen)
camerapose_targetspacedoubleArrayTransformación 3D de la cámara en el sistema de coordenadas del AprilTag principal visible (array (6)) [tx, ty, tz, pitch, yaw, roll] (metros, grados)
targetpose_cameraspacedoubleArrayTransformación 3D del AprilTag principal visible en el sistema de coordenadas de la Cámara (array (6)) [tx, ty, tz, pitch, yaw, roll] (metros, grados)
targetpose_robotspacedoubleArrayTransformación 3D del AprilTag principal visible en el sistema de coordenadas del Robot (array (6)) [tx, ty, tz, pitch, yaw, roll] (metros, grados)
botpose_targetspacedoubleArrayTransformación 3D del robot en el sistema de coordenadas del AprilTag principal visible (array (6)) [tx, ty, tz, pitch, yaw, roll] (metros, grados)
camerapose_robotspacedoubleArrayTransformación 3D de la cámara en el sistema de coordenadas del robot (array (6))
tidintID del AprilTag principal visible
stddevsdoubleArrayDesviaciones Estándar de MegaTag [MT1x, MT1y, MT1z, MT1roll, MT1pitch, MT1Yaw, MT2x, MT2y, MT2z, MT2roll, MT2pitch, MT2yaw]
camerapose_robotspace_setdoubleArrayESTABLECER la pose de la cámara en el sistema de coordenadas del robot.
priorityidintESTABLECER el ID requerido para el seguimiento tx/ty. Ignora otros objetivos. No afecta la localización
robot_orientation_setdoubleArrayESTABLECER Orientación del Robot y velocidades angulares en grados y grados por segundo[yaw,yawrate,pitch,pitchrate,roll,rollrate]
fiducial_id_filters_setdoubleArraySobrescribir IDs de fiduciales válidos para localización (array)
fiducial_offset_setdoubleArrayESTABLECER el Desplazamiento del Punto de Interés 3D [x,y,z]

Controles de Cámara

Usa el siguiente código:

NetworkTableInstance.getDefault().getTable("limelight").getEntry("<variablename>").setNumber(<value>);

para establecer estos datos:

ledModeEstablece el estado del LED del limelight
[0]usar el Modo LED establecido en el pipeline actual
[1]forzar apagado
[2]forzar parpadeo
[3]forzar encendido
pipelineEstablece el pipeline actual del limelight
0 .. 9Seleccionar pipeline 0..9
streamEstablece el modo de streaming del limelight
0Estándar - Streams lado a lado si hay una webcam conectada al Limelight
1PiP Principal - El stream de la cámara secundaria se coloca en la esquina inferior derecha del stream de la cámara principal
2PiP Secundario - El stream de la cámara principal se coloca en la esquina inferior derecha del stream de la cámara secundaria
crop(Array) Establece el rectángulo de recorte. El pipeline debe utilizar el rectángulo de recorte predeterminado en la interfaz web. El array debe tener exactamente 4 entradas.
[0]X0 - Valor X Mín o Máx del rectángulo de recorte (-1 a 1)
[1]X1 - Valor X Mín o Máx del rectángulo de recorte (-1 a 1)
[2]Y0 - Valor Y Mín o Máx del rectángulo de recorte (-1 a 1)
[3]Y1 - Valor Y Mín o Máx del rectángulo de recorte (-1 a 1)
throttle_set(int) Recomendamos establecer esto en 100-200 mientras está deshabilitado. Establece el número de frames a omitir entre frames procesados para reducir el aumento de temperatura. Las salidas no se ponen a cero durante los frames omitidos.
double[] cropValues = new double[4];
cropValues[0] = -1.0;
cropValues[1] = 1.0;
cropValues[2] = -1.0;
cropValues[3] = 1.0;
NetworkTableInstance.getDefault().getTable("limelight").getEntry("crop").setDoubleArray(cropValues);

Controles de IMU

clavetipodescripción
imumode_setintEstablecer el modo imu. 0 - usar imu externo, 1 - usar imu externo, sembrar imu interno, 2 - usar interno, 3 - usar interno con convergencia asistida por MT1, 4 - usar IMU interno con convergencia asistida por IMU externo
imuassistalpha_setdoubleAlpha / fuerza del filtro complementario. Valores más altos harán que el imu interno converja hacia la fuente de asistencia más rápidamente. El valor predeterminado está establecido en un valor bajo 0.001 porque ahora confiamos más en el IMU interno que antes. Los modos de asistencia están diseñados para "tirar" muy suavemente el imu interno hacia la fuente de asistencia elegida.

Python

Los scripts de Python permiten datos arbitrarios de entrada y salida.

llpythonNumberArray enviado por scripts de python. Esto es accesible dentro del código del robot.
llrobotNumberArray enviado por el robot. Esto es accesible dentro de los SnapScripts de python.

Datos Crudos

Esquinas:

Habilita "send contours" en la pestaña "Output" para transmitir coordenadas de esquinas:

tcornxyArray de números de coordenadas de esquinas [x0,y0,x1,y1......]

Objetivos Crudos:

Limelight publica tres contornos crudos a NetworkTables que no están influenciados por tu modo de agrupación. Es decir, están filtrados con los parámetros de tu pipeline, pero nunca agrupados. X e Y se devuelven en espacio de pantalla normalizado (-1 a 1) en lugar de grados.

rawtargets[txnc,tync,ta,txnc2,tync2,ta2....]

Fiduciales Crudos:

Obtener todos los fiduciales válidos (sin filtrar)

rawfiducials [id, txnc, tync, ta, distToCamera, distToRobot, ambiguity, id2.....]

Detecciones Crudas:

Obtener todos los resultados de detección neuronal válidos (sin filtrar)

rawdetections [id, txnc, tync, ta, corner0x, corner0y, corner1x, corner1y, corner2x, corner2y, corner3x, corner3y, id2.....]

Códigos de Barras Crudos:

Obtener todos los resultados de códigos de barras válidos (sin filtrar)

rawbarcodes array de strings de datos de códigos de barras