v3.9.0¶
v3.9.0 is een grote release. Het voegt de nRF-port toe met de Arduino Nano 33 BLE Sense (camera, PDM audio-module, ulab, bevroren sensorstuurprogramma’s), brengt FLIR Lepton plus de thermische sensoren MLX90641 / MLX90621 en een sterk herwerkte fir-module, OV5640 autofocus-ioctls, en het nieuwe image.ImageIO-streamingtype. De verouderde CMSIS-NN nn-module en de oude ImageReader / ImageWriter-klassen werden verwijderd — lees hieronder de wijzigingen die niet achterwaarts compatibel zijn.
Hoogtepunten¶
Arduino Nano 33 BLE Sense — nieuwe nRF52840-port met camera, een PDM
audio-module,ulaben bevroren sensorstuurprogramma’s.Thermisch — ondersteuning voor FLIR Lepton, MLX90641 en MLX90621 met een herwerkte
fir-module (paletten, spiegelen, schalen, radiometrie, FFC).OV5640 autofocus — nieuwe
sensor.IOCTL_*_AUTO_FOCUS-ioctls.image.ImageIO— een uniform beeldstreamtype (geheugen of bestand; read/write/seek/size/close) ter vervanging vanImageReader/ImageWriter.Niet achterwaarts compatibel: de CMSIS-NN
nn-module enimage.ImageReader/image.ImageWriterwerden verwijderd, en het gedrag vanfind_lines()/firis gewijzigd — zie de wijzigingen die niet achterwaarts compatibel zijn.
Nieuwe functies¶
nRF-port / Arduino Nano 33 BLE Sense — nieuwe nRF52840-port en boardondersteuning, met een nieuwe
audio-module (audio.init(),audio.start_streaming(),audio.stop_streaming()),ulabingeschakeld, en bevrorenapds9960- /lps22h- /lsm9ds1- /hts221-sensorstuurprogramma’s.image.ImageIO— een nieuw beeldstreamtype dat zowel geheugen- als bestandsstreams ondersteunt metread()/write()/seek()/size()/close(), plus ImageIO lees-/schrijf-/geheugenvoorbeelden.FLIR Lepton —
FIR_LEPTON-ondersteuning toegevoegd metfir.radiometric(),fir.trigger_ffc()enfir.register_vsync_cb().Thermische sensoren — ondersteuning toegevoegd voor de MLX90641 (
FIR_MLX90641) en MLX90621-thermopile (officiële Melexis-stuurprogramma’s).fir-paletten / -oriëntatie — de constantenfir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565toegevoegd, enfir.read_ir()accepteert nuhmirror/vflip/transpose.OV5640 autofocus —
sensor.IOCTL_TRIGGER_AUTO_FOCUS/IOCTL_PAUSE_AUTO_FOCUS/IOCTL_RESET_AUTO_FOCUS/IOCTL_WAIT_ON_AUTO_FOCUStoegevoegd (OpenMV 2/3/4/4 Plus/PT/Portenta).De Arduino-voorbeelden gereorganiseerd in mappen per board.
Overige wijzigingen en verbeteringen¶
Overgestapt op gecomprimeerde MicroPython-foutmeldingen (kortere exception-strings); het
type-argument vanfir.init()detecteert nu automatisch via een I2C-busscan wanneer het wordt weggelaten; dexalloc-exception meldt nu het aantal gevraagde bytes; UART 8 werd ingeschakeld op de Portenta; FIR-voorbeelden werden geconsolideerd inthermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. Om in het flashgeheugen te passen, werdenimage.get_similarity()en selectieve search uitgeschakeld in de OpenMV 4-build, en kan de beeldbibliotheek nu zonder bestandssysteem worden gebouwd (voor boards zonder bestandssysteem).
Bugfixes¶
Camera en sensoren:
De OV5640 PCLK-berekening gerepareerd, ontbrekende I2C IRQ-handlers toegevoegd (waarmee I2C-overdrachthangs worden opgelost), de cambus I2C-lees-/schrijf herwerkt voor betrouwbaarheid, de Lepton I2C-bus selecteerbaar gemaakt, de cambus busherstel-pins naar configuratie per board verplaatst, de cambus-scan eenmaal opnieuw geprobeerd voordat hij faalt, en de OpenMV PT (Lepton + camera gedeelde I2C) werkend gekregen.
Thermisch:
De berekening van de maximale waarde in
firget_ir()/draw_ir()enimage.get_similarity()gerepareerd (FLT_MIN→-FLT_MAX), de AMG8833 12→16-bits afhandeling, en de MLX90621-nauwkeurigheid (officieel Melexis-stuurprogramma).
Display, audio en systeem:
STM32 SPI LCD-overdrachten verplaatst naar HAL SPI-callbacks (displaybetrouwbaarheid), de Nano 33
audio.init()gerepareerd (HF-oscillator + PDM-verhouding zodat de microfoon werkt), de H7-timerstatus met de nieuwe HAL, nRFgc_collecten vroege board-init/deinit, en het printen gestopt van de spurious melding “uh oh, no preference for overlapping detection” tijdensfind_apriltags()/find_rects().
Hardware- en boardondersteuning¶
Arduino Nano 33 BLE Sense — nieuw nRF52840-board (camera, PDM-audio,
ulab, bevroren sensorstuurprogramma’s).FLIR Lepton, MLX90641 en MLX90621 thermische sensoren.
OV5640 autofocus — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 ingeschakeld.
Niet achterwaarts compatibele API-wijzigingen¶
Voor gebruikers zichtbare API-breuken tussen v3.8.0 en v3.9.0. Bereik: Python C-modules in modules/ en Python-bibliotheken in scripts/libraries/.
Elke wijziging is gemarkeerd met de impact ervan:
major — treft de meeste scripts die de functie gebruikten; je zult code moeten porteren.
minor — beperkte API; treft alleen scripts die deze gebruikten.
behavior — dezelfde API, andere resultaten; controleer afgestelde scripts opnieuw.
Wijzigingen zijn in die volgorde per impact gegroepeerd. Als je alleen je code wilt porteren, spring dan naar de migratiechecklist aan het einde. Elke commit-hash linkt naar zijn diff op GitHub.
CMSIS-NN nn-module verwijderd (major)¶
De CMSIS-NN nn-module werd verwijderd, inclusief nn.load(), net.forward(), net.search() en de nn_class-helper. Modelinferentie verhuist naar de TensorFlow Lite (tf)-module. Scripts die .network-modellen met nn laadden, moeten worden geporteerd naar tf met een TensorFlow Lite-model.
Commits: fbc767b36
ImageReader / ImageWriter vervangen door image.ImageIO (major)¶
image.ImageReader / image.ImageWriter en hun next_frame() / add_frame()-methoden werden verwijderd en vervangen door het nieuwe image.ImageIO-type, dat zowel geheugen- als bestandsstreams ondersteunt via read() / write() / seek() / size() / close(). Code die de oude reader-/writer-klassen gebruikt, moet worden geporteerd naar image.ImageIO (zie de hernoemde voorbeelden imageio_read.py / imageio_write.py).
Commits: 783a78754
fir.draw_ir() scale-sleutelwoord verwijderd (minor)¶
fir.draw_ir() werd herschreven bovenop de nieuwe beeldtekenpipeline. Het sleutelwoord scale=(min, max) werd verwijderd, en de argumenten hint, x_scale, y_scale, roi en positionele x/y-offset werden toegevoegd. Scripts die scale=(min, max) aan fir.draw_ir() doorgaven, moeten dit laten vallen en de nieuwe argumenten gebruiken.
Commits: 0a29103b1
find_lines()-benadering (behavior)¶
image.find_lines() benadert de gradiëntmagnitude nu als (abs(gx) + abs(gy)) / 2 en slaat magnitudes onder 126 over. Dit is sneller, maar verandert de set gedetecteerde lijnen en accumulatorwaarden, dus controleer en herafstel threshold / theta_margin / rho_margin.
Commits: 902ae3c98
fir.snapshot() herwerkt (behavior)¶
fir.snapshot() werd grondig herwerkt met een nieuwe sleutelwoord-API (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), en de meegeleverde voorbeelden werden herschreven. Het vorige positionele/pixformat-only gedrag is veranderd; porteer FIR-scripts naar de nieuwe sleutelwoordvorm (zie de bijgewerkte thermopile-shield-voorbeelden).
Commits: 53f2248b8
fir.init() werpt een fout bij mislukking (behavior)¶
fir.init() werpt nu een fout (en de-initialiseert netjes) wanneer de thermische sensor niet wordt gedetecteerd, in plaats van stilzwijgend door te gaan. Wikkel fir.init() in try / except (of zorg dat de sensor is aangesloten) waar je er eerder op vertrouwde dat het geen fout wierp.
Commits: 4b2f972f3
Migratiechecklist¶
Voor een schone overgang naar v3.9.0 is het typische werk:
Porteer CMSIS-NN
nn-modelinferentie naar de TensorFlow Litetf-module (de nn-verwijdering).Vervang
image.ImageReader/image.ImageWriterdoorimage.ImageIO(de ImageIO-wijziging).Laat het sleutelwoord
scale=(min, max)uitfir.draw_ir()vallen en gebruik de nieuwe argumenten (de draw_ir-wijziging).Herafstel de parameters van
find_lines()tegen de benaderde magnitudemetriek (de find_lines-wijziging).Porteer FIR-scripts naar de nieuwe sleutelwoord-API van
fir.snapshot()(de fir.snapshot-wijziging) en handel het werpen van een fout doorfir.init()bij een ontbrekende sensor af (de fir.init-wijziging).
Alle andere scripts draaien ongewijzigd.