v3.9.0

v3.9.0 je velika verzija. Dodaje nRF port s Arduino Nano 33 BLE Sense (kamera, PDM audio modul, ulab, zamrznuti upravljački programi senzora), donosi FLIR Lepton te MLX90641 / MLX90621 toplinske senzore i temeljito preuređeni fir modul, OV5640 autofokus ioctl-ove te novi streaming tip image.ImageIO. Naslijeđeni CMSIS-NN nn modul i stare klase ImageReader / ImageWriter su uklonjene — pročitajte promjene koje narušavaju kompatibilnost u nastavku.

Istaknuto

  • Arduino Nano 33 BLE Sense — novi nRF52840 port s kamerom, PDM audio modulom, ulab i zamrznutim upravljačkim programima senzora.

  • Toplinski — podrška za FLIR Lepton, MLX90641 i MLX90621 uz preuređeni fir modul (palete, zrcaljenje, skaliranje, radiometrija, FFC).

  • OV5640 autofokus — novi sensor.IOCTL_*_AUTO_FOCUS ioctl-ovi.

  • image.ImageIO — jedinstveni tip toka slike (memorija ili datoteka; read/write/seek/size/close) koji zamjenjuje ImageReader / ImageWriter.

  • Narušava kompatibilnost: CMSIS-NN nn modul i image.ImageReader / image.ImageWriter su uklonjeni, a ponašanje find_lines() / fir se promijenilo — vidi promjene koje narušavaju kompatibilnost.

Nove značajke

  • nRF port / Arduino Nano 33 BLE Sense — novi nRF52840 port i podrška za ploču, uz novi audio modul (audio.init(), audio.start_streaming(), audio.stop_streaming()), omogućen ulab te zamrznute apds9960 / lps22h / lsm9ds1 / hts221 upravljačke programe senzora.

  • image.ImageIO — novi tip toka slike koji podržava i memorijske i datotečne tokove uz read() / write() / seek() / size() / close(), plus primjeri ImageIO read/write/memory.

  • FLIR Lepton — dodana podrška za FIR_LEPTON uz fir.radiometric(), fir.trigger_ffc() i fir.register_vsync_cb().

  • Toplinski senzori — dodana podrška za MLX90641 (FIR_MLX90641) i MLX90621 termopil (službeni Melexis upravljački programi).

  • fir palete / orijentacija — dodane konstante fir.PALETTE_RAINBOW / PALETTE_IRONBOW / GRAYSCALE / RGB565, a fir.read_ir() sada prihvaća hmirror / vflip / transpose.

  • OV5640 autofokus — dodani sensor.IOCTL_TRIGGER_AUTO_FOCUS / IOCTL_PAUSE_AUTO_FOCUS / IOCTL_RESET_AUTO_FOCUS / IOCTL_WAIT_ON_AUTO_FOCUS (OpenMV 2/3/4/4 Plus/PT/Portenta).

  • Reorganizirani Arduino primjeri u direktorije po pločama.

Ostale promjene i poboljšanja

  • Prelazak na komprimirane MicroPython poruke o greškama (kraći nizovi iznimki); argument type funkcije fir.init() sada se automatski detektira putem skeniranja I2C sabirnice kada se izostavi; iznimka xalloc sada javlja broj traženih bajtova; UART 8 je omogućen na Portenti; FIR primjeri konsolidirani su u thermal_camera.py / thermal_overlay.py / thermal_overlay_lcd.py. Kako bi stali u flash memoriju, image.get_similarity() i selektivno pretraživanje onemogućeni su u OpenMV 4 verziji, a biblioteka slike sada se može graditi bez datotečnog sustava (za ploče bez datotečnog sustava).

Ispravci grešaka

Kamera i senzori:

  • Ispravljen izračun OV5640 PCLK-a, dodani nedostajući I2C IRQ rukovatelji (ispravljanje zastoja I2C prijenosa), preuređen cambus I2C read/write radi pouzdanosti, učinjena Lepton I2C sabirnica odabirljivom, premješteni cambus pinovi za oporavak sabirnice u konfiguraciju po pločama, ponovni pokušaj cambus skeniranja jednom prije neuspjeha te osposobljen OpenMV PT (Lepton + kamera na dijeljenom I2C-u).

Toplinski:

  • Ispravljen izračun maksimalne vrijednosti u fir get_ir() / draw_ir() i image.get_similarity() (FLT_MIN-FLT_MAX), AMG8833 12→16-bitno rukovanje te točnost MLX90621 (službeni Melexis upravljački program).

Prikaz, audio i sustav:

  • Premješteni STM32 SPI LCD prijenosi na HAL SPI povratne pozive (pouzdanost prikaza), ispravljen Nano 33 audio.init() (HF oscilator + PDM omjer kako bi mikrofon radio), stanje H7 mjerača vremena uz novi HAL, nRF gc_collect te rana inicijalizacija/deinicijalizacija ploče, te zaustavljen ispis lažne poruke „uh oh, no preference for overlapping detection” tijekom find_apriltags() / find_rects().

Hardver i podrška za ploče

  • Arduino Nano 33 BLE Sense — nova nRF52840 ploča (kamera, PDM audio, ulab, zamrznuti upravljački programi senzora).

  • FLIR Lepton, MLX90641 i MLX90621 toplinski senzori.

  • OV5640 autofokus — OpenMV 2/3/4/4 Plus/PT/Portenta.

  • Portenta — omogućen UART 8.

Promjene API-ja koje narušavaju kompatibilnost

Korisniku vidljive promjene API-ja koje narušavaju kompatibilnost između v3.8.0 i v3.9.0. Opseg: Python C-moduli u modules/ i Python biblioteke u scripts/libraries/.

Svaka je promjena označena svojim utjecajem:

  • major — utječe na većinu skripti koje su koristile značajku; morat ćete prilagoditi kod.

  • minor — uski API; utječe samo na skripte koje su ga koristile.

  • behavior — isti API, drugačiji rezultati; ponovno provjerite ugođene skripte.

Promjene su grupirane po utjecaju tim redoslijedom. Ako samo želite prilagoditi svoj kod, skočite na kontrolni popis za migraciju na kraju. Svaki hash commita vodi na njegov diff na GitHubu.

CMSIS-NN nn modul uklonjen (major)

CMSIS-NN nn modul je uklonjen, uključujući nn.load(), net.forward(), net.search() i nn_class pomoćnik. Zaključivanje modela seli se na TensorFlow Lite (tf) modul. Skripte koje su učitavale .network modele s nn moraju se prilagoditi na tf s TensorFlow Lite modelom.

Commits: fbc767b36

ImageReader / ImageWriter zamijenjeni s image.ImageIO (major)

image.ImageReader / image.ImageWriter i njihove metode next_frame() / add_frame() uklonjeni su i zamijenjeni novim tipom image.ImageIO, koji podržava i memorijske i datotečne tokove putem read() / write() / seek() / size() / close(). Kod koji koristi stare reader/writer klase mora se prilagoditi na image.ImageIO (vidi preimenovane primjere imageio_read.py / imageio_write.py).

Commits: 783a78754

Ključna riječ scale u fir.draw_ir() uklonjena (minor)

fir.draw_ir() je prepisana na temelju novog cjevovoda za crtanje slike. Ključna riječ scale=(min, max) je uklonjena, a dodani su hint, x_scale, y_scale, roi te pozicijski x/y argumenti pomaka. Skripte koje su prosljeđivale scale=(min, max) funkciji fir.draw_ir() moraju to ukloniti i koristiti nove argumente.

Commits: 0a29103b1

Aproksimacija find_lines() (behavior)

image.find_lines() sada aproksimira magnitudu gradijenta kao (abs(gx) + abs(gy)) / 2 i preskače magnitude ispod 126. Ovo je brže, ali mijenja skup detektiranih linija i vrijednosti akumulatora, pa ponovno provjerite i ponovno ugodite threshold / theta_margin / rho_margin.

Commits: 902ae3c98

fir.snapshot() preuređena (behavior)

fir.snapshot() je značajno preuređena s novim API-jem ključnih riječi (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), a priloženi primjeri su prepisani. Prethodno ponašanje samo s pozicijskim/pixformat argumentom se promijenilo; prilagodite FIR skripte na novi oblik s ključnim riječima (vidi ažurirane primjere za thermopile-shield).

Commits: 53f2248b8

fir.init() izaziva iznimku pri neuspjehu (behavior)

fir.init() sada izaziva iznimku (i čisto se deinicijalizira) kada toplinski senzor nije otkriven, umjesto tihog nastavka rada. Omotajte fir.init() u try / except (ili osigurajte da je senzor spojen) gdje ste se prije oslanjali na to da ne izaziva iznimku.

Commits: 4b2f972f3

Kontrolni popis za migraciju

Za čistu prilagodbu na v3.9.0 uobičajeni posao je:

  1. Prilagodite zaključivanje CMSIS-NN nn modela na TensorFlow Lite tf modul (uklanjanje nn-a).

  2. Zamijenite image.ImageReader / image.ImageWriter s image.ImageIO (ImageIO promjena).

  3. Uklonite ključnu riječ scale=(min, max) iz fir.draw_ir() i koristite nove argumente (draw_ir promjena).

  4. Ponovno ugodite parametre find_lines() u odnosu na aproksimativnu metriku magnitude (find_lines promjena).

  5. Prilagodite FIR skripte na novi API ključnih riječi fir.snapshot() (fir.snapshot promjena) i rukujte time da fir.init() izaziva iznimku pri nedostajućem senzoru (fir.init promjena).

Sve ostale skripte rade nepromijenjene.