跳到主要內容

AI 驅動文件

您想了解什麼?

同一配方中的多檢視

本指南演示如何在不切換到其他配方的情況下,設定一個配方以檢查不同部件、角度或檢視。

有多種原因需要這樣做,但主要有兩種使用場景:

  • 捕獲之間的時間不足以切換配方時,
  • 當對同一部件的多個部位或角度執行相同的檢測時(例如,在車身的五個不同位置上檢測螺柱的存在/不存在)。在這種情況下,該方法可避免在不同配方中對同一模型(螺柱存在/不存在)重複訓練多次。
備註

以下示例是一個簡單版本,只有兩個檢視和一種檢測型別,但你可以將此同樣的技術應用於無限數量的檢測型別和檢視。在此檢測中,我們將檢查鑽頭盒兩側位的存在/不存在。 一側底部有五個位,另一側頂部和底部各有八個位。我們將具有 16 位的一側稱為側 A,具有五位的一側稱為側 B。

側 A側 B
側 A (16 位)側 B (5 位)

建立並訓練一個新配方

與每面各自一個配方不同,由於佈局不同,我們將把兩側合併到一個配方中,這樣就不需要對同一存在/不存在模型進行兩次訓練。

  1. 建立一個新配方。在這種情況下,這是一個分類配方,但同樣的原理也可用於 segmentation(分割)。

  2. 為第一檢視設定模板影象和對齊:

備註

在同一配方上檢查多檢視時,Aligner(對齊器)不可用。模板影象和對齊器僅用於為 Inspect 設定基準影象。

模板影象與對齊 - 側 A

  1. 為側 A 繪製 ROI。給它們命名,以便識別所屬側。在本例中,我們將 ROI 命名為 A1-A16。

ROI - 側 A

  1. 返回模板影象與對齊,使用側 B 的影象替換當前影象,可以來自新捕獲或庫中。

模板影象與對齊 - 側 B

  1. 使用每個 ROI 旁邊的鎖定圖示,避免移動側 A 的 ROI;然後為側 B 繪製並命名 ROI。

ROI - 側 B

備註

對於更復雜的配方,請按需重複此過程,以檢測更多不同的檢視。

  1. 使用來自側 A 和側 B 的影象對分類模型進行標註與訓練。在捕獲並標註側 A 時,請不要標註側 B 的 ROI,反之亦然。
側 A 透過標註側 A 失敗標註
為側 A 標註(透過)為側 A 標註(失敗)
側 B 透過標註側 B 失敗標註
為側 B 標註(透過)為側 B 標註(失敗)

配置 Node-RED 邏輯

  1. 轉到 IO Block(來自 Recipe Editor 的 Configure IO)以開啟您的 Node-RED flow。

  2. 建立一個源,用於告訴 OV80i 當前正在檢測哪一側。

備註

這可以是機器人位置資料、來自 PLC 的資訊,或你想使用的任何其他資訊。在下方示例中,我們將使用兩個 Inject nodes 來模擬:一個傳送字串 "A",另一個傳送字串 "B"。

  1. 由於輸入的側邊資料可能是瞬時的,但我們需要檢查哪個側邊處於活動狀態,我們將使用一個 Flow variable 來儲存狀態資料,該資料將持續直到接收到下一條側邊資訊。將資料來源連線到包含以下程式碼的函式塊:
flow.set('side',msg.payload);
return msg;

Edit function node

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

Context menu

  1. 一旦在 Flow variable 中正確儲存了側邊資料,新增一個連線到 All Block Outputsswitch node。這將是根據 Flow variable 中活動的側邊來路由帶有檢測資料的訊息的節點。將其配置為讀取 Flow variable,並在 A 活動時將訊息路由到埠 1,B 活動時路由到埠 2。

Edit switch node

備註

對於更復雜的配方,可以對你希望檢測的不同檢視重複此過程,直到覆蓋所需的檢視數量。

  1. switch 的每個輸出埠連線到一個 Classification Block Logic block,並根據你想要在該側檢測的規則進行配置。開關節點一次只會將訊息路由到其中一個節點。下圖顯示了 switch 的 B-side 埠的配置。請注意,它沒有引用 A ROI 的任一區域,因此當檢測透過此節點路由時,邏輯將忽略該側的結果。

Edit Classification Block Logic node

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

Node-RED Flow

測試配方

現在 Node-RED flow 已配置完成,是時候對配方進行端到端測試了。

  1. 首先,我們將使用 Node-RED 的 inject 節點傳送 A-side 指令。然後使用 HMI 對一個良品進行檢測。請注意,儘管 B-side 區域中的一個區域失敗,整個檢測仍透過。

HMI side A, pass

  1. 現在,當我們在 A-side 移除鑽頭並再次檢測時,我們得到我們想要的失敗結果。

HMI side A, fail

  1. 接著切換到 B-side 的良品,我們使用 Node-RED 的 inject 傳送 B 訊號,並在 context 資料窗格的 Flow variable 區段執行 refresh,以確保它已儲存。

Node-RED Flow B

  1. 現在切換到良品的 B-side 時,儘管 A-side 區域全部失敗,檢測仍然透過。

HMI side B, pass

恭喜!您現在知道如何在同一個配方和模型下跨多個檢視對部件進行檢測。這將實現高速度下的複雜檢測,並與機器人實現緊密整合。它也將大幅節省時間,避免為不同檢視重複訓練多個執行同一檢測的模型。