v3.9.0¶
v3.9.0 是一次重大發行。它新增了 nRF 移植版,支援 Arduino Nano 33 BLE Sense(相機、PDM audio 模組、ulab、凍結的感測器驅動程式),帶來 FLIR Lepton 以及 MLX90641 / MLX90621 熱感測器與大幅重構的 fir 模組、OV5640 自動對焦 ioctl,以及全新的 image.ImageIO 串流型別。舊版 CMSIS-NN nn 模組與舊的 ImageReader / ImageWriter 類別已被移除 — 請閱讀下方的破壞性變更。
重點摘要¶
Arduino Nano 33 BLE Sense — 全新 nRF52840 移植版,具備相機、PDM
audio模組、ulab與凍結的感測器驅動程式。熱感測 — 支援 FLIR Lepton、MLX90641 與 MLX90621,並重構
fir模組(調色盤、鏡像、縮放、輻射量測、FFC)。OV5640 自動對焦 — 新增
sensor.IOCTL_*_AUTO_FOCUSioctl。image.ImageIO— 統一的影像串流型別(記憶體或檔案;read/write/seek/size/close),取代ImageReader/ImageWriter。破壞性變更: CMSIS-NN
nn模組與image.ImageReader/image.ImageWriter已被移除,且find_lines()/fir的行為有所變更 — 請參閱破壞性變更。
新功能¶
nRF 移植版 / Arduino Nano 33 BLE Sense — 全新的 nRF52840 移植版與開發板支援,具備全新的
audio模組(audio.init()、audio.start_streaming()、audio.stop_streaming())、啟用ulab,以及凍結的apds9960/lps22h/lsm9ds1/hts221感測器驅動程式。image.ImageIO— 全新的影像串流型別,透過read()/write()/seek()/size()/close()同時支援記憶體與檔案串流,並提供 ImageIO 讀取/寫入/記憶體範例。FLIR Lepton — 新增
FIR_LEPTON支援,含fir.radiometric()、fir.trigger_ffc()與fir.register_vsync_cb()。熱感測器 — 新增 MLX90641(
FIR_MLX90641)與 MLX90621 熱電堆支援(官方 Melexis 驅動程式)。fir調色盤 / 方向 — 新增fir.PALETTE_RAINBOW/PALETTE_IRONBOW/GRAYSCALE/RGB565常數,且fir.read_ir()現在接受hmirror/vflip/transpose。OV5640 自動對焦 — 新增
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 範例重新整理為依開發板分類的目錄。
其他變更與改進¶
改用壓縮的 MicroPython 錯誤訊息(較短的例外字串);
fir.init()的type引數在省略時現在會透過 I2C 匯流排掃描自動偵測;xalloc例外現在會回報所請求的位元組數;Portenta 上啟用了 UART 8;FIR 範例已整併為thermal_camera.py/thermal_overlay.py/thermal_overlay_lcd.py。為了容納於 flash 中,OpenMV 4 建置上停用了image.get_similarity()與選擇性搜尋,且影像函式庫現在可在無檔案系統的情況下建置(適用於無檔案系統的開發板)。
錯誤修正¶
相機與感測器:
修正 OV5640 PCLK 計算、新增遺漏的 I2C IRQ 處理常式(修正 I2C 傳輸卡死)、為提升可靠性重構 cambus I2C 讀/寫、使 Lepton I2C 匯流排可選擇、將 cambus 匯流排復原接腳移至各開發板設定、在失敗前先重試 cambus 掃描一次,並使 OpenMV PT(Lepton + 相機共用 I2C)正常運作。
熱感測:
修正
firget_ir()/draw_ir()與image.get_similarity()中的最大值計算(FLT_MIN→-FLT_MAX)、AMG8833 12→16 位元處理,以及 MLX90621 準確度(官方 Melexis 驅動程式)。
顯示、音訊與系統:
將 STM32 SPI LCD 傳輸移至 HAL SPI 回呼函式(顯示可靠性)、修正 Nano 33
audio.init()(HF 振盪器 + PDM 比率,使麥克風正常運作)、修正新 HAL 下的 H7 計時器狀態、nRFgc_collect與早期開發板初始化/解除初始化,並停止在find_apriltags()/find_rects()期間印出多餘的「uh oh, no preference for overlapping detection」訊息。
硬體與開發板支援¶
Arduino Nano 33 BLE Sense — 全新 nRF52840 開發板(相機、PDM 音訊、
ulab、凍結的感測器驅動程式)。FLIR Lepton、MLX90641 與 MLX90621 熱感測器。
OV5640 自動對焦 — OpenMV 2/3/4/4 Plus/PT/Portenta。
Portenta — 啟用 UART 8。
破壞性 API 變更¶
v3.8.0 與 v3.9.0 之間使用者可見的 API 變更。範圍:modules/ 中的 Python C 模組與 scripts/libraries/ 中的 Python 函式庫。
每項變更都標註了其影響程度:
major — 影響大多數使用該功能的指令碼;您將需要移植程式碼。
minor — 範圍狹窄的 API;僅影響有用到它的指令碼。
behavior — API 相同但結果不同;請重新檢查經過調校的指令碼。
變更依影響程度依此順序分組。若您只想移植程式碼,可直接跳至文末的 移植檢查清單。每個 commit 雜湊值都連結至其在 GitHub 上的 diff。
CMSIS-NN nn 模組已移除 (major)¶
CMSIS-NN nn 模組已被移除,包括 nn.load()、net.forward()、net.search() 與 nn_class 輔助類別。模型推論改用 TensorFlow Lite(tf)模組。原本以 nn 載入 .network 模型的指令碼必須移植為使用 tf 搭配 TensorFlow Lite 模型。
Commits: fbc767b36
ImageReader / ImageWriter 由 image.ImageIO 取代 (major)¶
image.ImageReader / image.ImageWriter 及其 next_frame() / add_frame() 方法已被移除,並由全新的 image.ImageIO 型別取代,後者透過 read() / write() / seek() / size() / close() 同時支援記憶體與檔案串流。使用舊版 reader/writer 類別的程式碼必須移植為 image.ImageIO(請參閱更名後的 imageio_read.py / imageio_write.py 範例)。
Commits: 783a78754
fir.draw_ir() 的 scale 關鍵字已移除 (minor)¶
fir.draw_ir() 已在全新的影像繪製流程之上重寫。scale=(min, max) 關鍵字已被移除,並新增了 hint、x_scale、y_scale、roi 與位置式 x/y 位移引數。原本將 scale=(min, max) 傳給 fir.draw_ir() 的指令碼必須移除它並改用新引數。
Commits: 0a29103b1
find_lines() 近似運算 (behavior)¶
image.find_lines() 現在以 (abs(gx) + abs(gy)) / 2 來近似梯度量值,並跳過低於 126 的量值。這較快,但會改變偵測到的線段集合與累加器值,因此請重新檢查並重新調校 threshold / theta_margin / rho_margin。
Commits: 902ae3c98
fir.snapshot() 重構 (behavior)¶
fir.snapshot() 已大幅重構,採用全新的關鍵字 API(hmirror、vflip、transpose、x_scale、y_scale、x_size、y_size、scale、rgb_channel、alpha、color_palette、hint、pixformat、copy_to_fb),且內建範例也已重寫。先前僅支援位置式/pixformat 的行為已變更;請將 FIR 指令碼移植為新的關鍵字形式(請參閱更新後的 thermopile-shield 範例)。
Commits: 53f2248b8
fir.init() 在失敗時拋出例外 (behavior)¶
fir.init() 現在在未偵測到熱感測器時會拋出例外(並乾淨地解除初始化),而非默默繼續。在您先前依賴它不拋出例外之處,請以 try / except 包裹 fir.init()(或確保感測器已連接)。
Commits: 4b2f972f3
移植檢查清單¶
要乾淨地移植至 v3.9.0,通常需進行的工作有:
將 CMSIS-NN
nn模型推論移植至 TensorFlow Litetf模組(nn 移除)。將
image.ImageReader/image.ImageWriter替換為image.ImageIO(ImageIO 變更)。從
fir.draw_ir()移除scale=(min, max)關鍵字並改用新引數(draw_ir 變更)。針對近似量值度量重新調校
find_lines()參數(find_lines 變更)。將 FIR 指令碼移植為新的
fir.snapshot()關鍵字 API(fir.snapshot 變更),並處理fir.init()在感測器遺失時拋出例外的情況(fir.init 變更)。
所有其他指令碼皆可不經修改執行。