传送带跟踪动作(视觉跟踪)
接下来,创建使用视觉的传送带跟踪动作。
机器人通过Pick & Place将视觉检测到的工件(零件)从传送带移动到工作台。
步骤概要
- 创建虚拟控制器并设置机器人
- 创建项目
- 添加相当于工件(零件)的对象
- 添加并设置相当于工作台的对象
- 添加并设置传送带对象
- 执行并确认传送带对象的供应设置
- 添加并设置虚拟相机
- 添加传送带跟踪设置
- 执行视觉校准
- 创建视觉序列
- 执行并设置传送带校准
- 确认工件(零件)的检测
- 创建并执行程序
步骤详情
准备
新建虚拟控制器连接。
在系统设置中,将机器人1设置为"GX8-C652S"(名称为robot1)。创建项目"ConvTrack_Vision"。
添加相当于由传送带搬送的工件(零件)的Box对象(SBox_1),并进行如下设置。
- 更改为适当的颜色
- 位置设置(Position X, Y, Z): 550, 550, 25(移动到不妨碍作业的位置)
添加作为工件(零件)放置位置的工作台(Box对象),并进行如下设置。
- 对象名称(Name): Table
- 尺寸设置(Half size X, Y, Z): 40, 300, 50
- 位置设置(Position X, Y, Z): -550, 0, 50
添加传送带对象,并进行如下设置。
- 位置设置(Position X, Y, Z): -400, 0, 100
- 姿态设置(Rotation Z): 90
- 尺寸设置(Half size Height, Width): 500, 100
进行工件(零件)的供应设置。
- 单击上一步添加的传送带对象的"Operation" - "Supply"属性。
- 在显示的供应设置对话框中,勾选[供应启用]。
- 在[基本对象]中设置上述步骤中添加的"SBox_1"。
- 将[间隔]的[Min]和[Max]分别设置为"3.000"。
- 将[偏移]的[Z]设置为"26.000"。
添加相机设置。
在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[视觉]中添加虚拟相机。
勾选[虚拟],选择"acA640-120gm"作为型号,然后单击[应用]按钮。
对相机对象进行如下设置,并将其配置在传送带对象上方。
- 位置设置(Position X, Y, Z): -400, -400, 700
- 姿态设置(Rotation X): 180
添加传送带跟踪设置,并进行如下设置。
在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[控制器] - [传送带编码器]中,确认已添加编码器。
在Epson RC+ 8.0菜单 - [工具] - [传送带跟踪]中,添加传送带跟踪设置。
选择[类型]中的[视觉]。
对传送带对象进行如下设置。
- 将"Operation"属性设置为"LinkTracking"
- 将"Conveyor ID"属性设置为"1"
执行视觉校准。
在此创建并执行名为"ConveyorCalib"的校准。
完成视觉校准后,将所使用的校准用CAD数据移动到不妨碍作业的位置。有关相机校准,请参阅以下手册。
"Epson RC+ 选件 Vision Guide Software - 视觉校准 - 校准程序 - 校准程序: 独立相机"
创建视觉序列,并按照以下步骤确认是否能够正确检测工件(零件)。
在传送带操作面板中运行传送带对象,搬送1个作为工件的Box。
在相机视野范围内的位置停止传送带对象。
创建用于识别该工件的序列"BoxDetection"。
执行"BoxDetection"序列,确认能够正确识别工件(零件)。
在"Calibration"属性中设置上述步骤中创建的校准"ConveyorCalib"。
确认能够正常检测工件(零件)后,暂时删除传送带上的工件(零件)。
右键单击传送带对象,然后选择[删除所有子项]
执行传送带校准。
有关模拟器上的传送带校准,请参阅以下内容。机器人对象属性 - "传送带校准"
按照以下步骤执行简易校准。
在布局树中,展开机器人节点下的"Conveyor Tracking"节点。
右键单击"Conveyor 1",然后单击[使用模拟器校准]。
将"Conveyor Origin"、"Upstream Limit"、"Downstream Limit"属性各自的"Visible"属性设置为"True"。
确认传送带原点、上游限位和下游限位的显示。
进行防止重复注册设置。
打开Epson RC+ 8.0菜单 - [工具] - [传送带跟踪],将防止工件重复注册的距离设置为"200mm"。
创建程序
软件触发
创建以下程序并保存为Main.prg。
这是使用相机软件触发器进行传送带跟踪动作的程序。Function main SimSet Conveyor_1.ClearSupply Motor On Power High Speed 100 Accel 100, 100 Cnv_Mode 1, 1 Cnv_Accel 1, 2000 Cnv_QueRemove 1, All Integer i String name$ Xqt VisionDetection TmReset 0 SimSet Conveyor_1.Start For i = 1 To 10 Wait Cnv_QueLen(1, CNV_QUELEN_PICKUPAREA) > 0 Wait 0.5 Jump Cnv_QueGet(1, 0) +Z(51) SimGet robot1.NearestObjToTool(0), name$ SimSet robot1.Pick, name$ Jump Here :X(-550) :Y(i * 60 - 320) SimSet robot1.Place, name$, Table Cnv_QueRemove 1, 0 Next SimSet Conveyor_1.Stop Quit VisionDetection Print "Finished, ", Tmr(0), "[s]" Fend Function VisionDetection Integer numFound, i, state Real x, y, u Boolean found Off 10 Wait 0.5 Do VRun BoxDetection Cnv_Trigger (1) VGet BoxDetection.Geom01.NumberFound, numFound Print "Num Found ", numFound For i = 1 To numFound VGet BoxDetection.Geom01.CameraXYU(i), found, x, y, u Cnv_QueAdd 1, Cnv_Point(1, x, y) Next Wait 1 Loop Fend硬件触发
也可以使用相机对象的虚拟硬件触发器进行传送带跟踪。
按照以下步骤进行硬件触发器设置。将相机对象的"Trigger IO"属性设置为"10"。
将传送带对象的"Operation" - "Trigger IO"属性设置为与上一步设置的值相同的"10"。
将Vision Guide序列"BoxDetection"的"RuntimeAcquire"属性值设置为"Strobed"。
将上述创建的程序中的函数"VisionDetection"修改如下。
Function VisionDetection Integer numFound, i, state Real x, y, u Boolean found Off 10 Wait 0.5 Do VRun BoxDetection On 10 Do VGet BoxDetection.AcquireState, state Loop Until state = 3 VGet BoxDetection.Geom01.NumberFound, numFound Print "Num Found ", numFound For i = 1 To numFound VGet BoxDetection.Geom01.CameraXYU(i), found, x, y, u Cnv_QueAdd 1, Cnv_Point(1, x, y) Next Off 10 Wait 0.5 Loop Fend
执行程序
单击工具栏的[打开运行窗口]按钮,显示[运行]窗口。
选择函数“main”,单击[开始]按钮。