v4.6.0

v4.6.0 is een grote feature-release. De kern ervan: de cameramodule is hernoemd van sensor naar csi (met een achterwaarts compatibele sensor-alias), een nieuwe ml.postprocessing-module, ondersteuning voor de Prophesee GenX320-eventsensor, PAG7936 en FLIR Boson thermische camera’s, een nieuwe TinyUSB-gebaseerde DFU-bootloader, Nema GPU-versnelling en MicroPython 1.24. Ook verandert het alpha-bereik bij het tekenen, dus lees de breaking changes hieronder.

Hoogtepunten

  • sensor is nu ook csi — de cameramodule is hernoemd naar csi; sensor blijft bestaan als achterwaarts compatibele alias (nog geen codewijziging vereist).

  • Nieuwe ml.postprocessing-modulefomo_postprocess, yolo_v2_postprocess, yolo_v5_postprocess.

  • Nieuwe sensoren — Prophesee GenX320-eventcamera, PAG7936 en FLIR Boson 320/640 thermisch.

  • Nieuwe DFU-bootloader — een TinyUSB-gebaseerde standaard-DFU-bootloader vervangt de oude CDC-bootloader op alle boards.

  • Nema GPU — versnelde 2D/vectorgraphics op STM32.

  • MicroPython bijgewerkt naar 1.24.0.

  • Breaking: het alpha-bereik bij het tekenen is veranderd van 0–256 naar 0–255 (zie de wijziging van het alpha-bereik).

Nieuwe functies

  • ml.postprocessing — een nieuwe module die modeluitvoer decodeert: een FOMO-decoder (fomo_postprocess, find_blobs + NMS, instelbare threshold) en yolo_v2_postprocess / yolo_v5_postprocess (met threshold, anchors, nms_threshold, nms_sigma).

  • Eventcamera-visualisatie — nieuwe Image.to_evt_dark() / Image.to_evt_light()-methoden en PALETTE_EVT_DARK / PALETTE_EVT_LIGHT-kleurenpaletten.

  • Diepte-visualisatie — een nieuwe Image.to_depth()-methode en een PALETTE_DEPTH-kleurenpalet (boards met ToF).

  • Sensorintrospectie — een nieuwe IOCTL_GET_RGB_STATS-ioctl die een (R, Gb, Gr, B)-tuple met kanaalstatistieken teruggeeft.

  • GenX320-bias-presets — een nieuwe IOCTL_GENX320_SET_BIASES-ioctl met de presets GENX320_BIASES_DEFAULT / LOW_LIGHT / ACTIVE_MARKER / LOW_NOISE / HIGH_SPEED.

  • omv.debug_mode() — een nieuwe functie om op te vragen of de USB-debuginterface actief is.

  • Nema GPU — integratie van de Cortex-M55 NemaGFX/NemaVG-driver op STM32, met in-place GPU cut-through voor draw_image.

  • PAG7936 — kleurenbalkuitvoer, automatische belichting / automatische versterking, slaapstand en MIPI-modus toegevoegd.

Overige wijzigingen en verbeteringen

  • MicroPython bijgewerkt naar 1.24.0; ulab bijgewerkt naar 6.7.3 (voegt keepdims toe).

  • Gemeenschappelijk bootscript — STM32 / i.MX RT / RP2 delen nu een _boot.py die automatisch het flash/SD-bestandssysteem aanmaakt met een standaard main.py en README.txt en tijdelijke opstart-globals vrijgeeft.

  • STM32N6-basiswerk — basisondersteuning voor STM32N6, een XSPI-driver, een gemeenschappelijke MPU-driver en firmware-/bootloader-signing op STM32.

  • Computed-goto VM — ingeschakeld op STM32 en nRF voor een snellere interpreter.

Bugfixes

Camera en sensoren:

  • De OV5640 PCLK-/belichtingsberekening gecorrigeerd (twee MIPI-lanes, gecorrigeerde delertabel).

  • De MT9V0xx Bayer-CFA-variant accepteert nu RGB565/BAYER/GRAYSCALE en levert correcte raw Bayer-data in plaats van een fout te geven.

  • Lens-shading-correctie voor PAG7936 ingeschakeld en het verschuiven van HD-afbeeldingen verholpen; set_framerate() is nu per resolutie begrensd.

  • Thermische opname met FLIR Lepton op de i.MX RT1060 verholpen (gecorrigeerde VoSPI CPOL/CPHA), en Lepton-momentopnamen geven nu specifieke foutcodes terug.

  • Frequentieafronding van GenX320 verholpen.

Beeldverwerking:

  • Geheugencorruptie in to_ndarray() op grijswaardenafbeeldingen verholpen.

  • Voorspelling van debayer-grenzen bij Bayer→RGB/grijswaarden-conversie verholpen.

  • draw_image() transpose verholpen op boards zonder SDRAM (gechunkte buffer).

  • Verwerking van boolean-argumenten in Image.binary() en de load_to_fb-vlag van ml.Model verholpen.

Systeem:

  • SPI RX-only / TX-only pinconfiguratie op STM32 en i.MX RT verholpen.

  • De Portenta H7 Ethernet-DMA-buffers naar SRAM3 verplaatst zodat Ethernet werkt.

  • Een weggevallen teken in debug-channel-tekstuitvoer over USB verholpen; dynamische ML-allocatiegroottes naar boven afgerond om te kleine modelbuffers te voorkomen.

Hardware- en board-ondersteuning

  • Prophesee GenX320 event-gebaseerde visiesensor (STM32F7 + i.MX RT1060).

  • PAG7936-sensor (met MIPI-modus).

  • FLIR Boson 320/640 thermische camera’s (IDD 4-driver).

  • Nema GPU-versnelling op STM32.

  • STM32N6 bootloader-/XSPI-basiswerk.

  • VL53L5CX — ondersteuning voor power-enable-pin toegevoegd.

Breaking API-wijzigingen

Voor de gebruiker zichtbare API-breuken tussen v4.5.9 en v4.6.0. Scope: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.

Elke wijziging is getagd met de impact ervan:

  • major — de meeste scripts die het gebruikten moeten worden aangepast.

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

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

  • tooling — treft alleen het flashen / hosttools / boardbeschikbaarheid.

Wijzigingen zijn in die volgorde gegroepeerd op impact. Als je alleen je code wilt porten, spring dan naar de migratiechecklist aan het eind. Elke commit-hash linkt naar de bijbehorende diff op GitHub. Let op: de hernoeming van module sensorcsi in deze release is geen breaking change — sensor werkt nog steeds als alias.

Het alpha-bereik bij het tekenen is nu 0–255 (major)

Het alpha-argument van draw_image() en elke overlay die er een aanneemt (FIR, ToF, display, TV, MJPEG, alpha-tabellen) gebruikt nu een bereik van 0–255 in plaats van 0–256. Scripts die 256 doorgaven voor volledig dekkend, of die alpha berekenden tegen 256, moeten worden herschaald naar 0–255.

Commit: 1f87b5bb6

FLIR Lepton-ioctl-constanten hernoemd (minor)

Drie Lepton-ioctl-constanten zijn ingekort: IOCTL_LEPTON_SET_MEASUREMENT_MODEIOCTL_LEPTON_SET_MODE, IOCTL_LEPTON_SET_MEASUREMENT_RANGEIOCTL_LEPTON_SET_RANGE, IOCTL_LEPTON_GET_FPA_TEMPERATUREIOCTL_LEPTON_GET_FPA_TEMP. De meegeleverde voorbeelden zijn bijgewerkt.

Commit: 12582d54d

Wijzigingen in de ML-postprocessing-API (minor)

ml.postprocessing is nieuw in deze release en de API ervan is tijdens de ontwikkeling verschoven: het constructor-keyword score_threshold van yolo_v2_postprocess is hernoemd naar threshold, en lege postprocessing-resultaten geven nu () terug in plaats van []. Het meegeleverde model yolov5_rgb_person is hernoemd naar yolo_v5_224_nano. ml.apps.MicroSpeech geeft nu willekeurige **kwargs door aan audio.init() in plaats van een vaste gain_db=24.

Commits: d67bd1ad7, 979b4e8ee, b89b815b2, 6671d9df5, 5c2f4388c

AGAST is de standaard-hoekdetector (behavior)

find_keypoints() gebruikt nu AGAST in plaats van FAST als standaard-hoekdetector op alle boards. Sleutelpuntsets (en daarmee descriptor-matches) verschillen van eerdere releases — controleer afgestelde sleutelpunt-pipelines opnieuw. IDE-framebuffer-streaming is nu ook begrensd op 20 Hz om de USB-belasting te verlagen.

Commits: da6bf6910, bc4e39246

Bootloader, verwijderde boards en functies (tooling)

De oude CDC-bootloader is vervangen door een nieuwe TinyUSB-gebaseerde standaard-DFU-bootloader op alle boards — het firmware-updatemechanisme is veranderd; pas je flash-workflow/tooling hierop aan. Het OpenMV Pro-board, de standalone Raspberry Pi Pico-build en de WiFi-debug (wifidbg) remote-IDE-functie zijn verwijderd.

Commits: a03fc90d8, c2e616aae, af3ea774b, f8bca9799, 59a38a0d3, 7edeb4fbe, d58d77fa2

Migratiechecklist

Voor een schone port naar v4.6.0 is het typische werk:

  1. Herschaal elke alpha-waarde bij tekenen/overlay van het bereik 0–256 naar 0–255 (de wijziging van het alpha-bereik).

  2. Hernoem eventuele FLIR Lepton-ioctl-constanten naar hun ingekorte vormen (de hernoeming van de Lepton-ioctl).

  3. Als je de nieuwe ML-postprocessors gebruikte, schakel dan score_threshold om naar threshold, verwerk een leeg ()-resultaat en werk de modelnaam yolo_v5_224_nano bij (de ML-wijzigingen).

  4. Controleer op find_keypoints() gebaseerde pipelines opnieuw vanwege de wijziging van de AGAST-detector (de wijziging van de hoekdetector).

  5. Werk je firmware-flash-workflow bij voor de nieuwe DFU-bootloader (de bootloader-/board-wijzigingen).