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類別(2fde9eb3f、fff1bf2ba、8c41fcfad、7fc7ed4bc、84c3956af、669039adf、a49259852、07af1922a、85f0c7c87、5070cc213、e314459cc、e0367ca95、0da2f79d0、2b6fc9866、534ecffbe)。新增 Code Profiler 視窗(
Window>Show Code Profiler),會輪詢逐函式的效能分析記錄,並顯示呼叫次數、最小/最大/總計/平均微秒(μs)、平均週期數、百分比與事件計數器,並透過隨附的 ELFIO ELF 解析器將位址解析為符號(019d3cd2c、57cd9e1cc)。新增 Debug Protocol Settings(除錯協定設定)對話框,顯示每秒更新的即時 System Info、Host Stats 與 Device Stats,並提供逐通道的輪詢速率以及合併與分離輪詢的控制選項(5220a6125、0da2f79d0)。
新增 多感測器偵測:擁有一顆以上相機的板子會在狀態列中將它們全部回報為
Sensors: X, Y,主感測器列在最前(cebc79ce7)。新增 動態影格讀取(預設開啟),會針對每種像素格式(
BINARY、GRAY、RGB565、ARGB8、JPEG、PNG)重新計算最合適的原始串流解析度並重新設定串流(75c073bdb、0da2f79d0)。新增對
BINARY(1-bpp 單色)與ARGB8(32 位元 alpha)原始像素格式的影格緩衝區解碼,因此這些影像類型現在可在檢視器中呈現(dabb82062)。在 Windows 上,Connect 現在會掃描被作業系統標記為有問題的 USB 裝置,並以可能阻礙連線的故障裝置清單發出警告(1a5beb081、1b59cd78e)。
新增狀態列的 註冊指示器:針對已連線的相機顯示綠色的
Registered或珊瑚色的Unregistered按鈕,可點擊以註冊該板子(a8c98a4b9)。影格緩衝區檢視器現在可透過新的
FB_MESSAGE跳脫碼,顯示由執行中的指令碼傳來的置中文字訊息,而非影像(530048201)。新增 model-zoo 項目:ST FastDepth 深度估計模型(224/256/320)、一個 ST 頭部地標姿態模型、手掌偵測與手部地標的手部模型,以及一個 BlazeFace 正面臉部偵測模型(551668410、4d64556d4、fadd6c4ed、b8277bb88、a8c98a4b9)。
新增僅供工廠版本使用的自我測試指令碼(相機、IMU、ToF、WiFi、LAN),它會被隨附並在工廠版 IDE 啟動時自動開啟(0db7fbbb0);測試中的 RT1060 LAN 部分目前已停用(48370d022)。
其他變更與改進¶
原地儲存:儲存指令碼時不再退出相機磁碟機;IDE 會寫入
main.py並將磁碟區內容刷新至磁碟(在 Windows 上使用FlushFileBuffers、在 Linux 上使用syncfs、在 macOS 上使用sync_volume_np/F_FULLFSYNC),使裝置保持掛載狀態(1614c572f、6928b51ea、35ed53967)。在相機忙碌時點擊的工具列動作(停用影格緩衝區、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_lc、tiny_yolo_v2改為yolo_v2、yolov8n人物模型改為單純以大小命名的檔案),並移除了大型的tiny_yolo_v2int8 變體(34240cc3c)。序列時序現在透過韌體
settings.json的protocol覆寫鍵(overrideReadTimeout、overrideReadStallTimeout、overridePerCommandWait以及 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資料夾(439557829、ba3b01bfb)。藉由將感測器 ID
0x1311與0x1312(連同既有的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韌體與開機載入程式檔案已移除。