Registro de Cambios de Software y Comentarios
Envía problemas y solicitudes de funciones por correo electrónico o al Repositorio de Comentarios de Limelight
Limelight OS 2024.10.2 (28/10/24)
Corrección de Python Snapscript (CRÉDITO - EQUIPO FTC 23251 TRIPLE FAULT)
- Las salidas de Python ya no se congelarán mientras se usa el Control Hub con Limelight3A
- Las salidas de Python ya no se congelarán al cambiar entre pipelines de Python
Caso límite de MT2
https://github.com/LimelightVision/limelight-feedback/issues/23
- Al probar MT2 sin un robot, es fácil generar una imposibilidad geométrica.
- Este caso límite no pondría a cero la posición del robot en mt2 - pondría a cero la posición de la cámara.
- El robot ahora se coloca en (0,0,0) cuando se detecta este caso límite
Direccionamiento IP Estático
https://github.com/LimelightVision/limelight-feedback/issues/25
- Se añade una advertencia al configurador de dirección IP si la dirección termina en .1-.10 o .20-.255 ya que estas direcciones pueden interferir con el FMS u otros dispositivos
- En 2024.10.1, la interfaz de usuario a veces sugería que una IP estática estaba configurada cuando el esquema de direccionamiento estaba establecido en "automático"
STDDevs NetworkTables
https://github.com/LimelightVision/limelight-feedback/issues/24
- "stddevs" en networktables contiene todas las desviaciones estándar para mt1 y mt2 (array de doubles, 12 elementos)
Caso límite de Carga de Modelos
- Si se carga un modelo de clasificación en un pipeline de detector, se mostrará "check model" en la imagen
- Si se carga un modelo de detector en un pipeline de clasificación, se mostrará "check model" en la imagen
Limelight OS 2024.10.1 (15/09/24)
Actualizaciones de Limelight 3A
- Actualización de los valores predeterminados del balance de color
- Actualización de la configuración predeterminada del tamaño de AprilTag a 101.6 mm
- Reducción de la tasa de fotogramas predeterminada de transmisión de video a 30FPS
- Ligero aumento en la compresión de transmisión de video para reducir la tasa de bits
Advertencia de Tamaño de AprilTag
- Agregada una advertencia al visualizador de espacio de campo si el tamaño configurado de AprilTag no coincide con los tamaños en el mapa de campo cargado.
Corrección de Error en CameraPose_RobotSpace
- La anulación de la Pose de Cámara configurada en la interfaz de usuario desde NetworkTables/LimelightLib/REST funciona correctamente de nuevo.
Limelight OS 2024.10 (9/4/24)
Soporte de Limelight 3A para FTC
- Limelight3A está completamente soportado
- 3A es utilizable tanto en FTC como en FRC
Actualizaciones del Mapa de AprilTag
- El editor de mapas ahora soporta la generación de mapas FTC estándar y de diamante
- La interfaz web de LLOS mostrará automáticamente el tipo de campo correcto basado en el mapa cargado
- Todos los visualizadores de campo a través de herramientas e interfaces muestran zonas de alianza y cuadrículas de baldosas ftc
- Se ha mejorado el rendimiento del visualizador 3D
Soporte USB de Limelight en ControlHub y RoboRio
- Los equipos FTC pueden usar un único Limelight compatible con USB en el Control Hub
- Los equipos FRC pueden usar hasta 16 Limelights compatibles con USB en el RoboRio. Los Limelights USB auto-completan networktables al igual que los Limelights ethernet
- Para usar múltiples Limelights USB, asigne a cada LL un índice USB único y un nombre de host único
Mejoras de Conectividad USB
- MacOS ya no usa la interfaz USB Ethernet Limelight para acceso a internet
- Windows ya no intenta usar la interfaz USB Ethernet Limelight para acceso a internet
Actualizaciones de API REST
- Corrección de la solicitud POST update-robotorientation
- MT2 ahora es completamente accesible sin NetworkTables
- Una vez que se utiliza la ruta update-robotorientation, las actualizaciones de orientación de NetworkTables se desactivan hasta el reinicio
Limelight OS 2024.9.1 (7/7/24)
- La herramienta Map Builder ahora acepta/convierte diseños de apriltags .json de WPILib
- Se agregó AprilTag3 a Python Snapscripts (from apriltag import apriltag)
- Ver ejemplo en el repositorio de ejemplos de github
- Corrección del problema de conectividad del gateway USB en Windows.
Limelight OS 2024.9 (7/5/24)
Mejoras de MegaTag
-
Limelight OS ha realizado la transición a NetworkTables 4.0
-
MegaTag2 ahora utiliza getAtomic() de NT4 para obtener actualizaciones cronometradas del IMU desde el roboRIO.
-
Nuestros fotogramas de imagen cronometrados se emparejan con las dos muestras IMU más relevantes antes de realizar la interpolación.
-
Se ha añadido NT4 flush() a LimelightLib. Agregar Flush() a versiones anteriores de Limelight OS te dará un rendimiento muy cercano al de 2024.9, pero NT4 asegura que la precisión sea siempre alta.
-
El robot visualizador de MT2 ahora tiene parachoques verdes, y el robot visualizador de MT1 usa parachoques amarillos.
-
Las métricas ahora son plegables, y los robots virtuales se pueden ocultar.
-
El siguiente video demuestra cómo el MegaTag 2 de 2024.9 (robot verde) con flush() del lado del robot es más robusto que el MegaTag2 de 2024.5 sin Flush() (robot rojo)
ID USB y Nuevas Direcciones IP USB
- Configura el "USB ID" en la página de configuración para usar múltiples Limelights USB en cualquier sistema.
- La interfaz USB-Ethernet que aparece en tu sistema utilizará una dirección IP determinada por el USB ID
- Los sistemas Linux/Android/Mac ahora utilizarán la subred 172.29.0.0/24 por defecto
- Los sistemas Windows ahora utilizarán la subred 172.28.0.0/24 por defecto.
- Si se configura el USBID, la subred cambia a 172.29.(USBID).0/24 para Linux/Android/Mac y 172.28.(USBID).0/24 para Windows.
- Ahora puedes, por ejemplo, conectar cuatro dispositivos Limelight a un solo Hub USB ajustando sus nombres de host y USB IDs
Clasificadores Neuronales CPU
- Sube un clasificador .tflite CPU para habilitar la clasificación neural sin Google Coral. Puedes esperar 15-18 FPS en variantes LL3.
- 2024.9 viene con un clasificador CPU predeterminado.
- Establece el tiempo de ejecución del clasificador en "CPU" para habilitar esta función
Detectores Neuronales CPU
- Sube un detector .tflite CPU para habilitar la detección neural sin Google Coral. Puedes esperar 10 FPS en variantes LL3.
- 2024.9 viene con un detector CPU predeterminado.
- Establece el tiempo de ejecución del detector en "CPU" para habilitar esta función
Limelight OS 2024.8 (7/3/24)
- Añadir salida de python (PythonOut), tx, ty, txnc, tync, ta al objeto de resultados json
- Mejora adicional en la compensación de latencia MT2
Limelight OS 2024.7 (21/5/24)
- Actualización a Linux 6.6
Corrección de errores
- Corrección de la conversión del pipeline de visión
- Corrección de las cargas de calibración, cargas de instantáneas y cargas de redes neuronales
Limelight OS 2024.6 (5/8/24)
LimelightLib Python
- pip install limelightlib-python
- Nuestra biblioteca Python te permite interactuar con Limelights USB y Ethernet en cualquier plataforma.
- Permite la configuración completa de Limelight sin interacción con la interfaz web.
- Carga pipelines, redes neuronales, mapas de campo, etc.
- Realiza cambios en tiempo real a cualquier parámetro del pipeline con una opción opcional de "guardar en disco"
- Publica datos de entrada personalizados en Python, establece la orientación del robot, etc.
Mejoras de MegaTag2
- Se ha mejorado la compensación de latencia del giroscopio de MegaTag2. ¡Espera más mejoras pronto!
- Se agregó el control deslizante "Ajuste de latencia del giroscopio" a la interfaz. Para ajustar manualmente la compensación de latencia de MegaTag 2, puedes girar tu robot y ajustar el control deslizante hasta que los resultados de localización sean perfectos durante la rotación.
Métricas de Desviación Estándar
- El visualizador de campo 3D ahora incluye desviaciones estándar de MegaTag1 y Megatag2 para x, y, y guiñada.
Nuevo Tipo de Pipeline "Enfoque"
- En modo "enfoque", tendrás acceso a un control deslizante de calidad de transmisión y un control deslizante de recorte
- Gira el lente para maximizar la puntuación de "enfoque".
- Si tu cámara está en una ubicación fija, esto toma menos de un minuto. Recomendamos enfocar con un Limelight fijo/montado.
Nuevo Tipo de Pipeline "Códigos de Barras"
- Detección y decodificación de múltiples códigos QR a 50-60FPS en 1280x800
- Detección y decodificación de múltiples DataMatrix a 50-60FPS en 1280x800
- UPC, EAN, Code128 y PDF417 múltiples a 30FPS en 1280x800
- Las cadenas de datos de códigos de barras se publican en el array nt "rawbarcodes".
- El pipeline de códigos de barras completará todas las métricas 2D como tx, ty, ta, tcornxy, etc.
API REST Completamente Nueva
- https://docs.limelightvision.io/docs/docs-limelight/apis/rest-http-api
- Nuestra API REST/HTTP ha sido reconstruida desde cero.
- La API REST permite la configuración completa de Limelight sin interacción con la interfaz web.
- Carga pipelines, redes neuronales, mapas de campo, etc.
- Realiza cambios en tiempo real a cualquier parámetro del pipeline con una opción opcional de "guardar en disco"
- Publica datos de entrada de Python, establece la orientación del robot, etc.
Eliminación de la Configuración de Orientación de la Cámara en la IU (CAMBIO IMPORTANTE)
- Esto ha sido reemplazado por la opción "orientación de transmisión". La calibración y el apuntado nunca se ven afectados por esta opción.
- La nueva opción solo afecta la transmisión. Boca abajo, 90 grados en sentido horario, 90 grados en sentido antihorario, espejo horizontal y espejo vertical
- Los equipos ahora necesitarán invertir manualmente tx y ty según sea necesario al usar cámaras rotadas.
Eliminación del Soporte GRIP (CAMBIO IMPORTANTE)
Eliminación del Modo "Driver" sin procesamiento (CAMBIO IMPORTANTE)
- Esto ha sido reemplazado por el tipo de pipeline "Visor"
Agregar tipo de Pipeline "Visor"
- El pipeline visor desactiva todo el procesamiento para una latencia mínima
- Esto permite a los equipos diseñar sus propios pipelines "Driver" para modos de solo visualización
Los Archivos de Pipeline Ahora Usan Formato JSON (CAMBIO IMPORTANTE)
- Los pipelines siguen usando la extensión de archivo .vpr
- (Con errores en algunos casos en 2024.6) La IU convertirá automáticamente los pipelines a JSON cuando uses el botón "cargar".
- (Completamente funcional) También puedes usar https://tools.limelightvision.io/pipeline-upgrade para actualizar tus pipelines
Mejora en la Experiencia de Usuario de Calibración
- La configuración de calibración ahora se almacena en caché. Ya no necesitas ingresar tu configuración de calibración cada vez que quieras calibrar.
- El diccionario de calibración predeterminado se ha actualizado para funcionar con el tablero grueso recomendado de 800x600mm de Calib.io.
Mosaico de Calibración
- Anteriormente, era difícil determinar la calidad de las imágenes de calibración
- La pestaña de calibración ahora tiene un botón "Descargar Mosaico de Calibración". El mosaico te mostrará exactamente qué está aportando cada imagen a tu calibración.
Región de apuntado "Centroide"
- Se ha agregado el modo de apuntado centroide a la pestaña "Salida" para mejorar el seguimiento de objetos con pipelines de color
Desplazamiento 3D Dinámico (NT: fiducial_offset_set)
- Ahora es posible ajustar el Desplazamiento 3D sin cambiar pipelines. Esto es útil en situaciones donde tu "punto de apuntado" necesita cambiar según la distancia u otras propiedades.
Agregar Soporte Modbus
- Limelight OS ahora tiene un servidor modbus siempre activo para aplicaciones de inspección, logística e industriales
- Consulta la especificación del registro modbus aquí: https://docs.limelightvision.io/docs/docs-limelight/apis/modbus
- El puerto predeterminado del servidor modbus se puede cambiar en la pestaña de configuración de la IU
- A través de modbus y pipelines python snapscript, ahora se admiten aplicaciones de visión completamente personalizadas con comunicación bidireccional.
Servidor NT personalizado
- La pestaña de configuración ahora contiene una entrada para un servidor NT personalizado.
- Esto permite un nuevo flujo de trabajo que incluye un servidor NT glass ejecutándose en una PC y Limelight 3G comunicándose a través de USB.
Cambios en Rawfiducial
- El valor "área" de los fiduciales sin procesar ahora es un valor calibrado y normalizado que va de ~0-1
Todos los Cambios en NetworkTables y JSON
-
Agregar NT getpipetype - Obtener la cadena del tipo de pipeline actual (ej. pipe_color, pipe_fiducial)
-
Agregar NT tcclass - Nombre de clase detectada del pipeline clasificador
-
Agregar NT tdclass - Nombre de clase detectada del pipeline detector
-
Agregar NT t2d para apuntado 2d atómico garantizado - [valid,targetcount, targetlatency, capturelatency, tx, ty, txnc, tync, ta, targetid, classifierID, detectorID, tlong, tshort, thor, tvert, ts(skew)]
-
Eliminar NT tlong, tshort, thor, tvert, y ts
-
Agregar array NT 'crosshairs' [cx0,cy0,cx1,cy1]
-
Eliminar NT cx0, cy0, cx1, y cy1
-
Agregar NT rawbarcodes - Array de cadenas NT de datos de códigos de barras. Hasta 32 entradas.
-
Todos los arrays "raw" permiten hasta 32 objetivos (aumentado desde 8)
-
Agregar configurador de desplazamiento 3D dinámico fiducial_offset_set
-
Agregar "pType" al resultado de nivel superior json
-
Agregar "stdev_mt1" y "stdev_mt2" al resultado de nivel superior json (x,y,z,roll,pitch,yaw) (metros, grados)
Cambios en Otros Formatos de Archivo y Volcados JSON
- El formato del archivo de calibración se ha simplificado. Las calibraciones antiguas se convierten automáticamente al nuevo formato al cargarlas
- Se ha eliminado una capa de anidamiento de los volcados JSON de Resultados y Estado
Correcciones de Errores
- Anteriormente, si se desconectaba un Google Coral mientras un pipeline Neural estaba activo, el pipeline revertiría permanentemente al modo "color/retro"
- Ahora, se imprimirá "CHECK CORAL" o "CHECK MODEL" en la imagen. El tipo de pipeline nunca cambiará
- Anteriormente, las etiquetas que pasaban exitosamente por el filtro de ID fiducial a veces se dibujaban con un contorno rojo en lugar de verde. Este problema de visualización ha sido corregido.
- Los pipelines Apriltag completan el array NT tcornxy
- Los pipelines Apriltag ahora respetan completamente el control deslizante de área mín-máx. Anteriormente, los pipelines AprilTag filtraban resultados 2D basados en el Área de Etiqueta, pero no los Resultados de Localización/3D.
Limelight OS 2024.5.0 (4/9/24)
- Actualización a Linux 6.1
Actualización del Stack de Cámara
- Se ha actualizado todo el stack de cámara para solucionar un bloqueo del periférico de cámara en Limelight3G.
- Los síntomas incluyen
- Asegúrese de reajustar la configuración de exposición y ganancia después de aplicar esta actualización.
Reducción de Escala Dinámica
- Los equipos ahora pueden establecer "fiducial_downscale_set" para anular la configuración de reducción de escala del pipeline actual
- 0:Control UI, 1:1x, 2:1.5x, 3:2x, 4:3x, 5:4x
- Use el nuevo método Helpers con 0.0 (Control UI), 1.0, 1.5, 2.0, 3.0, 4.0
- Esta es una operación sin sobrecarga.
- Al combinar la reducción de escala dinámica y el recorte dinámico, los equipos pueden maximizar los FPS sin gestionar múltiples pipelines
Mejoras en MegaTag2
- MT2 ahora funciona sin importar la orientación del Limelight, incluyendo modos "retrato" con giros de 90 grados y -90 grados
Array "rawdetections" nt
- [classID, txnc, tync, ta, corner0x, corner0y, corner1x, corner2y, corner3x, corner3y, corner4x, corner4y]
- las esquinas están en espacio de píxeles sin calibración aplicada
Actualización de Erosión/Dilatación
- Los pipelines de color ahora admiten hasta 10 pasos de dilatación y 10 pasos de erosión
- Los pipelines de color ahora tienen una opción de "morfología inversa" para invertir el orden de los pasos de dilatación y erosión
LimelightLib 1.6 (4/9/24)
- Añade void SetFiducialDownscalingOverride(float downscale)
Establecer a 0 para control de pipeline, o uno de los siguientes valores para anular la configuración de reducción de escala de tu pipeline: 1, 1.5, 2, 3, 4
- Añade RawFiducial[] GetRawFiducials()
- Añade RawDetection[] GetRawDetections()
Limelight OS 2024.4.0 (4/3/24)
Gracias a todos los equipos que contribuyeron con ideas para esta actualización.
Megatag 2
Megatag 2 es un localizador libre de ambigüedades. Tiene mayor exactitud y precisión que Megatag1, y fue construido con los siguientes requerimientos:
- Eliminar el problema de ambigüedad de pose y aumentar la robustez contra el ruido de imagen/esquinas.
- Proporcionar excelentes estimaciones de pose con una o más etiquetas, sin importar la perspectiva.
- Aumentar la robustez contra imprecisiones en la colocación física de AprilTags
- Reducir la cantidad de filtrado necesario del lado del robot para obtener buenos resultados de estimación de pose
Observe la diferencia entre MegaTag2 (robot rojo) y Megatag (robot azul) en este caso altamente ambiguo de una sola etiqueta:
Megatag2 requiere que establezca la orientación de su robot con una nueva llamada a método. Aquí hay un ejemplo completo:
LimelightHelpers.SetRobotOrientation("limelight", m_poseEstimator.getEstimatedPosition().getRotation().getDegrees(), 0, 0, 0, 0, 0);
LimelightHelpers.PoseEstimate mt2 = LimelightHelpers.getBotPoseEstimate_wpiBlue_MegaTag2("limelight");
if(Math.abs(m_gyro.getRate()) > 720) // si nuestra velocidad angular es mayor a 720 grados por segundo, ignorar actualizaciones de visión
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}
if(!doRejectUpdate)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.6,.6,9999999));
m_poseEstimator.addVisionMeasurement(
mt2.pose,
mt2.timestampSeconds);
}
Megatag2 proporciona resultados excelentes y libres de ambigüedad a cualquier distancia con una sola etiqueta. Esto significa que es perfectamente viable enfocarse solo en etiquetas que sean relevantes y estén dentro de su tolerancia de colocación deseada. Si una etiqueta no está en la ubicación correcta o es irrelevante, filtrela con la nueva función de filtro dinámico.
Filtrado Dinámico de Apriltag
- Dado que MegaTag2 no necesita desesperadamente acumular tantos AprilTags como sea posible, puede filtrar de manera segura las etiquetas bien colocadas y relevantes:
int[] validIDs = {3,4};
LimelightHelpers.SetFiducialIDFiltersOverride("limelight", validIDs);
Transición a MegaTag2
Megatag2 requiere la orientación de su robot para funcionar correctamente. Una orientación de 0 grados, 360 grados, 720 grados, etc. significa que su robot está mirando hacia la pared de la alianza roja. Esta es la misma convención utilizada en PathPlanner, Chorero, Botpose y Botpose_wpiblue.
Una vez que haya agregado SetRobotOrientation() a su código, verifique el visualizador 3D incorporado. A corta distancia, Megatag2 y Megatag1 deberían coincidir casi o exactamente. A larga distancia, Megatag 2 (robot rojo) debería ser más preciso y más estable que Megatag1 (robot azul).
Una vez que el visualizador incorporado muestre buenos resultados, puede usar Megatag2 de manera segura para guiar su robot durante el período autónomo.
El único filtro que recomendamos agregar es un filtro de "velocidad angular máxima". Puede encontrar que a altas velocidades angulares, sus estimaciones de pose se vuelven ligeramente menos confiables.
El repositorio de ejemplos tiene un ejemplo de Megatag2 con este filtro.
if(Math.abs(m_gyro.getRate()) > 720) // si nuestra velocidad angular es mayor a 720 grados por segundo, ignorar actualizaciones de visión
{
doRejectUpdate = true;
}
if(mt2.tagCount == 0)
{
doRejectUpdate = true;
}
LimelightLib 1.5 (4/3/24)
Añadir
getBotPoseEstimate_wpiRed_MegaTag2()
getBotPoseEstimate_wpiBlue_MegaTag2()
SetRobotOrientation()
Limelight OS 2024.3.4 (20/03/24)
Gracias a todos los equipos que contribuyeron con ideas para esta actualización.
Solucionador de Etiqueta Única de Mayor Precisión
El solucionador 3D de etiqueta única de MegaTag ha sido mejorado. Es mucho más estable que antes a larga distancia.
JSON Deshabilitado por Defecto (Cambio Importante)
- JSON ha sido deshabilitado por defecto para reducir el uso de ancho de banda y en general para equipos que utilizan tableros de auto-suscripción como Shuffleboard.
- Esto también debería reducir la carga NT y el uso de CPU del RoboRIO.
- Vuelva a habilitar json por pipeline en la pestaña de salida.
- Esta actualización incluye cambios que deberían permitir que aún más equipos hagan la transición alejándose de JSON para la estimación de pose.
Área Sin Distorsión (Cambio Importante)
Las esquinas se corrigen de la distorsión antes de calcular el área de cualquier objetivo.
Inclusión de Métricas por Fiducial en botpose, botpose_wpiblue y botpose_wpired
[tx, ty, tz, roll, pitch, yaw, tagCount, tagSpan (metros), averageDistance (metros), averageArea (porcentaje de imagen), (tags)]
Para cada etiqueta utilizada por la localización megatag, los arrays anteriores ahora incluyen (tagID, txnc, tync, ta, distanceToCamera, distanceToRobot, ambiguity)
Ambiguity es una nueva métrica que va de 0 a 1 que indica la ambigüedad de la perspectiva actual de la etiqueta. Las actualizaciones de etiqueta única con ambigüedades de etiqueta > .9 probablemente deberían ser rechazadas.
Arrays NT "rawtargets" y "rawfiducials" (Cambio Importante)
- rawtargets - (txnc,tync,ta) por objetivo
- rawfiducials - (tagID, txnc, tync, ta, distanceToCamera, distanceToRobot, ambiguity) por objetivo
- Las entradas NT anteriores de rawtargets (tx0,ty0, etc) han sido eliminadas.
Correcciones de Errores
- Se ponen a cero toda la información 3D de etiqueta única si no se ha encontrado el priorityID. Anteriormente, solo Tx, Ta, Ty y Tv se ponían a cero cuando no se encontraba la etiqueta prioritaria
- Se pone a cero botpose si la única etiqueta visible ha sido filtrada por las características de "Filtros ID" de la interfaz de usuario. Anteriormente, las botposes se reiniciaban al centro del campo en lugar de (0,0,0) si la única etiqueta visible era una etiqueta filtrada
- 2024.2 publicaba NANs en ciertas entradas de networktables en algunos casos raros. Esto ya no sucederá.
LimelightLib 1.4 (21/3/24)
- Añade soporte para Fiduciales Raw 2024.3.4. Las PoseEstimates ahora incluyen un array de rawFiducials que contienen id, txnc, tync, ta, distanceToCamera, distanceToRobot, y ambiguity
Limelight Hardware Manager 1.4 (18/3/24)
Corrección de errores
Los Limelights USB descubiertos se muestran correctamente como una única entrada en lugar de dos entradas parciales.
Limelight OS 2024.2.2 (17/03/24)
Corrección de errores
TX y TY respetan correctamente la mira en las entradas NT.
Limelight OS 2024.2 (8/3/24)
Orientación sin punto de mira con Json (tx_nocross, ty_nocross) y NT (txnc, tync)
Si estás usando orientación tx/ty con calibración de intrínsecos personalizada, probablemente aún estés viendo variaciones de cámara a cámara porque el punto de mira de Limelight no está alineado con el píxel principal de la cámara. Los equipos que requieren mayor precisión en tx/ty pueden configurar el punto de mira para que coincida con el píxel principal o usar estas nuevas métricas.
Posible cambio disruptivo en tx/ty
Se introdujo un error a principios de esta temporada que afectó la calibración personalizada específicamente para tx, ty, y tx + ty en json. Limelight OS estaba volviendo a las calibraciones predeterminadas en varios casos.
Mejoras en la Calibración
La calibración ahora es casi instantánea, sin importar cuántas imágenes se hayan capturado. También hemos corregido un fallo causado por tener más de 30 imágenes aproximadamente bajo ciertas circunstancias.
Estamos obteniendo consistentemente un error de reproyección de alrededor de 1 píxel con 15-20 imágenes de objetivos de papel, y un error de 0.3 píxeles con nuestros objetivos calib.io de alta calidad.
Corrección de la Interfaz de Filtros de Fiduciales
El cuadro de texto de filtros de fiduciales ahora acepta cualquier número de filtros.
Varios
El Generador de Apriltags ahora tiene por defecto "sin borde" para evitar el escalado con etiquetas de 165.1 mm.
Limelight OS 2024.1.1 (24/02/24)
- Corrección del priorityID
Limelight OS 2024.1 (24/02/24)
Métricas de Hardware (clave hw en networktables, solicitud GET /status)
- Los equipos ahora tienen la capacidad de registrar FPS, Carga de CPU, uso de RAM y Temperatura de CPU.
- Resuelve https://github.com/LimelightVision/limelight-feedback/issues/5
Mejora en la Calibración
- Corrige un error que podía ocurrir si una imagen de calibración contenía exactamente una detección válida. Mejora la retroalimentación en la interfaz web.
Mejora en la Localización del Robot (conteo de tags y más)
-
Todos los arrays de botpose en networktables (botpose, botpose_wpiblue y botpose_wpired) ahora incluyen Conteo de Tags, Extensión de Tags (metros), Distancia Promedio (metros) y Área Promedio (porcentaje de imagen)
-
Estas métricas se calculan con tags que están incluidos en el mapa de campo cargado. Los AprilTags personalizados y/o móviles no afectarán estas métricas.
-
Con la calibración del dispositivo y esta actualización del array botpose, creemos que JSON no es necesario para la gran mayoría de los casos de uso este año.
-
El volcado JSON ahora incluye botpose_avgarea, botpose_avgdist, botpose_span y botpose_tagcount para conveniencia.
[tx,ty,tz,rx,ry,rz,latency,tagcount,tagspan,avgdist,avgarea]
Nueva Característica: ID Prioritario (Clave NT priorityid)
-
Si tu robot usa características basadas tanto en odometría como en tx/ty, probablemente te has encontrado con el siguiente problema de experiencia de usuario:
-
Antes de esta actualización, no había una manera fácil de cambiar el ID de tag preferido para el apuntamiento tx/ty.
-
Aunque existe un filtro de ID en la interfaz de usuario, este
- no es dinámico
- elimina tags de la localización megaTag.
-
Esto significaba que los equipos estaban creando varios pipelines: uno para localización 3D, y uno por tag tx/ty (un pipeline para disparar desde el lado azul con tag 7, uno para amplificar desde el lado azul con tag 6, etc.).
-
La nueva característica de ID prioritario (Clave NT priorityid) te permite decirle a tu Limelight "Después de que se complete toda la detección, filtrado y ordenamiento de tags, enfócate en el tag que coincida con el ID prioritario."
-
Esto no afecta la localización de ninguna manera, y solo cambia ligeramente el orden de los tags en los resultados JSON.
-
Si tu ID prioritario no es -1, tx/ty/ta devolverán 0 a menos que el tag elegido sea visible.
Varios
- Corrige la "x" a través de la pantalla mientras se usa el modo de doble objetivo en un pipeline de apriltag 3D
- API REST expandida con cargas de etiquetas de red neuronal (/uploadlabels)
- Incluye el apodo del dispositivo en el json /status
LimelightLib 1.3
- LimelightLib (Java y CPP) han sido actualizados para hacer la localización más fácil que nunca.
LimelightHelpers.PoseEstimate limelightMeasurement = LimelightHelpers.getBotPoseEstimate_wpiBlue("limelight");
if(limelightMeasurement.tagCount >= 2)
{
m_poseEstimator.setVisionMeasurementStdDevs(VecBuilder.fill(.7,.7,9999999));
m_poseEstimator.addVisionMeasurement(
limelightMeasurement.pose,
limelightMeasurement.timestampSeconds);
}
Nuevos recursos para Equipos
Seguimiento de Problemas y Comentarios de Limelight: https://github.com/LimelightVision/limelight-feedback/issues
Repositorio de Ejemplos: https://github.com/LimelightVision/limelight-examples
Ejemplo de Apuntado y Medición de Distancia con Swerve: https://docs.limelightvision.io/docs/docs-limelight/tutorials/tutorial-swerve-aiming-and-ranging
Ejemplo de Localización MegaTag: https://docs.limelightvision.io/docs/docs-limelight/tutorials/tutorial-swerve-pose-estimation
Gracias a los contribuyentes recientes jasondaming, Gold876, JosephTLockwood, Andrew Gasser, y virtuald
Actualizaciones de Limelight 2024 (6/2/24)
Actualización de la Documentación de Limelight
- La documentación ha sido reescrita para simplificar el proceso de configuración
Generador de AprilTags de Limelight
- https://tools.limelightvision.io/ ahora cuenta con el primer generador de AprilTags en línea.
- Selecciona el tamaño del papel, el tamaño del marcador y los IDs de las etiquetas para generar un PDF imprimible.
- Es posible que Safari no muestre correctamente las etiquetas en este momento.
Limelight Map Builder
- https://tools.limelightvision.io/map-builder
- Ahora puedes construir mapas personalizados de AprilTag con una interfaz intuitiva.
- La familia predeterminada y el tamaño de etiqueta se han actualizado para coincidir con el campo de 2024.
Nuevo Administrador de Hardware
- La Herramienta Finder ahora es el Administrador de Hardware de Limelight
- Ha sido reescrito desde cero. Ahora detecta de manera confiable los Limelights, proporciona información de diagnóstico más útil y no requiere reinicios para funcionar correctamente.
- Obténlo ahora desde la página de descargas
Entrena tus propias Redes Neuronales
- Puedes entrenar tus propios modelos de detección de forma gratuita con RoboFlow, el Cuaderno de Entrenamiento del Detector Limelight, y nuestro nuevo tutorial
2024 Detector de Mapa y Notas con AprilTag
- El modelo de mapa y detector se ha añadido a la página de descargas y a la última imagen del sistema operativo Limelight.
Limelight OS 2024.0 (2/6/24)
Correcciones de Calibración ChArUco
- Se ha aumentado la precisión subpixel de nuestro detector ChArUco. Ahora es posible lograr un error de reproyección de 1-2 píxeles con objetivos de tablero y 20 imágenes.
- Usando la misma cámara y el mismo objetivo, 2023.6 logró un RPE de 20 píxeles, y 2024.0 logró un RPE de 1.14 píxeles.
- Los campos de entrada ya no aceptan letras ni caracteres especiales. Esto elimina la posibilidad de un fallo del sistema.
Mejora de Precisión de Megatag Sin Configuración Adicional
- Antes de esta actualización, el generador de mapas interno de Megatag de Limelight hacía referencia al control deslizante de tamaño de la interfaz de usuario en lugar de los tamaños de etiquetas proporcionados por el archivo .fmap.
- Megatag ahora respeta los tamaños de etiquetas configurados en los archivos fmap e ignora el control deslizante de tamaño.
- Si su control deslizante de tamaño no se ha establecido en 165.1 mm, notará una mejora inmediata en la precisión de localización.
Mejoras de Rendimiento y Correcciones de Errores
- Pipelines de AprilTag con mayor FPS
- El rendimiento del Visualizador de Espacio de Campo ha mejorado significativamente.
Correcciones de Errores
- Las etiquetas April en los visualizadores 3D a veces se dibujaban con imágenes de etiquetas incorrectas o corruptas. Las etiquetas ahora se muestran siempre correctamente.
- "v" / tv / "valid" ahora solo devolverá "1" si hay detecciones válidas. Anteriormente, tv siempre era "1"