v3.9.0¶
A v3.9.0 egy jelentős kiadás. Hozzáadja az nRF portot az Arduino Nano 33 BLE Sense lappal (kamera, PDM audio modul, ulab, befagyasztott érzékelővezérlők), bevezeti a FLIR Lepton, valamint az MLX90641 / MLX90621 hőérzékelőket és egy alaposan átdolgozott fir modult, az OV5640 automatikus fókusz ioctl-jeit, valamint az új image.ImageIO streamelési típust. A régi CMSIS-NN nn modult és a régi ImageReader / ImageWriter osztályokat eltávolították — olvasd el az alábbi törést okozó változásokat.
Kiemelt változások¶
Arduino Nano 33 BLE Sense — új nRF52840 port kamerával, PDM
audiomodullal,ulabtámogatással és befagyasztott érzékelővezérlőkkel.Hőkamera — FLIR Lepton, MLX90641 és MLX90621 támogatás egy átdolgozott
firmodullal (paletták, tükrözés, skálázás, radiometria, FFC).OV5640 automatikus fókusz — új
sensor.IOCTL_*_AUTO_FOCUSioctl-ek.image.ImageIO— egységes képstream-típus (memória vagy fájl; read/write/seek/size/close), amely felváltja azImageReader/ImageWriterosztályokat.Törést okozó: a CMSIS-NN
nnmodult, valamint azimage.ImageReader/image.ImageWriterosztályokat eltávolították, és afind_lines()/firviselkedése megváltozott — lásd a törést okozó változásokat.
Új funkciók¶
nRF port / Arduino Nano 33 BLE Sense — új nRF52840 port és lapkatámogatás, új
audiomodullal (audio.init(),audio.start_streaming(),audio.stop_streaming()), engedélyezettulabmodullal, valamint befagyasztottapds9960/lps22h/lsm9ds1/hts221érzékelővezérlőkkel.image.ImageIO— új képstream-típus, amely a memória- és fájlstreameket egyaránt támogatja aread()/write()/seek()/size()/close()metódusokon keresztül, valamint ImageIO olvasási/írási/memória-példákkal.FLIR Lepton —
FIR_LEPTONtámogatás hozzáadva afir.radiometric(),fir.trigger_ffc()ésfir.register_vsync_cb()függvényekkel.Hőérzékelők — MLX90641 (
FIR_MLX90641) és MLX90621 termoelemes támogatás hozzáadva (hivatalos Melexis vezérlők).firpaletták / orientáció — hozzáadva afir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565konstansok, és afir.read_ir()mostantól elfogadja ahmirror/vflip/transposeargumentumokat.OV5640 automatikus fókusz — hozzáadva a
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).Az Arduino példák lapkánkénti könyvtárakba lettek átszervezve.
Egyéb változások és fejlesztések¶
Áttérés a tömörített MicroPython hibaüzenetekre (rövidebb kivételsztringek); a
fir.init()typeargumentuma mostantól I2C busz-szkennelés útján automatikusan érzékeli a típust, ha kihagyják; azxallockivétel mostantól jelenti a kért bájtok számát; a UART 8 engedélyezve lett a Portentán; a FIR példák athermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.pyfájlokba lettek összevonva. A flashbe való beférés érdekében azimage.get_similarity()és a szelektív keresés le lett tiltva az OpenMV 4 buildben, a képkönyvtár pedig mostantól fájlrendszer nélkül is buildelhető (fájlrendszer nélküli lapokhoz).
Hibajavítások¶
Kamera és érzékelők:
Javítva az OV5640 PCLK számítás, hozzáadva a hiányzó I2C IRQ-kezelők (megszüntetve az I2C átviteli akadásokat), átdolgozva a cambus I2C olvasás/írás a megbízhatóság érdekében, a Lepton I2C busz választhatóvá téve, a cambus busz-helyreállítási lábak lapkánkénti konfigurációba áthelyezve, a cambus szkennelés egyszeri újrapróbálása a hiba előtt, valamint az OpenMV PT (Lepton + kamera megosztott I2C) működésre bírva.
Hőkamera:
Javítva a maximumérték-számítás a
firget_ir()/draw_ir()és azimage.get_similarity()esetén (FLT_MIN→-FLT_MAX), az AMG8833 12→16 bites kezelése, valamint az MLX90621 pontossága (hivatalos Melexis vezérlő).
Kijelző, hang és rendszer:
Az STM32 SPI LCD átvitelek áthelyezve a HAL SPI visszahívásokra (kijelző-megbízhatóság), javítva a Nano 33
audio.init()(HF oszcillátor + PDM arány, hogy a mikrofon működjön), a H7 időzítő állapota az új HAL-lal, az nRFgc_collectés a korai lapinicializálás/deinicializálás, valamint megszüntetve a felesleges „uh oh, no preference for overlapping detection” üzenet kiírása afind_apriltags()/find_rects()során.
Hardver- és lapkatámogatás¶
Arduino Nano 33 BLE Sense — új nRF52840 lap (kamera, PDM hang,
ulab, befagyasztott érzékelővezérlők).FLIR Lepton, MLX90641 és MLX90621 hőérzékelők.
OV5640 automatikus fókusz — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 engedélyezve.
Törést okozó API-változások¶
Felhasználó által észlelhető API-törések a v3.8.0 és a v3.9.0 között. Hatókör: Python C-modulok a modules/ mappában és Python könyvtárak a scripts/libraries/ mappában.
Minden változás a hatása szerint van címkézve:
major — a legtöbb szkriptet érinti, amely a funkciót használta; kódot kell átültetned.
minor — szűk API; csak az azt használó szkripteket érinti.
behavior — ugyanaz az API, más eredmények; ellenőrizd újra a hangolt szkripteket.
A változások a hatás szerint, ebben a sorrendben vannak csoportosítva. Ha csak a kódodat szeretnéd átültetni, ugorj a migrációs ellenőrzőlistához a végén. Minden commit hash a hozzá tartozó diffre mutat a GitHubon.
CMSIS-NN nn modul eltávolítva (major)¶
A CMSIS-NN nn modul eltávolításra került, beleértve az nn.load(), net.forward(), net.search() függvényeket és az nn_class segédet. A modellkövetkeztetés átkerül a TensorFlow Lite (tf) modulba. Azokat a szkripteket, amelyek .network modelleket töltöttek be az nn modullal, át kell ültetni a tf modulra egy TensorFlow Lite modellel.
Commitok: fbc767b36
Az ImageReader / ImageWriter helyett image.ImageIO (major)¶
Az image.ImageReader / image.ImageWriter osztályok és azok next_frame() / add_frame() metódusai eltávolításra kerültek, és az új image.ImageIO típus váltotta fel őket, amely a memória- és fájlstreameket egyaránt támogatja a read() / write() / seek() / size() / close() metódusokon keresztül. A régi reader/writer osztályokat használó kódot át kell ültetni a image.ImageIO típusra (lásd az átnevezett imageio_read.py / imageio_write.py példákat).
Commitok: 783a78754
fir.draw_ir() scale kulcsszó eltávolítva (minor)¶
A fir.draw_ir() újraírásra került az új képrajzolási folyamatra építve. A scale=(min, max) kulcsszó eltávolításra került, és hozzáadásra kerültek a hint, x_scale, y_scale, roi argumentumok, valamint a pozicionális x/y eltolási argumentumok. Azoknak a szkripteknek, amelyek a scale=(min, max) argumentumot adták át a fir.draw_ir() függvénynek, el kell hagyniuk azt, és az új argumentumokat kell használniuk.
Commitok: 0a29103b1
find_lines() közelítés (behavior)¶
Az image.find_lines() mostantól a gradiens nagyságát (abs(gx) + abs(gy)) / 2 formában közelíti, és kihagyja a 126 alatti nagyságokat. Ez gyorsabb, de megváltoztatja az észlelt vonalak halmazát és az akkumulátor-értékeket, ezért ellenőrizd újra és hangold újra a threshold / theta_margin / rho_margin értékeket.
Commitok: 902ae3c98
fir.snapshot() átdolgozva (behavior)¶
A fir.snapshot() jelentősen átdolgozásra került egy új kulcsszavas API-val (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb), és a mellékelt példák újraírásra kerültek. A korábbi pozicionális / kizárólag pixformat alapú viselkedés megváltozott; ültesd át a FIR szkripteket az új kulcsszavas formára (lásd a frissített thermopile-shield példákat).
Commitok: 53f2248b8
fir.init() hibát dob meghibásodáskor (behavior)¶
A fir.init() mostantól hibát dob (és tisztán deinicializál), ha a hőérzékelő nem észlelhető, a néma folytatás helyett. Csomagold a fir.init() hívást try / except blokkba (vagy biztosítsd, hogy az érzékelő csatlakoztatva legyen) ott, ahol korábban arra támaszkodtál, hogy nem dob hibát.
Commitok: 4b2f972f3
Migrációs ellenőrzőlista¶
A v3.9.0-ra való tiszta átültetéshez a tipikus teendők a következők:
Ültesd át a CMSIS-NN
nnmodellkövetkeztetést a TensorFlow Litetfmodulra (az nn eltávolítása).Cseréld le az
image.ImageReader/image.ImageWriterosztályokat aimage.ImageIOtípusra (az ImageIO változás).Hagyd el a
scale=(min, max)kulcsszót afir.draw_ir()függvényből, és használd az új argumentumokat (a draw_ir változás).Hangold újra a
find_lines()paramétereit a közelítő nagyság-metrika ellenében (a find_lines változás).Ültesd át a FIR szkripteket az új
fir.snapshot()kulcsszavas API-ra (a fir.snapshot változás), és kezeld azt, hogy afir.init()hibát dob hiányzó érzékelő esetén (a fir.init változás).
Minden más szkript változtatás nélkül fut.