YASKAWA (安川)抓取样例程序¶
本章将介绍用于完成简单识别并移动的机器人样例程序。
前提¶
已参照 YASKAWA (安川)烧录流程说明 完成机器人程序烧录,并与 Mech-Center 建立连接。
已参照 YASKAWA (安川)标定操作流程 完成外参标定。
Mech-Vision 和 Mech-Viz 工程已搭建,并已勾选 自动加载当前工程 。
在 Mech-Center 的部署设置中,同步 Mech-Vision 自动加载的工程列表,并调整工程顺序。
机器人工具中心点已定义好。
调低机器人运行速度,以避免调试过程中发生碰撞。
使用 Mech-Vision 进行视觉识别并获取结果¶
'*****************************
'FUNCTION:simple pick and place
'with Mech-Vision
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
CNVRT PX070 PX070 RF TL#(1)
CNVRT PX071 PX071 RF TL#(1)
CNVRT PX072 PX072 RF TL#(1)
CNVRT PX073 PX073 RF TL#(1)
SUB P070 P070
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move robot home position
MOVJ C00000 VJ=1.00
'camera capture position
MOVJ C00001 VJ=1.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
'set vision recipe
'MM_SET_MODEL("1,1")
'Run vision project
CALL JOB:MM_START_VIS ARGF"1;2;2"
TIMER T=1.00
'get result from Vis
CALL JOB:MM_GET_VISDATA ARGF"1;50;51;52"
TIMER T=0.20
PAUSE IF I052<>1100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
PAUSE IF I061<>1
'set -200mm to Z
SETE P070 (3) -200000
MULMAT P072 P071 P070
'set -300mm to Z
SETE P070 (3) -300000
MULMAT P073 P071 P070
'way point
MOVJ C00002 VJ=1.00
MOVL P072 V=80.0 PL=0
MOVL P071 V=80.0 PL=0
'enable girpper
DOUT OT#(1) ON
MOVL P073 V=80.0 PL=0
MOVJ C00003 VJ=1.00
'drop point
MOVJ C00004 VJ=1.00 PL=0
'release gripper
DOUT OT#(1) OFF
'way point
MOVJ C00005 VJ=1.00
'move robot home position
MOVJ C00006 VJ=1.00
程序逻辑解读¶
完成变量初始化后,移动机器人至 Home 点。
移动到相机拍照位置。
调用 MM_Init_Skt 对通讯进行初始化设置。
如需设置 Mech-Vision 工程配方,可以在这里添加 MM_Switch_Model 设置工程配方。
MM_Start_Vis 触发 Mech-Vision 工程运行。
等待 1 秒。Eye To Hand 模式下,若在 MM_Start_Vis 和 MM_Get_VisData 之间有移动步骤(MoveL 或 MoveJ),则不需要在此设置等待;Eye In Hand 模式下则必须等待 1 秒,在相机拍照完成之前保持相机静止。
获取 Mech-Vision 工程计算出的位姿。
判断获取位姿的状态码是否正常,若状态码返回异常,机器人程序将暂停或停止。
移动到抓取点。
移动到抓取点和放置点之间的安全区域。
移动到固定的放置点。
用户自定义部分¶
定义工具中心点 TCP
TL#(1),不能使用 0 号工具,本例程使用 1 号工具。用户需将调用坐标系改为存储了实际 TCP 值的坐标系。
示教拍照点
‘camera capture position,MOVJ C00001 VJ=1.00 PL=0,用户需将拍照点位置通过示教的方式记录在当前位置。
示教过渡点
‘way point,MOVJ C00002 VJ=1.00, 用户需将过渡点位置通过示教的方式记录在当前位置,同时用户可添加一个或几个中间点,使机器人从抓取点移动至放置点过程中,无碰撞。
示教放置点
‘drop point,MOVJ C00004 VJ=1.00 PL=0,用户需将放置点位置通过示教的方式记录在当前位置。
定义抓取前后,放置前后的接近距离
MULMAT P072 P071 P070
通过 MULMAT 指令,可以把 P071 中坐标值参照 P071 指定的工具坐标,根据P070中的位姿数据进行转换,生成新的位姿数据放在 P072 中。
接近抓取点
‘set -200mm to Z
SETE P070 (3) -200000
MULMAT P072 P071 P070
移动到抓取点上方 200mm 处,用户需要修改偏移量,保证接近过程无碰撞。
离开抓取点
‘set -300mm to Z
SETE P070 (3) -300000
MULMAT P073 P071 P070
从抓取点沿工具 Z 轴方向向上移动 300mm ,用户需要修改偏移量,保证离开过程无碰撞。
定义夹具动作
在移动到抓取点和放置点时,需添加夹具控制逻辑用来开关夹具。
使用 Mech-Viz 规划路径¶
'*****************************
'FUNCTION:simple pick and place
'with Mech-Viz
'mechmind, 2022-5-27
'*****************************
'clear I50 to I69
CLEAR I050 20
'Initialize p variables
CNVRT PX071 PX071 RF TL#(1)
CNVRT PX072 PX072 RF TL#(1)
CNVRT PX073 PX073 RF TL#(1)
SUB P071 P071
SUB P072 P072
SUB P073 P073
'move robot home position
MOVJ C00007 VJ=1.00
'camera capture position
MOVJ C00008 VJ=1.00 PL=0
'set ip address of IPC
CALL JOB:MM_INIT_SOCKET ARGF"192.168.170.22;50000;1"
TIMER T=0.20
'set vision recipe
CALL JOB:MM_SET_MODEL ARGF"1;1"
TIMER T=0.20
'Run Viz project
CALL JOB:MM_START_VIZ ARGF"1"
TIMER T=0.20
CALL JOB:MM_SET_BRANCH ARGF"1;1"
'get result from Viz
TIMER T=1.00
CALL JOB:MM_GET_VIZDATA ARGF"2;50;51;52;53"
TIMER T=0.20
PAUSE IF I053<>2100
'set the first pos to P071;
'set lables to I61;
'set speed to I62;
CALL JOB:MM_GET_POSE ARGF"1;71;61;62"
PAUSE IF I061<>1
'set the third pos to P072;
'set lables to I63;
'set speed to I64;
CALL JOB:MM_GET_POSE ARGF"2;72;63;64"
PAUSE IF I063<>1
'set the third pos to P073;
'set lables to I65;
'set speed to I66;
CALL JOB:MM_GET_POSE ARGF"3;73;65;66"
PAUSE IF I065<>1
'way point
MOVJ C00009 VJ=1.00
MOVL P071 V=80.0 PL=0
MOVL P072 V=80.0 PL=0
'enable girpper
DOUT OT#(1) ON
MOVL P073 V=80.0 PL=0
'way point
MOVJ C00010 VJ=1.00
'drop point
MOVJ C00011 VJ=1.00 PL=0
'release gripper
DOUT OT#(1) OFF
'move robot home position
MOVJ C00012 VJ=1.00
程序逻辑解读¶
此样例使用 Mech-Viz 进行视觉引导抓取,然后放置到固定的放置点。
移动机器人至 Home 点。
移动到相机拍照位置。
调用 MM_Init_Socket 对通讯进行初始化设置。
如需设置 Mech-Vision 工程配方,可以在这里调用 MM_Switch_Model。
触发 Mech-Viz 工程运行。
获取 Mech-Viz 工程规划的移动路径。
判断状态码是否正常,若状态码返回异常,机器人程序将暂停或停止。
使用循环将获取的位姿保存到变量。
使用循环使机器人沿 Mech-Viz 规划的路径移动,完成抓取并离开抓取点。
移动到抓取点和放置点之间的中间区域。
移动到放置点进行放置。
用户自定义部分¶
定义工具中心点 TCP
TL#(1),不能使用 0 号工具,本例程使用 1 号工具。用户需将调用坐标系改为存储了实际 TCP 值的坐标系。
示教拍照点
‘camera capture position,MOVJ C00008 VJ=1.00 PL=0,用户需将拍照点位置通过示教的方式记录在当前位置。
示教过渡点
‘way point,MOVJ C00009 VJ=1.00,用户需将过渡点位置通过示教的方式记录在当前位置,用户可添加一个或几个中间点,使机器人从抓取点移动至放置点过程中,无碰撞。
示教放置点
‘drop point,MOVJ C00011 VJ=1.00 PL=0,用户需将放置点位置通过示教的方式记录在当前位置。
定义夹具动作
在移动到抓取点和放置点时,需添加夹具控制逻辑用来开关夹具。