v4.8.1

v4.8.1 以 Qt Creator 14.0.2 為基礎,重點在於全新的高可靠度 OpenMV V2 相機協定、內建的 Code Profiler(程式碼效能分析器),以及一套在儲存時保持相機掛載而不退出的儲存流程。隨附韌體與完整範例集均更新至 4.8.1。本次沒有任何指令碼 API 的破壞性變更,但「儲存不再退出相機」的行為以及移除了數個啟動時序列旗標,屬於使用者可見的工作流程變更。

重點摘要

  • OpenMV Protocol V2 是全新的高可靠度相機堆疊(OMVCamera/OMVTransport/OMVDebug),具備 CRC32、序號、ACK/NAK、重傳、事件與分片功能。它在連線時自動協商,並驅動重置、開機、串流、指令碼執行與統計資料。

  • Code Profiler 是一個新視窗(Window > Show Code Profiler),會從相機輪詢逐函式的效能分析記錄,並以可排序的表格顯示呼叫次數、最小/最大/總計/平均微秒(μs)、平均週期數、百分比與事件計數器。

  • 原地儲存 不再退出相機磁碟機;IDE 現在會寫入 main.py 並將磁碟區內容刷新至磁碟,使裝置保持掛載狀態。

  • 多感測器偵測 會回報板上的每一顆相機,在狀態列中顯示為 Sensors: X, Y,主感測器列在最前。

  • 動態影格讀取 會針對每種像素格式重新計算最合適的原始串流解析度,並自動重新設定串流。

  • 隨附韌體與範例 在所有板子上均更新至 4.8.1,新增了 GenX320 事件相機、TensorFlow ML、Alif OLED 以及 LCD/Touch-LCD 擴充板範例。

新功能

  • 新增 OpenMV V2 通訊協定:完整的傳輸與交易層,具備 CRC32、序號、ACK/NAK、重傳、事件與分片功能,並加入在連線時自動協商且整合進序列驅動程式的 OMVCamera 類別(2fde9eb3ffff1bf2ba8c41fcfad7fc7ed4bc84c3956af669039adfa4925985207af1922a85f0c7c875070cc213e314459cce0367ca950da2f79d02b6fc9866534ecffbe)。

  • 新增 Code Profiler 視窗(Window > Show Code Profiler),會輪詢逐函式的效能分析記錄,並顯示呼叫次數、最小/最大/總計/平均微秒(μs)、平均週期數、百分比與事件計數器,並透過隨附的 ELFIO ELF 解析器將位址解析為符號(019d3cd2c57cd9e1cc)。

  • 新增 Debug Protocol Settings(除錯協定設定)對話框,顯示每秒更新的即時 System Info、Host Stats 與 Device Stats,並提供逐通道的輪詢速率以及合併與分離輪詢的控制選項(5220a61250da2f79d0)。

  • 新增 多感測器偵測:擁有一顆以上相機的板子會在狀態列中將它們全部回報為 Sensors: X, Y,主感測器列在最前(cebc79ce7)。

  • 新增 動態影格讀取(預設開啟),會針對每種像素格式(BINARYGRAYRGB565ARGB8JPEGPNG)重新計算最合適的原始串流解析度並重新設定串流(75c073bdb0da2f79d0)。

  • 新增對 BINARY(1-bpp 單色)與 ARGB8(32 位元 alpha)原始像素格式的影格緩衝區解碼,因此這些影像類型現在可在檢視器中呈現(dabb82062)。

  • 在 Windows 上,Connect 現在會掃描被作業系統標記為有問題的 USB 裝置,並以可能阻礙連線的故障裝置清單發出警告(1a5beb0811b59cd78e)。

  • 新增狀態列的 註冊指示器:針對已連線的相機顯示綠色的 Registered 或珊瑚色的 Unregistered 按鈕,可點擊以註冊該板子(a8c98a4b9)。

  • 影格緩衝區檢視器現在可透過新的 FB_MESSAGE 跳脫碼,顯示由執行中的指令碼傳來的置中文字訊息,而非影像(530048201)。

  • 新增 model-zoo 項目:ST FastDepth 深度估計模型(224/256/320)、一個 ST 頭部地標姿態模型、手掌偵測與手部地標的手部模型,以及一個 BlazeFace 正面臉部偵測模型(5516684104d64556d4fadd6c4edb8277bb88a8c98a4b9)。

  • 新增僅供工廠版本使用的自我測試指令碼(相機、IMU、ToF、WiFi、LAN),它會被隨附並在工廠版 IDE 啟動時自動開啟(0db7fbbb0);測試中的 RT1060 LAN 部分目前已停用(48370d022)。

其他變更與改進

  • 原地儲存:儲存指令碼時不再退出相機磁碟機;IDE 會寫入 main.py 並將磁碟區內容刷新至磁碟(在 Windows 上使用 FlushFileBuffers、在 Linux 上使用 syncfs、在 macOS 上使用 sync_volume_np/F_FULLFSYNC),使裝置保持掛載狀態(1614c572f6928b51ea35ed53967)。

  • 在相機忙碌時點擊的工具列動作(停用影格緩衝區、JPEG 壓縮、儲存指令碼、設定組態)現在會被排入佇列,並在裝置空閒時自動執行,而不再顯示忙碌錯誤對話框(f4315f0a4)。

  • 影格緩衝區檢視器現在預設為符合檢視範圍,因此影像會在啟動時自動縮放至視窗大小,且序列終端機輸出窗格現在於啟動時預設顯示(f3ce4dc75)。

  • 副檔名為 .lite 的已編譯模型檔案現在在所有地方都能被辨識:model-zoo 瀏覽器的篩選與顯示、韌體 ROMFS 對齊,且 Vela/STEdge AI 編譯器現在也會輸出 .lite 檔案(f3ce4dc75)。

  • STEdge AI(N6)模型編譯對話框現在會解析並回報 NPU RAM 與 hyperRAM 的使用百分比,並將重新定位後的網路輸出複製到與模型副檔名相符的檔案中(f3ce4dc75)。

  • model-zoo 瀏覽器現在會顯示檔案 Size 欄位,並將名稱欄位延展以填滿空間,而不再隱藏大小(f3ce4dc75)。

  • 新增指令碼範本已更新為新的 csi 模組 API,並預設為 VGA 影格大小,且隨附的 Hello World 範例已由 QVGA 切換為 VGA 影格大小(f3ce4dc75)。

  • Convert Video(轉換影片)對話框已重寫為使用共用的載入器對話框,具備彩色輸出、成功/失敗訊息、可關閉的 OK 按鈕,以及在平台上無法使用 FFMPEG 時的明確錯誤訊息(f56efc7be)。

  • JPEG/PNG 影像過大而無法緩衝並傳送時,影格緩衝區檢視器現在會透過新的 FB_BUFFER_ERROR 跳脫碼顯示閃爍的警告(fda826126)。

  • 進入 DFU 開機載入程式現在會在採用 V2 協定的韌體上強制開機載入程式維持常駐,並具備版本偵測,可在被強制時可能卡住的較舊開機載入程式(<1.0.2)上退回為單純的重置(975857221)。

  • 重新命名並重新整理了 ST 物件偵測模型資料夾(st_yolo_lc_v1 改為 yolo_lctiny_yolo_v2 改為 yolo_v2yolov8n 人物模型改為單純以大小命名的檔案),並移除了大型的 tiny_yolo_v2 int8 變體(34240cc3c)。

  • 序列時序現在透過韌體 settings.jsonprotocol 覆寫鍵(overrideReadTimeoutoverrideReadStallTimeoutoverridePerCommandWait 以及 V2 的 overrideCRC/overrideSEQ/overrideACK 鍵)進行調整,而不再透過啟動時的命令列旗標(019d8bf1d)。

  • 將 flake8 與 pycodestyle 的 Python 語言伺服器行長限制設為 120 欄,使長行不再以預設的 79 欄被標記(dabb82062)。

  • 藉由將 Qualcomm 模型集合與 google/mobilenet_v1 移至 models_unused 來縮減隨附的機器學習模型集,以縮小安裝程式(c44ddba20)。

錯誤修正

  • 韌體下載與資源更新的進度對話框已使用 QPointer 防護機制使其不致當機,因此在下載過程中對話框關閉時不會再使用已刪除的對話框(f3ce4dc75)。

  • 磁碟機掃描現在會持續重新掃描,直到找到相機的 USB 磁碟機為止,並在中斷連線時清除過時的磁碟機項目,移除了先前的單次計時器權宜做法(a31d41b4e)。

  • 數項連線與序列修正:隱藏的感測器(例如 SoftCSI)不再使顯示的感測器類型雜亂,Windows 序列保持連線計時器可防止 USB 停滯,Start 不再重新啟動已在執行中的指令碼,且在連接埠關閉時會乾淨地中斷相機通道(a8e467be6)。

  • 效能分析器檢視已還原其逐欄的 PMU 事件計數器選擇(可勾選的事件選單),並儲存了先前暫時停用的計數器/標頭狀態(40c679e90)。

平台與工具支援

  • Qt Creator 基礎版本: 14.0.2。

  • 隨附韌體: 由 4.7.0 更新至 4.8.1,重新建置了 OPENMV2/3/4/4P/PT、OPENMV_N6、OPENMV_AE3、OPENMV_RT1060 以及 Arduino GIGA/Nicla Vision/Portenta H7 板子的韌體(2657818ca)。

  • 藉由將多命令 USB 傳輸拆分為這些板子能處理的 USBDBG_LEN 大小的片段,修正了 macOS 上 RT1062 與 AE3 板子的協定版本交握(6b9d5f842)。

  • 重新調整了隨附的 Windows 驅動程式套件:新增了逐板簽署的 .cat/.inf 驅動程式檔案(AE3、H7、H7Plus、M4、M7、N6、Pico/PT、RT1062),並將 CDC 序列驅動程式移至一個附帶以 dpinst 為基礎之自動安裝程式的全新 openmvcdc 資料夾(439557829ba3b01bfb)。

  • 藉由將感測器 ID 0x13110x1312(連同既有的 0x1313)註冊為 MT9V0X2,新增了對較舊 MT9V032 相機感測器修訂版的支援(eaaa624e3)。

破壞性變更

本次發行沒有任何指令碼 API 的破壞性變更,但有數項使用者可見的工作流程變更:

  • 儲存指令碼時不再退出或卸載相機的 USB 磁碟機。IDE 現在會就地刷新磁碟區緩衝區,因此裝置在儲存後仍保持掛載狀態。

  • 已移除啟動時的序列旗標 -override_read_timeout(預設 5000 ms)、-override_read_stall_timeout(預設 1000 ms)與 -override_per_command_wait(預設 1 ms,macOS 上為 2 ms);序列時序現在透過韌體 settings.json 中的 protocol 覆寫鍵進行設定(019d8bf1d)。

  • 隨附的開機載入程式現在僅以 .bin 格式提供;逐板的 .dfu 韌體與開機載入程式檔案已移除。