传送带跟踪动作(视觉跟踪)

接下来,创建使用视觉的传送带跟踪动作。

机器人通过Pick & Place将视觉检测到的工件(零件)从传送带移动到工作台。

步骤概要

  1. 创建虚拟控制器并设置机器人
  2. 创建项目
  3. 添加相当于工件(零件)的对象
  4. 添加并设置相当于工作台的对象
  5. 添加并设置传送带对象
  6. 执行并确认传送带对象的供应设置
  7. 添加并设置虚拟相机
  8. 添加传送带跟踪设置
  9. 执行视觉校准
  10. 创建视觉序列
  11. 执行并设置传送带校准
  12. 确认工件(零件)的检测
  13. 创建并执行程序

步骤详情

  1. 准备

    1. 新建虚拟控制器连接。
      在系统设置中,将机器人1设置为"GX8-C652S"(名称为robot1)。

    2. 创建项目"ConvTrack_Vision"。

    3. 添加相当于由传送带搬送的工件(零件)的Box对象(SBox_1),并进行如下设置。

      • 更改为适当的颜色
      • 位置设置(Position X, Y, Z): 550, 550, 25(移动到不妨碍作业的位置)
    4. 添加作为工件(零件)放置位置的工作台(Box对象),并进行如下设置。

      • 对象名称(Name): Table
      • 尺寸设置(Half size X, Y, Z): 40, 300, 50
      • 位置设置(Position X, Y, Z): -550, 0, 50
    5. 添加传送带对象,并进行如下设置。

      • 位置设置(Position X, Y, Z): -400, 0, 100
      • 姿态设置(Rotation Z): 90
      • 尺寸设置(Half size Height, Width): 500, 100
    6. 进行工件(零件)的供应设置。

      • 单击上一步添加的传送带对象的"Operation" - "Supply"属性。
      • 在显示的供应设置对话框中,勾选[供应启用]。
      • 在[基本对象]中设置上述步骤中添加的"SBox_1"。
      • 将[间隔]的[Min]和[Max]分别设置为"3.000"。
      • 将[偏移]的[Z]设置为"26.000"。

    7. 添加相机设置。

      1. 在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[视觉]中添加虚拟相机。

      2. 勾选[虚拟],选择"acA640-120gm"作为型号,然后单击[应用]按钮。

      3. 对相机对象进行如下设置,并将其配置在传送带对象上方。

        • 位置设置(Position X, Y, Z): -400, -400, 700
        • 姿态设置(Rotation X): 180

    8. 添加传送带跟踪设置,并进行如下设置。

      1. 在Epson RC+ 8.0菜单 - [设置] - [系统配置]的[控制器] - [传送带编码器]中,确认已添加编码器。

      2. 在Epson RC+ 8.0菜单 - [工具] - [传送带跟踪]中,添加传送带跟踪设置。

      3. 选择[类型]中的[视觉]。

      4. 对传送带对象进行如下设置。

        • 将"Operation"属性设置为"LinkTracking"
        • 将"Conveyor ID"属性设置为"1"

    9. 执行视觉校准。
      在此创建并执行名为"ConveyorCalib"的校准。
      完成视觉校准后,将所使用的校准用CAD数据移动到不妨碍作业的位置。

      有关相机校准,请参阅以下手册。

      "Epson RC+ 选件 Vision Guide Software - 视觉校准 - 校准程序 - 校准程序: 独立相机"

    10. 创建视觉序列,并按照以下步骤确认是否能够正确检测工件(零件)。

      1. 在传送带操作面板中运行传送带对象,搬送1个作为工件的Box。

      2. 在相机视野范围内的位置停止传送带对象。

      3. 创建用于识别该工件的序列"BoxDetection"。

      4. 执行"BoxDetection"序列,确认能够正确识别工件(零件)。

      5. 在"Calibration"属性中设置上述步骤中创建的校准"ConveyorCalib"。

      6. 确认能够正常检测工件(零件)后,暂时删除传送带上的工件(零件)。

        • 右键单击传送带对象,然后选择[删除所有子项]

    11. 执行传送带校准。
      有关模拟器上的传送带校准,请参阅以下内容。

      机器人对象属性 - "传送带校准"

      按照以下步骤执行简易校准。

      1. 在布局树中,展开机器人节点下的"Conveyor Tracking"节点。

      2. 右键单击"Conveyor 1",然后单击[使用模拟器校准]。

      3. 将"Conveyor Origin"、"Upstream Limit"、"Downstream Limit"属性各自的"Visible"属性设置为"True"。

      4. 确认传送带原点、上游限位和下游限位的显示。

    12. 进行防止重复注册设置。
      打开Epson RC+ 8.0菜单 - [工具] - [传送带跟踪],将防止工件重复注册的距离设置为"200mm"。

  2. 创建程序

    软件触发

    创建以下程序并保存为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
    

    硬件触发

    也可以使用相机对象的虚拟硬件触发器进行传送带跟踪。
    按照以下步骤进行硬件触发器设置。

    1. 将相机对象的"Trigger IO"属性设置为"10"。

    2. 将传送带对象的"Operation" - "Trigger IO"属性设置为与上一步设置的值相同的"10"。

    3. 将Vision Guide序列"BoxDetection"的"RuntimeAcquire"属性值设置为"Strobed"。

    4. 将上述创建的程序中的函数"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
      
  3. 执行程序

    1. 单击工具栏的[打开运行窗口]按钮,显示[运行]窗口。

    2. 选择函数“main”,单击[开始]按钮。