v3.9.0¶
v3.9.0 este o versiune majoră. Adaugă portul nRF cu Arduino Nano 33 BLE Sense (cameră, modul audio PDM, ulab, drivere de senzori integrate), aduce senzorii termici FLIR Lepton plus MLX90641 / MLX90621 și un modul fir puternic reproiectat, ioctl-uri de autofocalizare OV5640 și noul tip de streaming image.ImageIO. Modulul vechi CMSIS-NN nn și clasele vechi ImageReader / ImageWriter au fost eliminate — citiți modificările incompatibile de mai jos.
Aspecte importante¶
Arduino Nano 33 BLE Sense — un nou port nRF52840 cu cameră, un modul
audioPDM,ulabși drivere de senzori integrate.Termic — suport FLIR Lepton, MLX90641 și MLX90621 cu un modul
firreproiectat (palete, oglindire, scalare, radiometrie, FFC).Autofocalizare OV5640 — noi ioctl-uri
sensor.IOCTL_*_AUTO_FOCUS.image.ImageIO— un tip unificat de flux de imagine (memorie sau fișier; read/write/seek/size/close) care înlocuieșteImageReader/ImageWriter.Incompatibil: modulul CMSIS-NN
nnșiimage.ImageReader/image.ImageWriterau fost eliminate, iar comportamentulfind_lines()/firs-a modificat — consultați modificările incompatibile.
Funcționalități noi¶
Portul nRF / Arduino Nano 33 BLE Sense — un nou port nRF52840 și suport pentru placă, cu un nou modul
audio(audio.init(),audio.start_streaming(),audio.stop_streaming()),ulabactivat și drivere de senzori integrateapds9960/lps22h/lsm9ds1/hts221.image.ImageIO— un nou tip de flux de imagine care acceptă atât fluxuri de memorie, cât și de fișier prinread()/write()/seek()/size()/close(), plus exemple ImageIO de citire/scriere/memorie.FLIR Lepton — adăugat suport
FIR_LEPTONcufir.radiometric(),fir.trigger_ffc()șifir.register_vsync_cb().Senzori termici — adăugat suport pentru MLX90641 (
FIR_MLX90641) și termopilă MLX90621 (drivere oficiale Melexis).firpalete / orientare — adăugate constantelefir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565, iarfir.read_ir()acceptă acumhmirror/vflip/transpose.Autofocalizare OV5640 — adăugate
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).Reorganizate exemplele Arduino în directoare separate pe fiecare placă.
Alte modificări și îmbunătățiri¶
S-a trecut la mesaje de eroare MicroPython comprimate (șiruri de excepție mai scurte); argumentul
typealfir.init()detectează acum automat printr-o scanare a magistralei I2C atunci când este omis; excepțiaxallocraportează acum numărul de octeți solicitați; UART 8 a fost activat pe Portenta; exemplele FIR au fost consolidate înthermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. Pentru a încăpea în memoria flash,image.get_similarity()și căutarea selectivă au fost dezactivate în compilarea OpenMV 4, iar biblioteca de imagini poate fi acum compilată fără sistem de fișiere (pentru plăcile fără sistem de fișiere).
Remedieri de erori¶
Cameră și senzori:
S-a remediat calculul PCLK pentru OV5640, s-au adăugat handlere IRQ I2C lipsă (remediind blocajele transferurilor I2C), s-a reproiectat citirea/scrierea I2C a cambus pentru fiabilitate, s-a făcut selectabilă magistrala I2C a Lepton, s-au mutat pinii de recuperare a magistralei cambus în configurația per placă, se reîncearcă scanarea cambus o dată înainte de eșuare și s-a făcut să funcționeze OpenMV PT (Lepton + cameră cu I2C partajat).
Termic:
S-au remediat calculul valorii maxime din
firget_ir()/draw_ir()șiimage.get_similarity()(FLT_MIN→-FLT_MAX), gestionarea pe 12→16 biți a AMG8833 și acuratețea MLX90621 (driver oficial Melexis).
Afișaj, audio și sistem:
S-au mutat transferurile LCD SPI STM32 pe funcțiile de retroapelare HAL SPI (fiabilitatea afișajului), s-a remediat
audio.init()pe Nano 33 (oscilatorul HF + raportul PDM astfel încât microfonul să funcționeze), starea temporizatorului H7 cu noul HAL,gc_collectpe nRF și inițializarea/dezinițializarea timpurie a plăcii și s-a oprit afișarea mesajului eronat „uh oh, no preference for overlapping detection” în timpulfind_apriltags()/find_rects().
Hardware și suport pentru plăci¶
Arduino Nano 33 BLE Sense — o nouă placă nRF52840 (cameră, audio PDM,
ulab, drivere de senzori integrate).FLIR Lepton, MLX90641 și MLX90621 senzori termici.
Autofocalizare OV5640 — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 activat.
Modificări incompatibile ale API-ului¶
Modificări incompatibile ale API-ului vizibile pentru utilizator între v3.8.0 și v3.9.0. Domeniu: module C Python din modules/ și biblioteci Python din scripts/libraries/.
Fiecare modificare este etichetată cu impactul său:
major — afectează majoritatea scripturilor care au folosit funcționalitatea; va trebui să portați codul.
minor — API restrâns; afectează doar scripturile care l-au utilizat.
comportament — același API, rezultate diferite; reverificați scripturile reglate fin.
Modificările sunt grupate după impact, în această ordine. Dacă doriți doar să vă portați codul, treceți la lista de verificare pentru migrare de la final. Fiecare hash de commit are link către diff-ul său pe GitHub.
Modulul CMSIS-NN nn eliminat (major)¶
Modulul CMSIS-NN nn a fost eliminat, inclusiv nn.load(), net.forward(), net.search() și helperul nn_class. Inferența modelelor trece la modulul TensorFlow Lite (tf). Scripturile care încărcau modele .network cu nn trebuie portate la tf cu un model TensorFlow Lite.
Commit-uri: fbc767b36
ImageReader / ImageWriter înlocuite cu image.ImageIO (major)¶
image.ImageReader / image.ImageWriter și metodele lor next_frame() / add_frame() au fost eliminate și înlocuite cu noul tip image.ImageIO, care acceptă atât fluxuri de memorie, cât și de fișier prin read() / write() / seek() / size() / close(). Codul care folosește vechile clase reader/writer trebuie portat la image.ImageIO (consultați exemplele redenumite imageio_read.py / imageio_write.py).
Commit-uri: 783a78754
Cuvântul-cheie scale al fir.draw_ir() eliminat (minor)¶
fir.draw_ir() a fost rescrisă peste noua conductă de desenare a imaginilor. Cuvântul-cheie scale=(min, max) a fost eliminat, iar argumentele hint, x_scale, y_scale, roi și offset-urile poziționale x/y au fost adăugate. Scripturile care transmiteau scale=(min, max) către fir.draw_ir() trebuie să-l renunțe și să folosească noile argumente.
Commit-uri: 0a29103b1
Aproximarea find_lines() (comportament)¶
image.find_lines() aproximează acum magnitudinea gradientului ca (abs(gx) + abs(gy)) / 2 și ignoră magnitudinile sub 126. Acest lucru este mai rapid, dar modifică setul de linii detectate și valorile acumulatorului, așa că reverificați și reglați din nou threshold / theta_margin / rho_margin.
Commit-uri: 902ae3c98
fir.snapshot() reproiectată (comportament)¶
fir.snapshot() a fost reproiectată substanțial cu un nou API bazat pe cuvinte-cheie (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), iar exemplele incluse au fost rescrise. Comportamentul anterior, poziţional / doar cu pixformat, s-a modificat; portați scripturile FIR la noua formă cu cuvinte-cheie (consultați exemplele actualizate pentru shield-ul termopilă).
Commit-uri: 53f2248b8
fir.init() ridică excepție la eșec (comportament)¶
fir.init() ridică acum o excepție (și se dezinițializează curat) atunci când senzorul termic nu este detectat, în loc să continue silențios. Încadrați fir.init() într-un try / except (sau asigurați-vă că senzorul este conectat) acolo unde anterior vă bazați pe faptul că nu ridica excepție.
Commit-uri: 4b2f972f3
Lista de verificare pentru migrare¶
Pentru o portare curată la v3.9.0, lucrul tipic este:
Portați inferența modelelor CMSIS-NN
nnla modulul TensorFlow Litetf(eliminarea nn).Înlocuiți
image.ImageReader/image.ImageWritercuimage.ImageIO(modificarea ImageIO).Renunțați la cuvântul-cheie
scale=(min, max)dinfir.draw_ir()și folosiți noile argumente (modificarea draw_ir).Reglați din nou parametrii
find_lines()față de metrica aproximativă a magnitudinii (modificarea find_lines).Portați scripturile FIR la noul API cu cuvinte-cheie
fir.snapshot()(modificarea fir.snapshot) și tratați ridicarea excepției de cătrefir.init()la un senzor lipsă (modificarea fir.init).
Toate celelalte scripturi rulează neschimbate.