v3.9.0¶
v3.9.0 je hlavní vydání. Přidává port nRF s deskou Arduino Nano 33 BLE Sense (kamera, PDM modul audio, ulab, zamrazené ovladače senzorů), přináší termální senzory FLIR Lepton plus MLX90641 / MLX90621 a výrazně přepracovaný modul fir, ioctly pro autofokus OV5640 a nový streamovací typ image.ImageIO. Starší CMSIS-NN modul nn a staré třídy ImageReader / ImageWriter byly odstraněny — přečtěte si nekompatibilní změny níže.
Hlavní novinky¶
Arduino Nano 33 BLE Sense — nový port nRF52840 s kamerou, PDM modulem
audio,ulaba zamrazenými ovladači senzorů.Termální — podpora FLIR Lepton, MLX90641 a MLX90621 s přepracovaným modulem
fir(palety, zrcadlení, škálování, radiometrie, FFC).Autofokus OV5640 — nové ioctly
sensor.IOCTL_*_AUTO_FOCUS.image.ImageIO— sjednocený typ obrazového streamu (paměť nebo soubor; read/write/seek/size/close) nahrazujícíImageReader/ImageWriter.Nekompatibilní: CMSIS-NN modul
nnaimage.ImageReader/image.ImageWriterbyly odstraněny a chovánífind_lines()/firse změnilo — viz nekompatibilní změny.
Nové funkce¶
Port nRF / Arduino Nano 33 BLE Sense — nový port nRF52840 a podpora desky s novým modulem
audio(audio.init(),audio.start_streaming(),audio.stop_streaming()), povolenýmulaba zamrazenými ovladači senzorůapds9960/lps22h/lsm9ds1/hts221.image.ImageIO— nový typ obrazového streamu podporující jak paměťové, tak souborové streamy sread()/write()/seek()/size()/close(), plus příklady ImageIO read/write/memory.FLIR Lepton — přidána podpora
FIR_LEPTONsfir.radiometric(),fir.trigger_ffc()afir.register_vsync_cb().Termální senzory — přidána podpora termopilu MLX90641 (
FIR_MLX90641) a MLX90621 (oficiální ovladače Melexis).Palety / orientace
fir— přidány konstantyfir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565afir.read_ir()nyní přijímáhmirror/vflip/transpose.Autofokus OV5640 — přidány
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).Příklady pro Arduino byly reorganizovány do adresářů podle desek.
Další změny a vylepšení¶
Přechod na komprimované chybové zprávy MicroPythonu (kratší řetězce výjimek); argument
typefunkcefir.init()nyní při vynechání automaticky detekuje pomocí skenování I2C sběrnice; výjimkaxallocnyní hlásí počet požadovaných bajtů; UART 8 byl povolen na Portentě; příklady FIR byly sloučeny dothermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py. Aby se vešly do flash paměti, bylyimage.get_similarity()a selektivní vyhledávání zakázány v buildu pro OpenMV 4 a obrazovou knihovnu lze nyní sestavit bez souborového systému (pro desky bez souborového systému).
Opravy chyb¶
Kamera a senzory:
Opraven výpočet PCLK pro OV5640, přidány chybějící obslužné rutiny přerušení I2C (oprava zaseknutí přenosů I2C), přepracováno čtení/zápis cambus I2C kvůli spolehlivosti, umožněna volitelnost I2C sběrnice Lepton, přesunuty piny pro obnovu cambus sběrnice do konfigurace podle desky, jednou zopakováno skenování cambus před selháním a zprovozněno OpenMV PT (Lepton + kamera sdílející I2C).
Termální:
Opraven výpočet maximální hodnoty v
firget_ir()/draw_ir()aimage.get_similarity()(FLT_MIN→-FLT_MAX), zpracování AMG8833 12→16 bitů a přesnost MLX90621 (oficiální ovladač Melexis).
Displej, audio a systém:
Přesunuty přenosy STM32 SPI LCD na HAL SPI callbacky (spolehlivost displeje), opravena
audio.init()na Nano 33 (HF oscilátor + PDM poměr, aby mikrofon fungoval), stav časovače H7 s novým HAL,gc_collectnRF a brzká inicializace/deinicializace desky a zastaveno tisknutí falešné zprávy „uh oh, no preference for overlapping detection“ běhemfind_apriltags()/find_rects().
Hardware a podpora desek¶
Arduino Nano 33 BLE Sense — nová deska nRF52840 (kamera, PDM audio,
ulab, zamrazené ovladače senzorů).Termální senzory FLIR Lepton, MLX90641 a MLX90621.
Autofokus OV5640 — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — povolen UART 8.
Nekompatibilní změny API¶
Změny API viditelné pro uživatele mezi v3.8.0 a v3.9.0. Rozsah: Python C-moduly v modules/ a Python knihovny v scripts/libraries/.
Každá změna je označena podle svého dopadu:
major — ovlivňuje většinu skriptů, které funkci používaly; budete muset přenést kód.
minor — úzké API; ovlivňuje pouze skripty, které ho používaly.
behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.
Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete pouze přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.
CMSIS-NN modul nn odstraněn (major)¶
CMSIS-NN modul nn byl odstraněn, včetně nn.load(), net.forward(), net.search() a pomocné třídy nn_class. Inference modelů se přesouvá do modulu TensorFlow Lite (tf). Skripty, které načítaly modely .network pomocí nn, musí být přeneseny na tf s modelem TensorFlow Lite.
Commity: fbc767b36
ImageReader / ImageWriter nahrazeny image.ImageIO (major)¶
image.ImageReader / image.ImageWriter a jejich metody next_frame() / add_frame() byly odstraněny a nahrazeny novým typem image.ImageIO, který podporuje jak paměťové, tak souborové streamy pomocí read() / write() / seek() / size() / close(). Kód používající staré třídy reader/writer musí být přenesen na image.ImageIO (viz přejmenované příklady imageio_read.py / imageio_write.py).
Commity: 783a78754
Klíčové slovo scale u fir.draw_ir() odstraněno (minor)¶
fir.draw_ir() byla přepsána nad novou kreslicí pipeline obrazu. Klíčové slovo scale=(min, max) bylo odstraněno a byly přidány argumenty hint, x_scale, y_scale, roi a poziční offsety x/y. Skripty, které předávaly scale=(min, max) do fir.draw_ir(), ho musí vypustit a použít nové argumenty.
Commity: 0a29103b1
Aproximace find_lines() (behavior)¶
image.find_lines() nyní aproximuje velikost gradientu jako (abs(gx) + abs(gy)) / 2 a přeskakuje velikosti pod 126. To je rychlejší, ale mění sadu detekovaných čar a hodnoty akumulátoru, takže znovu zkontrolujte a znovu vylaďte threshold / theta_margin / rho_margin.
Commity: 902ae3c98
fir.snapshot() přepracována (behavior)¶
fir.snapshot() byla podstatně přepracována s novým API klíčových slov (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb) a přibalené příklady byly přepsány. Předchozí poziční chování / chování pouze s pixformat se změnilo; přeneste FIR skripty na novou formu s klíčovými slovy (viz aktualizované příklady pro thermopile-shield).
Commity: 53f2248b8
fir.init() vyvolá výjimku při selhání (behavior)¶
fir.init() nyní vyvolá výjimku (a čistě se deinicializuje), když není detekován termální senzor, místo aby tiše pokračovala. Obalte fir.init() do try / except (nebo zajistěte, aby byl senzor připojen) tam, kde jste dříve spoléhali na to, že výjimku nevyvolá.
Commity: 4b2f972f3
Kontrolní seznam migrace¶
Pro čistý přechod na v3.9.0 je typická práce následující:
Přeneste inferenci modelů CMSIS-NN
nnna modul TensorFlow Litetf(odstranění nn).Nahraďte
image.ImageReader/image.ImageWriterzaimage.ImageIO(změna ImageIO).Vypusťte klíčové slovo
scale=(min, max)zfir.draw_ir()a použijte nové argumenty (změna draw_ir).Znovu vylaďte parametry
find_lines()proti aproximované metrice velikosti (změna find_lines).Přeneste FIR skripty na nové API klíčových slov
fir.snapshot()(změna fir.snapshot) a ošetřete vyvolání výjimkyfir.init()při chybějícím senzoru (změna fir.init).
Všechny ostatní skripty běží beze změny.