v4.5.9

v4.5.9 trae transmisión de vista previa sin procesar para placas sin codificador JPEG por hardware, recorte de sensor por hardware para liberar más RAM, debayering acelerado con Helium más rápido y un lote de correcciones de cámara/depuración USB. También cambia la API de resultados de AprilTag y el conjunto predeterminado de familias de AprilTag, así que lee los cambios incompatibles a continuación.

Aspectos destacados

  • Transmisión de vista previa sin procesar — las placas sin codificador JPEG por hardware ahora pueden enviar fotogramas sin procesar reducidos al IDE/host en lugar de fallar la vista previa.

  • Recorte de sensor por hardware — establecer un tamaño de fotograma menor ahora reduce la memoria por búfer y libera RAM para fb_alloc().

  • Debayering más rápido — la conversión Bayer→RGB/escala de grises ahora está acelerada con Helium-SIMD en placas Cortex-M55.

  • Incompatible: el objeto de resultado de AprilTag cambió a acceso por atributos y el conjunto predeterminado de familias de AprilTag se redujo (consulta los cambios de AprilTag y el cambio de familias de AprilTag).

Nuevas características

  • Transmisión de vista previa sin procesar — las placas sin codificador JPEG por hardware pueden omitir JPEG y transmitir fotogramas sin procesar reducidos (limitados a ~60 KB) al IDE/host, de modo que la vista previa en vivo funciona en esas placas.

Otros cambios y mejoras

  • El recorte por hardware ahora está habilitado en todas las placas STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Cuando se establece un tamaño de fotograma o una ventana, la memoria por búfer se reduce al tamaño recortado, liberando más RAM para fb_alloc().

  • Debayering más rápido — la conversión Bayer→RGB565/escala de grises ahora está acelerada con SIMD ARM Helium/MVE en placas Cortex-M55 (p. ej. RT1060), con una ruta compartida del codificador JPEG SIMD.

  • Depuración del IDE más rápida — el depurador ahora transfiere datos directamente desde la pila USB cuando es posible, evitando una copia adicional.

  • Submódulo de MicroPython actualizado — las placas pueden redimensionar el búfer CDC de TinyUSB, además de correcciones de GC y de reglas de compilación.

Correcciones de errores

Cámara y sensores:

  • Se corrigió el patrón Bayer/CFA del OV7725 (GBRG → BGGR), arreglando la salida de color debayerizada en las cámaras OV7725; el OV7725 ahora informa el formato de píxel Bayer, y los sensores solo Bayer ahora informan una profundidad de origen de 1 byte por píxel.

  • Se corrigió el cálculo del tamaño del framebuffer sin procesar/Bayer.

Aprendizaje automático:

  • TensorFlow Lite Micro ahora usa la memoria libre del montículo de GC al dimensionar la arena temporal de tensores, evitando fallos de asignación al cargar el modelo en placas con poca memoria de framebuffer.

Host / IDE:

  • Se corrigió el manejo del búfer CDC de depuración USB en placas TinyUSB para un rendimiento serie/de depuración más fiable.

  • tools/pyopenmv: se corrigió el orden de bytes de RGB565, se añadió un argumento scale y la herramienta de framebuffer ahora informa el tamaño/formato de la imagen.

Hardware y soporte de placas

  • OV7725 ahora informa el formato de píxel Bayer (manejo correcto de raw/CFA).

  • Recorte por hardware habilitado en toda la gama de placas STM32/NXP.

Cambios incompatibles en la API

Cambios incompatibles en la API visibles para el usuario entre v4.5.8 y v4.5.9. Alcance: módulos C de Python en modules/ y bibliotecas de Python en scripts/libraries/.

Cada cambio está etiquetado con su impacto:

  • menor — API reducida; solo afecta a los scripts que la usaban.

  • comportamiento — misma API, resultados diferentes; vuelve a comprobar los scripts ajustados.

Los cambios se agrupan por impacto en ese orden. Si solo quieres portar tu código, salta a la lista de comprobación de migración al final. Cada hash de commit enlaza a su diff en GitHub.

Objetos de resultado de AprilTag y set_buffers (menor)

Los resultados de AprilTag de find_apriltags() ahora exponen sus datos como atributos en lugar de métodos — usa tag.cx, tag.cy, tag.rotation, tag.family, tag.corners en lugar de tag.cx(), tag.family(), etc. Se añadieron nuevos accesores name (cadena con el nombre de la familia) y cxf / cyf con precisión de float.

Por separado, la configuración automática del búfer de vídeo cambió: set_buffers reemplaza a auto_adjust — pasa -1 para usar hasta tres búferes del tamaño del fotograma (o los máximos que quepan) y 1 para usar todo el búfer de fotogramas. El dimensionamiento de búferes ahora tiene en cuenta los bits por píxel, por lo que se pueden asignar más búferes para los formatos de 1 bpp.

Commits: c0d4759f8, 7b36e4ef6

ble_advertising y RPC sobre red eliminados (menor)

La biblioteca auxiliar ble_advertising y el ejemplo ble_temperature.py fueron eliminados — usa aioble en su lugar (se proporciona un ejemplo de temperatura con aioble). Las clases maestro/esclavo de red RPC fueron eliminadas de rpc.py.

Commits: 6513276c1, 44a7e579d

Familias de AprilTag deshabilitadas por defecto (comportamiento)

Las familias de AprilTag ahora son seleccionables individualmente en tiempo de compilación, y las no utilizadas están deshabilitadas por defecto. En las placas estándar, find_apriltags() ahora detecta solo la familia TAG36H11 a menos que el firmware se recompile con otras familias habilitadas. Los scripts que dependen de otras familias (TAG16H5, TAG25H9, …) en una compilación estándar dejarán de detectarlas silenciosamente.

Commit: effe12f2c

Lista de comprobación de migración

Para una migración limpia a v4.5.9 el trabajo habitual es:

  1. Cambia el acceso a los resultados de AprilTag de llamadas a métodos a atributos (tag.cx()tag.cx), y cambia auto_adjust por set_buffers (los cambios de AprilTag / búfer).

  2. Reemplaza ble_advertising por aioble y elimina cualquier uso de maestro/esclavo de red RPC (las eliminaciones).

  3. Si usas familias de AprilTag distintas de TAG36H11 en una compilación estándar, ten en cuenta que ya no se detectan por defecto (el cambio de familias de AprilTag).