程式範例 8.1
範例類型:
使用ImageBuffer與ImageOp、SubtractAbs
配置
- 機器人數量:1
- 送料器數量:1
- 送料器上的零件種類數:1
- 放置位置數量:1
- 攝影機的朝向:送料器#1上的朝下固定的攝影機
描述
即使開啟背光,托盤角落有時也會形成陰影。如果Blob物件的搜尋視窗包含托盤角落,且閾值未適當調整,陰影可能被誤認為零件。
零件Blob視覺序列用於檢測個別零件或零件總數。如果零件Blob視覺序列將陰影視為零件,系統可能對振動方法做出錯誤判斷,或由於系統認為托盤上有足夠零件,導致PF_Control回呼不開啟料斗。
以下是托盤角落的陰影可能被誤認為零件的例子。
將ImageOp視覺物件追加到PartBlob序列中可幫助解決此問題。使用ImageOp的SubtractAbs處理。SubtractAbs輸出2個影像緩衝區之間的差異。在此範例中,ImageBuffer1屬性為空送料器的影像檔案,ImageBuffer2屬性為攝影機拍攝的影像(值「0」表示攝影機的影像緩衝區)。影像緩衝區相減後,送料器的影像被有效移除。
步驟如下:
創建新的視覺序列「PartBlob」。
開啟送料器的背光,並移除送料器托盤上的所有零件。
點擊PartBlob中SaveImage屬性的[Click to save]按鈕。在此範例中,將影像檔案命名為「EmptyIF-240」。檔案的圖片如下所示。
從Vision Guide工具欄拖放ImageOp物件。
調整ImageOp大小,使其覆蓋整個攝影機視野。
將ImageOp的Operation屬性更改為「SubtractAbs」。
將ImageOp的ImageBuffer1屬性更改為「File」。
點擊ImageBufferFile按鈕,選擇之前保存為「EmptyIF-240」的檔案。
從Vision Guide工具欄追加Blob物件。調整Blob的搜尋視窗大小,使其大於送料器托盤。
將Blob的ThresholdColor屬性更改為「White」。
放置零件在1個托盤上,按下Vision Guide工具欄上的[直方圖]。
拖動直方圖上的紅色ThresholdHigh條,直到零件適當二值化。根據需要點擊[更新],完成後點擊直方圖視窗的[OK]按鈕。
如此一來,當PartBlob序列執行時,送料器的影像會完全被移除。零件顯示為完全白色背景上的黑色物體。送料器被有效地從PartBlob序列中遮罩。
在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