实现抓放

在本教程中,你将先了解本案例实现的抓取和放置流程、然后了解如何完成抓取和放置流程配置。

抓取和放置流程

本案例实现的抓取和放置逻辑流程如下图所示。

picking workflow
本案例中,机器人从固定位置(如定位台)抓取螺栓,然后使用Mech-Vision输出的工件抓取点作为装配的目标位。

通信方案说明

在上述流程中,“机器人触发相机拍照并获取抓取点”需要机器人与视觉系统使用标准接口通信方式,并且标准接口与视觉系统的配合方式为“使用Mech-Vision获取视觉结果”。

使用该配合方式时,你需要编写机器人程序。请参考“抓取和放置流程配置”完成机器人程序的编写。

抓取和放置流程配置

要实现抓取和放置逻辑流程,需要依次完成如下配置:

picking workflow config

配置机器人参数和编写机器人程序

安川标准接口样例程序MM_S1_Vis_Basic可以基本满足本案例所需要的功能。你可以在样例程序基础上进行修改。关于样例程序MM_S1_Vis_Basic的详细解释,请参考样例程序解读

基于样例程序,请在机器人端完成如下操作:

  1. 示教Home点(初始位)。

    将机器人移动到示教的初始位。初始位应远离待抓取物体及周边设备,且不遮挡相机视野。完成后,记录此时的机器人位姿到变量C00000。

  2. 指定工控机IP地址。将MM_Init_Socket指令对应的IP地址和端口更新为工控机IP地址和端口。

    修改前 修改后(示例)
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
    'initialize communication
    'parameters (initialization is
    'required only once)
    CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
  3. 设置DO端口信号,以张开夹具。注意,DO指令应根据现场实际使用的DO端口号设置。

    'open gripper
    DOUT OT#(14) ON
    DOUT OT#(15) OFF
  4. 示教固定的抓取点。

    将机器人移动到示教的抓取点。该位置也是相机拍照位。在此位置,机器人手臂应不遮挡相机视野。完成后,记录此时的机器人位姿到变量C00001。

    修改前 修改后(示例)
    'move to image-capturing position
    MOVJ C00001 VJ=50.00 PL=0
    'move to fixed position of picking
    MOVJ C00001 VJ=20.00 PL=0
  5. 设置DO端口信号,以闭合夹具抓取固定位置上的螺栓。注意,DO指令应根据现场实际使用的DO端口号设置。

    'close gripper
    DOUT OT#(14) OFF
    DOUT OT#(15) ON
  6. 示教装配过程的过渡点。

    修改前 修改后(示例)
    'move to intermediate waypoint of
    'picking
    MOVJ C00002 VJ=50.00
    'move to intermediate waypoint of
    'assembly
    MOVJ C00002 VJ=50.00
  7. 修改装配相关指令的注释。

    修改前 修改后(示例)
    'move to approach waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to picking waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'picking
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to approach waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
    'move to assembly waypoint
    MOVL P071 V=50.0 PL=0
    
    ...
    
    'move to departure waypoint of
    'assembly
    SFTON P070
    MOVL P071 V=166.6 PL=0
    SFTOF
  8. 设置DO端口信号,以张开夹具放置螺栓到销孔。注意,DO指令应根据现场实际使用的DO端口号设置。

    修改前 修改后(示例)
    'add object grasping logic here,
    'such as DOUT OT#(1) ON
    PAUSE
    'add object releasing logic here,
    'such as DOUT OT#(1) ON
    DOUT OT#(15) OFF
    DOUT OT#(14) ON
    PAUSE
  9. 删除示例程序中与放置相关的代码。

    'move to intermediate waypoint of
    'placing
    MOVJ C00003 VJ=50.00
    'move to approach waypoint of
    'placing
    MOVL C00004 V=166.6 PL=0
    'move to placing waypoint
    MOVL C00005 V=50.0 PL=0
    'add object releasing logic here,
    'such as DOUT OT#(1) OFF
    PAUSE
    'move to departure waypoint of
    'placing
    MOVL C00006 V=166.6 PL=0
  10. 示教Home点。

    将机器人移动到示教的Home点,并记录机器人位姿到C00003。

单步运行测试机器人抓放效果

执行如下步骤测试机器人抓放效果:

  1. 在示教器上旋转模式钥匙到PLAY进入再现模式。

    run program 1
  2. 按下示教器伺服准备键后,然后按蓝色运行按钮。。

    run program 2
    run program 3
  3. 机器人将自动执行机器人程序,完成一个工件的抓取和放置。

    请密切关注机器人移动轨迹,紧急情况及时按下急停键。

如果机器人可以成功抓取和放置工件,则说明机器人程序符合要求。

插入循环语句实现循环抓放

在测试机器人可以成功完成单次抓取和放置,可以在程序中插入循环语句,实现机器人循环抓放。

加入如下循环语句:

LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0

   ...

   MOVJ C00003 VJ=50.00
END LOOP

参考:修改后的样例程序

最终修改后的样例程序如下:

NOP
'--------------------------------
'FUNCTION: trigger Mech-Vision
'project and get vision result
'Mech-Mind, 2023-12-25
'--------------------------------
'clear I50 to I69
CLEAR I050 20
'initialize p variables
SUB P070 P070
SUB P071 P071
'set 100mm to z of P070
SETE P070 (3) 100000
'move to robot home position
MOVJ C00000 VJ=50.00
'initialize communication
'parameters (initialization is
'required only once)
CALL JOB:MM_INIT_SOCKET ARGF"192.168.10.40;50000;1"
'open gripper
DOUT OT#(14) ON
DOUT OT#(15) OFF
LOOP
   'move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00’move to fixed position of picking
   MOVJ C00001 VJ=20.00 PL=0
   'close gripper
   DOUT OT#(14) OFF
   DOUT OT#(15) ON
   'open socket connection
   CALL JOB:MM_OPEN_SOCKET
   MOVL P110 V=25.0
   'trigger NO.1 Mech-Vision project
   CALL JOB:MM_START_VIS ARGF"1;0;2;30"
   'get vision result from NO.1
   'Mech-Vision project
   CALL JOB:MM_GET_VISDATA ARGF"1;51;52"
   'check whether vision result has
   'been got from Mech-Vision
   'successfully
   IFTHENEXP I052<>1100
      'add error handling logic here
      'according to different error
      'codes
      'e.g.: I052=1003 means no point
      'cloud in ROI
      'e.g.: I052=1002 means no
      'vision result
      PAUSE
   ENDIF
   'close socket connection
   CALL JOB:MM_CLOSE_SOCKET
   'save first vision point data to
   'local variables
   CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
   'move to intermediate waypoint of
   'assembly
   MOVJ C00002 VJ=50.00
   'move to approach waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move to assembly waypoint
   MOVL P071 V=50.0 PL=0
   'add object releasing logic here,
   'such as DOUT OT#(1) ON
   DOUT OT#(15) OFF
   DOUT OT#(14) ON
   PAUSE
   'move to departure waypoint of
   'assembly
   SFTON P070
   MOVL P071 V=166.6 PL=0
   SFTOF
   'move back to robot home position
   MOVJ C00003 VJ=50.00
END LOOP
END

至此,你已完成了3D视觉引导机器人定位装配应用的部署。

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。