v3.9.0¶
v3.9.0 büyük bir sürümdür. Arduino Nano 33 BLE Sense ile birlikte nRF portunu ekler (kamera, PDM audio modülü, ulab, dondurulmuş sensör sürücüleri), FLIR Lepton ile birlikte MLX90641 / MLX90621 termal sensörlerini ve büyük ölçüde yeniden çalışılmış bir fir modülünü, OV5640 otomatik odaklama ioctl’lerini ve yeni image.ImageIO akış türünü getirir. Eski CMSIS-NN nn modülü ve eski ImageReader / ImageWriter sınıfları kaldırıldı — aşağıdaki bozucu değişiklikleri okuyun.
Öne çıkanlar¶
Arduino Nano 33 BLE Sense — kamera, bir PDM
audiomodülü,ulabve dondurulmuş sensör sürücüleriyle yeni nRF52840 portu.Termal — yeniden çalışılmış bir
firmodülüyle (paletler, aynalama, ölçekleme, radyometri, FFC) FLIR Lepton, MLX90641 ve MLX90621 desteği.OV5640 otomatik odaklama — yeni
sensor.IOCTL_*_AUTO_FOCUSioctl’leri.image.ImageIO—ImageReader/ImageWriter‘ın yerini alan birleşik bir görüntü akış türü (bellek veya dosya; read/write/seek/size/close).Bozucu: CMSIS-NN
nnmodülü veimage.ImageReader/image.ImageWriterkaldırıldı vefind_lines()/firdavranışı değişti — bozucu değişikliklere bakın.
Yeni özellikler¶
nRF portu / Arduino Nano 33 BLE Sense — yeni bir
audiomodülü (audio.init(),audio.start_streaming(),audio.stop_streaming()), etkinleştirilmişulabve dondurulmuşapds9960/lps22h/lsm9ds1/hts221sensör sürücüleriyle yeni nRF52840 portu ve kart desteği.image.ImageIO—read()/write()/seek()/size()/close()ile hem bellek hem de dosya akışlarını destekleyen yeni bir görüntü-akış türü, ayrıca ImageIO okuma/yazma/bellek örnekleri.FLIR Lepton —
fir.radiometric(),fir.trigger_ffc()vefir.register_vsync_cb()ileFIR_LEPTONdesteği eklendi.Termal sensörler — MLX90641 (
FIR_MLX90641) ve MLX90621 termopil desteği eklendi (resmi Melexis sürücüleri).firpaletleri / yönlendirme —fir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565sabitleri eklendi vefir.read_ir()artıkhmirror/vflip/transposekabul ediyor.OV5640 otomatik odaklama —
sensor.IOCTL_TRIGGER_AUTO_FOCUS/IOCTL_PAUSE_AUTO_FOCUS/IOCTL_RESET_AUTO_FOCUS/IOCTL_WAIT_ON_AUTO_FOCUSeklendi (OpenMV 2/3/4/4 Plus/PT/Portenta).Arduino örnekleri kart-başına dizinlere yeniden düzenlendi.
Diğer değişiklikler ve iyileştirmeler¶
Sıkıştırılmış MicroPython hata mesajlarına geçildi (daha kısa istisna dizeleri);
fir.init()‘intypeargümanı artık atlandığında bir I2C veri yolu taraması yoluyla otomatik algılıyor;xallocistisnası artık istenen bayt sayısını raporluyor; Portenta’da UART 8 etkinleştirildi; FIR örneklerithermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.pyiçinde birleştirildi. Flash belleğe sığdırmak için, OpenMV 4 derlemesindeimage.get_similarity()ve seçici arama devre dışı bırakıldı ve görüntü kütüphanesi artık bir dosya sistemi olmadan derlenebiliyor (dosya-sistemsiz kartlar için).
Hata düzeltmeleri¶
Kamera ve sensörler:
OV5640 PCLK hesaplaması düzeltildi, eksik I2C IRQ işleyicileri eklendi (I2C aktarım takılmaları düzeltildi), cambus I2C okuma/yazma güvenilirlik için yeniden çalışıldı, Lepton I2C veri yolu seçilebilir yapıldı, cambus veri yolu kurtarma pinleri kart-başına yapılandırmaya taşındı, cambus taraması başarısız olmadan önce bir kez yeniden denendi ve OpenMV PT (Lepton + kamera paylaşımlı I2C) çalıştırıldı.
Termal:
firget_ir()/draw_ir()veimage.get_similarity()içindeki maksimum-değer hesaplaması (FLT_MIN→-FLT_MAX), AMG8833 12→16-bit işleme ve MLX90621 doğruluğu (resmi Melexis sürücüsü) düzeltildi.
Ekran, ses ve sistem:
STM32 SPI LCD aktarımları HAL SPI geri çağırmalarına taşındı (ekran güvenilirliği), Nano 33
audio.init()düzeltildi (HF osilatör + PDM oranı, böylece mikrofon çalışır), yeni HAL ile H7 zamanlayıcı durumu, nRFgc_collectve erken kart ilklendirme/sonlandırma düzeltildi vefind_apriltags()/find_rects()sırasında “uh oh, no preference for overlapping detection” sahte mesajının yazdırılması durduruldu.
Donanım ve kart desteği¶
Arduino Nano 33 BLE Sense — yeni nRF52840 kartı (kamera, PDM ses,
ulab, dondurulmuş sensör sürücüleri).FLIR Lepton, MLX90641 ve MLX90621 termal sensörler.
OV5640 otomatik odaklama — OpenMV 2/3/4/4 Plus/PT/Portenta.
Portenta — UART 8 etkinleştirildi.
Bozucu API değişiklikleri¶
v3.8.0 ile v3.9.0 arasında kullanıcıya görünen API kırılmaları. Kapsam: modules/ içindeki Python C-modülleri ve scripts/libraries/ içindeki Python kütüphaneleri.
Her değişiklik etkisine göre etiketlenmiştir:
major — özelliği kullanan çoğu betiği etkiler; kodu taşımanız gerekecek.
minor — dar API; yalnızca onu kullanan betikleri etkiler.
behavior — aynı API, farklı sonuçlar; ince ayar yapılmış betikleri yeniden kontrol edin.
Değişiklikler bu sırayla etkilerine göre gruplandırılmıştır. Yalnızca kodunuzu taşımak istiyorsanız, sondaki taşıma kontrol listesine atlayın. Her commit özeti, GitHub’daki diff’ine bağlanır.
CMSIS-NN nn modülü kaldırıldı (major)¶
CMSIS-NN nn modülü, nn.load(), net.forward(), net.search() ve nn_class yardımcısı dahil olmak üzere kaldırıldı. Model çıkarımı TensorFlow Lite (tf) modülüne taşınır. nn ile .network modellerini yükleyen betikler, bir TensorFlow Lite modeliyle tf‘ye taşınmalıdır.
Commit’ler: fbc767b36
ImageReader / ImageWriter image.ImageIO ile değiştirildi (major)¶
image.ImageReader / image.ImageWriter ve bunların next_frame() / add_frame() metotları kaldırıldı ve read() / write() / seek() / size() / close() yoluyla hem bellek hem de dosya akışlarını destekleyen yeni image.ImageIO türüyle değiştirildi. Eski reader/writer sınıflarını kullanan kod image.ImageIO‘ya taşınmalıdır (yeniden adlandırılan imageio_read.py / imageio_write.py örneklerine bakın).
Commit’ler: 783a78754
fir.draw_ir() scale anahtar sözcüğü kaldırıldı (minor)¶
fir.draw_ir(), yeni görüntü çizim ardışık düzeni üzerine yeniden yazıldı. scale=(min, max) anahtar sözcüğü kaldırıldı ve hint, x_scale, y_scale, roi ve konumsal x/y kayma argümanları eklendi. fir.draw_ir()‘ye scale=(min, max) geçiren betikler bunu kaldırmalı ve yeni argümanları kullanmalıdır.
Commit’ler: 0a29103b1
find_lines() yaklaşımı (behavior)¶
image.find_lines() artık gradyan büyüklüğünü (abs(gx) + abs(gy)) / 2 olarak yaklaşık hesaplıyor ve 126’nın altındaki büyüklükleri atlıyor. Bu daha hızlıdır ancak tespit edilen çizgiler kümesini ve birikteç değerlerini değiştirir, bu nedenle threshold / theta_margin / rho_margin‘i yeniden kontrol edin ve yeniden ayarlayın.
Commit’ler: 902ae3c98
fir.snapshot() yeniden çalışıldı (behavior)¶
fir.snapshot() yeni bir anahtar sözcük API’siyle (hmirror, vflip, transpose, x_scale, y_scale, x_size, y_size, scale, rgb_channel, alpha, color_palette, hint, pixformat, copy_to_fb) büyük ölçüde yeniden çalışıldı ve paketlenmiş örnekler yeniden yazıldı. Önceki konumsal/yalnızca-pixformat davranışı değişti; FIR betiklerini yeni anahtar sözcük biçimine taşıyın (güncellenmiş thermopile-shield örneklerine bakın).
Commit’ler: 53f2248b8
fir.init() başarısızlıkta hata fırlatır (behavior)¶
fir.init() artık termal sensör algılanmadığında sessizce devam etmek yerine hata fırlatıyor (ve temiz bir şekilde sonlandırıyor). Daha önce hata fırlatmamasına güvendiğiniz yerlerde fir.init()‘i try / except içine sarın (veya sensörün bağlı olduğundan emin olun).
Commit’ler: 4b2f972f3
Taşıma kontrol listesi¶
v3.9.0’a temiz bir taşıma için tipik iş şudur:
CMSIS-NN
nnmodel çıkarımını TensorFlow Litetfmodülüne taşıyın (nn kaldırılması).image.ImageReader/image.ImageWriter‘ıimage.ImageIOile değiştirin (ImageIO değişikliği).fir.draw_ir()‘denscale=(min, max)anahtar sözcüğünü kaldırın ve yeni argümanları kullanın (draw_ir değişikliği).find_lines()parametrelerini yaklaşık büyüklük metriğine karşı yeniden ayarlayın (find_lines değişikliği).FIR betiklerini yeni
fir.snapshot()anahtar sözcük API’sine taşıyın (fir.snapshot değişikliği) ve eksik bir sensördefir.init()‘in hata fırlatmasını ele alın (fir.init değişikliği).
Diğer tüm betikler değişmeden çalışır.