AI 驅動文件
您想了解什麼?
在單個程式中使用多個檢視
本指南將向您展示如何設定單個程式,使其能夠檢查不同的零件、角度或檢視,而無需切換到其他程式。這樣做的原因有很多,但主要有兩種使用場景:
- 當兩次捕獲之間沒有足夠的時間切換程式時;
- 當需要對多個零件或零件的多個角度執行相同的檢查時(例如,檢查汽車車身上五個不同位置的螺柱有無)。在這種情況下,此方法可避免在不同程式中多次訓練同一個模型(螺柱有無)。
備註
以下示例是一個包含兩個檢視和一種檢查型別的簡單版本,但您可以將此技術用於數量不限的檢查型別和檢視。在此次檢查中,我們將檢查一個鑽頭盒兩側鑽頭的有無。一側底部有五個鑽頭,另一側頂部和底部共有八個鑽頭。我們將有 16 個鑽頭的一側稱為 A 面,有 5 個鑽頭的一側稱為 B 面。
![]() | ![]() |
|---|---|
| A 面(16 個鑽頭) | B 面(5 個鑽頭) |
建立並訓練新程式
由於兩側佈局不同,我們不為每一側建立單獨的程式,而是將兩側合併到一個程式中,這樣就無需兩次訓練相同的有無檢測模型。
-
建立一個新程式。本例中是一個分類程式,但同樣的原理也適用於分割。
-
為第一個檢視設定模板影象和對齊:
備註
在同一程式上檢查多個檢視時,對齊器不可用。模板影象和對齊器僅用於為檢查設定設定基準影象。

- 為 A 面繪製 ROI。命名時應便於識別它們屬於哪一面。在本例中,我們將 ROI 命名為 A1-A16。

- 返回到模板影象和對齊,將影象替換為 B 面,可以透過新的捕獲或從庫中選擇。

- 使用每個 ROI 旁邊的鎖定圖示,以避免移動 A 面的任何 ROI,然後為 B 面繪製並命名 ROI。

備註
對於更復雜的程式,根據需要檢查的檢視數量重複此過程。
- 使用 A 面和 B 面的影象對分類模型進行標註和訓練。捕獲和標註 A 面時,不要標註 B 面的 ROI,反之亦然。
![]() | ![]() |
|---|---|
| 標註 A 面(透過) | 標註 A 面(失敗) |
![]() | ![]() |
| 標註 B 面(透過) | 標註 B 面(失敗) |
配置 Node-RED 邏輯
-
導航至 IO模組(從程式編輯器中點選 Configure IO)以開啟您的 Node-RED 流程。
-
建立一個資料來源,告訴 OV10i 當前正在檢查哪一面。
備註
這可以是機器人位置資料、來自 PLC 的資訊,或您想使用的任何其他內容。在下面的示例中,我們將使用兩個 Inject nodes 來模擬此操作,一個傳送字串 "A",另一個傳送字串 "B"。
- 由於傳入的面資料可能是瞬時的,但我們希望檢查哪一面處於活動狀態,因此我們將使用 Flow variable 儲存狀態資料,該資料將持續保留直到接收到下一個面資訊。將您的資料來源連線到包含以下程式碼的函式模組:
flow.set('side',msg.payload);
return msg;

- 您可以透過開啟 context 資料側邊欄、傳送訊息,然後點選 Flow variable 窗格上的 refresh 來測試面資料是否已正確儲存。Flow 資料窗格僅在使用小的 refresh 按鈕手動重新整理時才會更新。

- 一旦面資料正確儲存在 Flow variable 中,新增一個連線到 All Block Outputs 的 switch node。此模組將根據 Flow variable 中哪一面處於活動狀態來路由帶有檢查資料的訊息。配置它檢視 Flow variable,如果 A 處於活動狀態,則將訊息路由到埠 1;如果 B 處於活動狀態,則路由到埠 2。

備註
對於更復雜的程式,可針對您想要檢查的不同檢視重複此過程。
- 將 switch 的每個輸出埠連線到 Classification Block Logic block,並根據您想為該面檢查的規則配置每一個。switch node 一次只會將訊息路由到其中一個節點。下圖顯示了 switch 的 B 面埠的配置。請注意,它沒有引用任何 A 面的 ROI,因此當檢查透過此節點路由時,邏輯將忽略該面的結果。

- 最後,將 logic blocks 連線到 Inspection Pass/Fail block。這使得結果可以顯示在 HMI 上,並傳遞給任何已連線的 PLC 或其他流程元件。

測試程式
現在 Node-RED 流程已配置完成,是時候對程式進行端到端測試了。
- 首先,我們將使用 Node-RED inject node 傳送 A 面命令。然後,我們將使用 HMI 檢查一個合格零件。請注意,儘管其中一個 B 面區域失敗,但整個檢查仍然透過。

- 現在,當我們移除 A 面的一個鑽頭並再次檢查時,我們獲得了期望的失敗結果。

- 繼續進行 B 面檢查,我們使用 Node-RED inject 傳送 B 訊號,並 refresh context 資料窗格中的 Flow variable 部分以確保其已被儲存。

- 現在,當我們翻轉到合格零件的 B 面時,我們看到儘管 A 面的所有區域都失敗,但檢查仍然透過。

恭喜!您現在已經瞭解如何在零件的多個檢視中使用同一個程式和模型。這將允許以高速進行復雜檢查,並與機器人實現緊密整合。這也將為您節省大量時間,避免訓練多個執行相同檢查但僅針對不同檢視的模型。





