程式範例 8.1

範例類型:
使用ImageBuffer與ImageOp、SubtractAbs

配置

  • 機器人數量:1
  • 送料器數量:1
  • 送料器上的零件種類數:1
  • 放置位置數量:1
  • 攝影機的朝向:送料器#1上的朝下固定的攝影機

描述
即使開啟背光,托盤角落有時也會形成陰影。如果Blob物件的搜尋視窗包含托盤角落,且閾值未適當調整,陰影可能被誤認為零件。
零件Blob視覺序列用於檢測個別零件或零件總數。如果零件Blob視覺序列將陰影視為零件,系統可能對振動方法做出錯誤判斷,或由於系統認為托盤上有足夠零件,導致PF_Control回呼不開啟料斗。

以下是托盤角落的陰影可能被誤認為零件的例子。

將ImageOp視覺物件追加到PartBlob序列中可幫助解決此問題。使用ImageOp的SubtractAbs處理。SubtractAbs輸出2個影像緩衝區之間的差異。在此範例中,ImageBuffer1屬性為空送料器的影像檔案,ImageBuffer2屬性為攝影機拍攝的影像(值「0」表示攝影機的影像緩衝區)。影像緩衝區相減後,送料器的影像被有效移除。

步驟如下:

  1. 創建新的視覺序列「PartBlob」。

  2. 開啟送料器的背光,並移除送料器托盤上的所有零件。

  3. 點擊PartBlob中SaveImage屬性的[Click to save]按鈕。在此範例中,將影像檔案命名為「EmptyIF-240」。檔案的圖片如下所示。

  4. 從Vision Guide工具欄拖放ImageOp物件。

  5. 調整ImageOp大小,使其覆蓋整個攝影機視野。

  6. 將ImageOp的Operation屬性更改為「SubtractAbs」。

  7. 將ImageOp的ImageBuffer1屬性更改為「File」。

  8. 點擊ImageBufferFile按鈕,選擇之前保存為「EmptyIF-240」的檔案。

  9. 從Vision Guide工具欄追加Blob物件。調整Blob的搜尋視窗大小,使其大於送料器托盤。

  10. 將Blob的ThresholdColor屬性更改為「White」。

  11. 放置零件在1個托盤上,按下Vision Guide工具欄上的[直方圖]。

    拖動直方圖上的紅色ThresholdHigh條,直到零件適當二值化。根據需要點擊[更新],完成後點擊直方圖視窗的[OK]按鈕。
    如此一來,當PartBlob序列執行時,送料器的影像會完全被移除。零件顯示為完全白色背景上的黑色物體。送料器被有效地從PartBlob序列中遮罩。

  12. 在Epson RC+ 8.0功能表 - [工具] - [料件送料]視覺頁面中,將「PartBlob」設定為所需零件的零件Blob視覺序列。

無需特殊程式碼。

範例程式碼
Main.prg

Function main
    If Motor = Off Then
        Motor On
    EndIf
    Power Low
    Jump Park
    PF_Start 1
Fend

PartFeeding.prg

Function PF_Robot(PartID As Integer) As Integer
    Do While PF_QueLen(PartID) > 0
        P0 = PF_QueGet(PartID)
        Jump P0
        On Gripper; Wait 0.2
        Jump Place
        Off Gripper; Wait 0.2
        PF_QueRemove PartID
        If PF_IsStopRequested(PartID) = True Then
            Exit Do
        EndIf
    Loop
    PF_Robot = PF_CALLBACK_SUCCESS

Fend