v3.9.0

v3.9.0 on suuri julkaisu. Se lisää nRF-portin ja Arduino Nano 33 BLE Sense -tuen (kamera, PDM audio -moduuli, ulab, jäädytetyt sensoriohjaimet), tuo FLIR Lepton - sekä MLX90641 / MLX90621 -lämpösensorit ja perusteellisesti uudistetun fir -moduulin, OV5640:n autotarkennus-ioctlit ja uuden image.ImageIO -suoratoistotyypin. Vanha CMSIS-NN nn -moduuli sekä vanhat ImageReader / ImageWriter -luokat poistettiin — lue alla olevat rikkovat muutokset.

Kohokohdat

  • Arduino Nano 33 BLE Sense — uusi nRF52840-portti kameralla, PDM audio -moduulilla, ulab-tuella ja jäädytetyillä sensoriohjaimilla.

  • Lämpökuvaus — FLIR Lepton-, MLX90641- ja MLX90621-tuki uudistetulla fir -moduulilla (paletit, peilaus, skaalaus, radiometria, FFC).

  • OV5640-autotarkennus — uudet sensor.IOCTL_*_AUTO_FOCUS -ioctlit.

  • image.ImageIO — yhtenäinen kuvavirtatyyppi (muisti tai tiedosto; read/write/seek/size/close), joka korvaa ImageReader / ImageWriter.

  • Rikkova: CMSIS-NN nn -moduuli sekä image.ImageReader / image.ImageWriter poistettiin, ja find_lines() / fir -käyttäytyminen muuttui — katso rikkovat muutokset.

Uudet ominaisuudet

  • nRF-portti / Arduino Nano 33 BLE Sense — uusi nRF52840-portti ja korttituki, uudella audio -moduulilla (audio.init(), audio.start_streaming(), audio.stop_streaming()), ulab-tuella ja jäädytetyillä apds9960 / lps22h / lsm9ds1 / hts221 -sensoriohjaimilla.

  • image.ImageIO — uusi kuvavirtatyyppi, joka tukee sekä muisti- että tiedostovirtoja metodeilla read() / write() / seek() / size() / close(), sekä ImageIO-luku/kirjoitus/muisti-esimerkit.

  • FLIR Lepton — lisättiin FIR_LEPTON-tuki funktioilla fir.radiometric(), fir.trigger_ffc() ja fir.register_vsync_cb().

  • Lämpösensorit — lisättiin MLX90641 (FIR_MLX90641) - ja MLX90621-termopilituki (viralliset Melexis-ohjaimet).

  • fir -paletit / -orientaatio — lisättiin fir.PALETTE_RAINBOW / PALETTE_IRONBOW / GRAYSCALE / RGB565 -vakiot, ja fir.read_ir() hyväksyy nyt hmirror / vflip / transpose.

  • OV5640-autotarkennus — lisättiin 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).

  • Arduino-esimerkit järjestettiin uudelleen korttikohtaisiin hakemistoihin.

Muut muutokset ja parannukset

  • Siirryttiin pakattuihin MicroPython-virheviesteihin (lyhyemmät poikkeusmerkkijonot); fir.init() -funktion type-argumentti tunnistaa nyt automaattisesti I2C-väyläskannauksella, kun se jätetään pois; xalloc-poikkeus ilmoittaa nyt pyydettyjen tavujen määrän; UART 8 otettiin käyttöön Portentassa; FIR-esimerkit yhdistettiin tiedostoiksi thermal_camera.py / thermal_overlay.py / thermal_overlay_lcd.py. Flash-muistiin mahtumiseksi image.get_similarity() ja valikoiva haku poistettiin käytöstä OpenMV 4 -käännöksessä, ja kuvakirjasto voidaan nyt rakentaa ilman tiedostojärjestelmää (tiedostojärjestelmättömiä kortteja varten).

Korjaukset

Kamera ja sensorit:

  • Korjattiin OV5640:n PCLK-laskenta, lisättiin puuttuvat I2C IRQ -käsittelijät (korjaten I2C-siirtojen jumiutumiset), uudistettiin cambus I2C -luku/kirjoitus luotettavuuden vuoksi, tehtiin Lepton-I2C-väylä valittavaksi, siirrettiin cambus-väylän palautusnastat korttikohtaiseen määritykseen, uusittiin cambus-skannaus kerran ennen epäonnistumista ja saatiin OpenMV PT (Lepton + kamera jaetulla I2C:llä) toimimaan.

Lämpökuvaus:

  • Korjattiin maksimiarvon laskenta fir -funktioissa get_ir() / draw_ir() ja image.get_similarity() (FLT_MIN-FLT_MAX), AMG8833:n 12→16-bittinen käsittely sekä MLX90621:n tarkkuus (virallinen Melexis-ohjain).

Näyttö, ääni ja järjestelmä:

  • Siirrettiin STM32 SPI LCD -siirrot HAL SPI -takaisinkutsuihin (näytön luotettavuus), korjattiin Nano 33 audio.init() (HF-oskillaattori + PDM-suhde, jotta mikrofoni toimii), H7:n ajastintila uuden HAL:n kanssa, nRF:n gc_collect ja varhainen kortin alustus/deinitialisointi, ja lopetettiin virheellisen viestin ”uh oh, no preference for overlapping detection” tulostaminen find_apriltags() / find_rects() -kutsujen aikana.

Laitteisto- ja korttituki

  • Arduino Nano 33 BLE Sense — uusi nRF52840-kortti (kamera, PDM-ääni, ulab, jäädytetyt sensoriohjaimet).

  • FLIR Lepton-, MLX90641- ja MLX90621-lämpösensorit.

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

  • Portenta — UART 8 otettiin käyttöön.

Rikkovat API-muutokset

Käyttäjälle näkyvät API-muutokset versioiden v3.8.0 ja v3.9.0 välillä. Laajuus: Python C -moduulit hakemistossa modules/ ja Python-kirjastot hakemistossa scripts/libraries/.

Jokainen muutos on merkitty vaikutuksensa mukaan:

  • merkittävä — koskee useimpia ominaisuutta käyttäneitä skriptejä; sinun on siirrettävä koodia.

  • vähäinen — kapea API; koskee vain sitä käyttäneitä skriptejä.

  • käyttäytyminen — sama API, eri tulokset; tarkista hienosäädetyt skriptit uudelleen.

Muutokset on ryhmitelty vaikutuksen mukaan tässä järjestyksessä. Jos haluat vain siirtää koodisi, hyppää lopussa olevaan siirtymistarkistuslistaan. Jokainen commit-tiiviste linkittää diffiinsä GitHubissa.

CMSIS-NN nn -moduuli poistettiin (merkittävä)

CMSIS-NN nn -moduuli poistettiin, mukaan lukien nn.load(), net.forward(), net.search() ja nn_class -apuluokka. Mallien päättely siirtyy TensorFlow Lite (tf) -moduuliin. Skriptit, jotka latasivat .network-malleja nn-moduulilla, on siirrettävä tf-moduuliin TensorFlow Lite -mallilla.

Commitit: fbc767b36

ImageReader / ImageWriter korvattiin tyypillä image.ImageIO (merkittävä)

image.ImageReader / image.ImageWriter ja niiden next_frame() / add_frame() -metodit poistettiin ja korvattiin uudella image.ImageIO -tyypillä, joka tukee sekä muisti- että tiedostovirtoja metodeilla read() / write() / seek() / size() / close(). Vanhoja reader-/writer-luokkia käyttävä koodi on siirrettävä tyyppiin image.ImageIO (katso uudelleennimetyt imageio_read.py / imageio_write.py -esimerkit).

Commitit: 783a78754

fir.draw_ir() scale-avainsana poistettiin (vähäinen)

fir.draw_ir() kirjoitettiin uudelleen uuden kuvanpiirtoputken päälle. scale=(min, max) -avainsana poistettiin, ja lisättiin hint, x_scale, y_scale, roi sekä positionaaliset x/y-siirtymäargumentit. Skriptien, jotka välittivät scale=(min, max) funktiolle fir.draw_ir(), on poistettava se ja käytettävä uusia argumentteja.

Commitit: 0a29103b1

find_lines() -approksimaatio (käyttäytyminen)

image.find_lines() approksimoi nyt gradientin magnitudin muodossa (abs(gx) + abs(gy)) / 2 ja ohittaa magnitudit alle 126. Tämä on nopeampaa mutta muuttaa tunnistettujen viivojen joukkoa ja akkumulaattoriarvoja, joten tarkista ja hienosäädä uudelleen threshold / theta_margin / rho_margin.

Commitit: 902ae3c98

fir.snapshot() uudistettiin (käyttäytyminen)

fir.snapshot() uudistettiin merkittävästi uudella avainsana-API:lla (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), ja mukana toimitetut esimerkit kirjoitettiin uudelleen. Aiempi positionaalinen / pelkkä pixformat -käyttäytyminen muuttui; siirrä FIR-skriptit uuteen avainsanamuotoon (katso päivitetyt thermopile-shield-esimerkit).

Commitit: 53f2248b8

fir.init() heittää poikkeuksen epäonnistuessa (käyttäytyminen)

fir.init() heittää nyt poikkeuksen (ja deinitialisoi siististi), kun lämpösensoria ei havaita, hiljaisen jatkamisen sijaan. Kääri fir.init() rakenteeseen try / except (tai varmista sensorin kytkentä) siellä, missä aiemmin luotit siihen, ettei se heitä poikkeusta.

Commitit: 4b2f972f3

Siirtymistarkistuslista

Puhdas siirtyminen versioon v3.9.0 tarkoittaa tyypillisesti:

  1. Siirrä CMSIS-NN nn -mallien päättely TensorFlow Lite tf -moduuliin (nn:n poisto).

  2. Korvaa image.ImageReader / image.ImageWriter tyypillä image.ImageIO (ImageIO-muutos).

  3. Poista scale=(min, max) -avainsana funktiosta fir.draw_ir() ja käytä uusia argumentteja (draw_ir-muutos).

  4. Hienosäädä find_lines() -parametrit uudelleen approksimoitua magnitudimittaria vasten (find_lines-muutos).

  5. Siirrä FIR-skriptit uuteen fir.snapshot() -avainsana-API:in (fir.snapshot-muutos) ja käsittele fir.init() -poikkeus puuttuvasta sensorista (fir.init-muutos).

Kaikki muut skriptit toimivat muuttumattomina.