v4.5.9

v4.5.9 brengt ruwe preview-streaming voor boards zonder hardware-JPEG-encoder, hardwarematig sensor-croppen om meer RAM vrij te maken, snellere Helium-versnelde debayering en een reeks camera-/USB-debugfixes. Het wijzigt ook de AprilTag-resultaat-API en de standaard set AprilTag-families, dus lees de ingrijpende wijzigingen hieronder.

Hoogtepunten

  • Ruwe preview-streaming — boards zonder hardware-JPEG-encoder kunnen nu verkleinde ruwe frames naar de IDE/host sturen in plaats van geen preview te kunnen tonen.

  • Hardwarematig sensor-croppen — het instellen van een kleiner framegrootte vermindert nu het geheugen per buffer en maakt RAM vrij voor fb_alloc().

  • Snellere debayering — Bayer→RGB/grijswaarden-conversie is nu Helium-SIMD-versneld op Cortex-M55-boards.

  • Ingrijpend: het AprilTag-resultaatobject is overgestapt op attribuuttoegang en de standaard set AprilTag-families is verkleind (zie de AprilTag-wijzigingen en de wijziging van de AprilTag-familie).

Nieuwe functies

  • Ruwe preview-streaming — boards zonder hardware-JPEG-encoder kunnen JPEG omzeilen en verkleinde ruwe frames (begrensd op ~60 KB) naar de IDE/host streamen, zodat live preview op die boards werkt.

Overige wijzigingen en verbeteringen

  • Hardwarematig croppen is nu ingeschakeld op alle STM32-/NXP-boards (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Wanneer een framegrootte of venster wordt ingesteld, wordt het geheugen per buffer teruggebracht tot de gecropte grootte, wat meer RAM vrijmaakt voor fb_alloc().

  • Snellere debayering — Bayer→RGB565/grijswaarden-conversie is nu ARM Helium/MVE-SIMD-versneld op Cortex-M55-boards (bijv. RT1060), met een gedeeld SIMD-JPEG-encoderpad.

  • Snellere IDE-debug — de debugger draagt gegevens nu waar mogelijk rechtstreeks vanuit de USB-stack over, waardoor een extra kopie wordt vermeden.

  • MicroPython-submodule bijgewerkt — boards kunnen de TinyUSB CDC-buffer aanpassen, plus GC- en buildregelfixes.

Bugfixes

Camera en sensoren:

  • Het OV7725 Bayer/CFA-patroon gecorrigeerd (GBRG → BGGR), wat de gedebayerde kleuruitvoer op OV7725-camera’s verhelpt; de OV7725 rapporteert nu het Bayer-pixelformaat, en Bayer-only sensoren rapporteren nu een brondiepte van 1 byte per pixel.

  • De groottebrekening van de ruwe/Bayer-framebuffer verholpen.

Machine learning:

  • TensorFlow Lite Micro gebruikt nu het vrije geheugen van de GC-heap bij het bepalen van de grootte van de tijdelijke tensorarena, wat allocatiefouten bij het laden van modellen voorkomt op boards met beperkt framebuffer-geheugen.

Host / IDE:

  • De afhandeling van de USB-debug-CDC-buffer op TinyUSB-boards verholpen voor betrouwbaardere seriële/debug-doorvoer.

  • tools/pyopenmv: de RGB565-bytevolgorde verholpen, een scale-argument toegevoegd, en de framebuffer-tool rapporteert nu de afbeeldingsgrootte/-formaat.

Hardware- en boardondersteuning

  • OV7725 rapporteert nu het Bayer-pixelformaat (correcte ruwe/CFA-afhandeling).

  • Hardwarematig croppen ingeschakeld op de hele STM32-/NXP-boardreeks.

Ingrijpende API-wijzigingen

Voor gebruikers zichtbare API-wijzigingen tussen v4.5.8 en v4.5.9. Reikwijdte: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is voorzien van een label voor de impact:

  • minor — beperkte API; treft alleen scripts die het gebruikten.

  • behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je je code alleen wilt porten, ga dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar zijn diff op GitHub.

AprilTag-resultaatobjecten en set_buffers (minor)

AprilTag-resultaten van find_apriltags() stellen hun gegevens nu beschikbaar als attributen in plaats van methoden — gebruik tag.cx, tag.cy, tag.rotation, tag.family, tag.corners in plaats van tag.cx(), tag.family(), enz. Nieuwe accessors name (familienaam-string) en de float-precisie-accessors cxf / cyf zijn toegevoegd.

Daarnaast is de automatische videobufferconfiguratie gewijzigd: set_buffers vervangt auto_adjust — geef -1 door om tot drie buffers ter grootte van het frame te gebruiken (of het maximum dat past) en 1 om de hele framebuffer te gebruiken. De buffergrootte houdt nu rekening met bits per pixel, zodat er meer buffers kunnen worden gealloceerd voor 1-bpp-formaten.

Commits: c0d4759f8, 7b36e4ef6

ble_advertising en RPC-over-netwerk verwijderd (minor)

De hulpbibliotheek ble_advertising en het voorbeeld ble_temperature.py zijn verwijderd — gebruik in plaats daarvan aioble (er wordt een aioble-temperatuurvoorbeeld geleverd). De RPC-netwerk-master-/slaveklassen zijn verwijderd uit rpc.py.

Commits: 6513276c1, 44a7e579d

AprilTag-families standaard uitgeschakeld (behavior)

AprilTag-families zijn nu individueel tijdens compileren selecteerbaar, en de ongebruikte families zijn standaard uitgeschakeld. Op standaardboards detecteert find_apriltags() nu alleen de TAG36H11-familie, tenzij de firmware opnieuw wordt gebouwd met andere families ingeschakeld. Scripts die op een standaardbuild op andere families (TAG16H5, TAG25H9, …) vertrouwen, zullen ze stilzwijgend niet meer detecteren.

Commit: effe12f2c

Migratiechecklist

Voor een schone port naar v4.5.9 bestaat het typische werk uit:

  1. Wijzig de toegang tot AprilTag-resultaten van methodeaanroepen naar attributen (tag.cx()tag.cx), en stap over van auto_adjust op set_buffers (de AprilTag-/bufferwijzigingen).

  2. Vervang ble_advertising door aioble en laat elk gebruik van RPC-netwerk-master/slave vallen (de verwijderingen).

  3. Als je andere AprilTag-families dan TAG36H11 op een standaardbuild gebruikt, let er dan op dat ze standaard niet meer worden gedetecteerd (de wijziging van de AprilTag-familie).