样例程序1:MM_S1_Vis_Basic
程序解读
以下为MM_S1_Vis_Basic样例程序的代码及相关解释说明。
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.170.22;50000;1"
'move to image-capturing position
MOVJ C00001 VJ=50.00 PL=0
'open socket connection
CALL JOB:MM_OPEN_SOCKET
'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
'picking
MOVJ C00002 VJ=50.00
'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
'add object grasping logic here,
'such as DOUT OT#(1) ON
PAUSE
'move to departure waypoint of
'picking
SFTON P070
MOVL P071 V=166.6 PL=0
SFTOF
'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
'move back to robot home position
MOVJ C00007 VJ=50.00
END
上述样例程序代码对应的流程如下图所示。
下表为上述程序的逻辑解读。用户单击指令名称的超链接便可查看该指令的详细说明。
流程 | 代码及说明 | ||
---|---|---|---|
初始化变量 |
因此,整条指令表示将整型变量I050至I069(共20个)清除为0。
因此,上述两条指令表示将位置型变量P070和P071设为0。
因此,上述指令表示将P070的Z轴数据设置为100000(单位为微米,相当于100毫米)。 |
||
移动到Home点 |
因此,整条指令表示机器人以关节角移动方式移动到示教的Home点。 |
||
初始化通信参数 |
机器人通过MM_INIT_SOCKET指令指定通信对象(工控机)的IP地址(192.168.170.22)、端口号(50000)以及超时等待时间(1分钟)。
|
||
移动到拍照点 |
因此,整条指令表示机器人以关节角移动方式移动到示教的拍照点。 |
||
建立通信 |
机器人通过MM_OPEN_SOCKET指令与视觉系统之间建立TCP协议通信连接。 |
||
触发运行Mech-Vision工程 |
因此,整条指令表示机器人触发视觉系统运行编号为1的Mech-Vision工程,且期望Mech-Vision工程返回所有视觉点。 |
||
获取视觉结果 |
因此,整条指令表示机器人获取Mech-Vision工程1返回的视觉结果。
因此,上述语句表示,当状态码I052为1100时,则机器人成功获取到所有视觉结果;否则视觉系统发生异常,程序执行IFTHENEXP与ENDIF之间的代码。用户可根据具体异常状态码做相应的处理。此样例中对所有异常状态码做了相同处理,即通过PAUSE指令暂停程序的执行。 |
||
关闭通信 |
机器人通过MM_CLOSE_SOCKET指令断开与视觉系统之间的TCP协议通信连接。 |
||
转存视觉结果 |
因此,整条指令表示将第一个视觉点的工具位姿、标签和末端工具编号分别转存至指定变量。 |
||
移动到中间过渡点 |
整条指令表示机器人以关节角移动方式移动至拍照点与抓取接近点之间的某个过渡点。
|
||
移动到抓取接近点 |
因此,整条指令表示机器人直线移动到抓取点(P071)上方100mm处。
|
||
移动到抓取点 |
机器人以直线移动方式从抓取接近点移动到抓取点。 |
||
设置DO执行抓取 |
机器人移动到抓取点后,通过设置DO指令(例如“DOUT OT#(1) ON”),控制末端工具进行抓取。用户需根据实际场景增加设置DO的操作。
|
||
移动到抓取离开点 |
机器人移动到抓取点上方的100mm处,即到达抓取离开点。
|
||
移动到中间过渡点 |
机器人移动至抓取离开点与放置接近点之间的某个过渡点。
|
||
移动到放置接近点 |
机器人从中间过渡点移动到放置接近点。
|
||
移动到放置点 |
机器人从放置接近点移动到放置点。
|
||
设置DO执行放置 |
机器人移动到放置点后,通过设置DO指令(例如“DOUT OT#(1) OFF”),控制末端工具进行放置。用户需根据实际场景增加设置DO的操作。
|
||
移动到放置离开点 |
机器人从放置点移动到放置离开点。
|
||
移动到Home点 |
机器人从放置离开点重新移动到Home点。
|