样例程序1:Sample_1

您正在查看旧版本的文档。点击页面右上角可切换到最新版本的文档。

程序简介

功能说明

机器人触发Mech-Vision工程运行,然后获取视觉结果,进而执行抓取和放置操作。

文件路径

Mech-Vision和Mech-Viz软件安装目录下Mech-Center/Robot_Interface/DENSO/sample.pcs

该文件包含三个子程序(Sample_1、Sample_2和Sample_3。本节只讲解Sample_1子程序相关的内容。

所需工程

Mech-Vision工程

使用前提

  1. 已完成标准接口通信配置。

  2. 已完成自动标定。

此样例程序仅是示例程序。用户需根据实际情况在此基础上进行修改,请勿直接使用该程序。

程序解读

以下为Sample_1样例程序的代码及相关解释说明。

Sub Sample_1
'-------------------------------
'FUNCTION:simple pick and place
'with Mech-Vision
'Mech-Mind, 2022-8-4
'-------------------------------
'Getting control of the robot.
	TakeArm Keep = 0
'move to the home position
	Move P, P[1],speed=80
'move to the camera position
	Move P,@C P[2],speed=80
	Open_socket
'set vision recipe
	MM_Set_Model 1,1
	Delay 100
'Run vision project
	MM_Start_Vis 1,0,1,2
	Delay 100
'get result from Vis
	MM_Get_VisData 1,1,2
	IF I[2]<>1100 THEN
		stop
	END IF
'set the first pos to P20;
'set lables to I11;
'set speed to I12;
	MM_Get_Pose 1,20,11,12
	Approach P, P[20], 100
	Move L,@C P[20],speed=80
'enable girpper
	Set IO[24]
	Approach L, P[20], 100
	Move P, P[3],speed=80
'drop point
	Move L,@C P[4],speed=80
'release gripper
	Reset IO[24]
'Giving up control of the robot
	GiveArm
	Close_socket
End Sub

上述样例程序代码对应的流程如下图所示。

sample1

下表为上述程序的逻辑解读。用户单击指令名称的超链接便可查看该指令的详细说明。

流程 代码及说明

获取控制权

TakeArm Keep = 0

获取机械臂组的控制权,同时进行以下初始化。

  • 将已获取机械臂组的内部速度设定值设为100。同时,将内部加速度和内部减速度设为100。

  • 将当前的工具坐标系编号初始化为Tool0。

  • 将当前的工件坐标系编号初始化为Work0。

移动到Home点

Move P,P[1],speed=80

机器人以80%的移动速度从当前位置向Home点(P[1])移动。第一个参数P表示以PTP(Point to Point)方式移动。

用户需提前示教Home点,具体示教方法可参考自动标定中“示教标定起始点”的操作。

移动到拍照点

Move P,@C P[2],speed=80

机器人以80%的移动速度从当前位置向拍照点(P[2])移动。@C表示根据编码值,确认变换坐标后的臂前端位置和姿势到达目标时执行下一行指令。

用户需提前示教拍照点,具体示教方法可参考自动标定中“示教标定起始点”的操作。

建立通信

Open_socket

机器人通过Open_socket指令与视觉系统之间建立TCP协议通信连接。

切换Mech-Vision参数配方

MM_Set_Model 1,1
  • MM_Set_Model:切换Mech-Vision参数配方的指令。

  • 1:Mech-Vision工程编号。

  • 1:Mech-Vision工程中参数配方的编号。

因此,整条指令表示将Mech-Vision工程1的参数配方切换成编号为1的参数配方。

若Mech-Vision工程中未使用参数配方,则需要将此行代码删除或注释。
Delay 100

Delay表示在指定的延迟时间[ms]内使任务处于待机状态。上述语句表示机器人待机100ms,以确保Mech-Vision有足够的时间切换参数配方。

触发运行Mech-Vision工程

MM_Start_Vis 1,0,1,2
  • MM_Start_Vis:触发运行Mech-Vision工程的指令。

  • 1:Mech-Vision工程编号。

  • 0:期望Mech-Vision工程返回所有视觉点。

  • 1:将机器人的当前关节角和法兰位姿传入Mech-Vision工程,此时相机安装方式为Eye In Hand。

  • 2:指定J变量的编号。该编号对应的J变量用于保存用户自定义的关节角数据。此样例中J变量表示的关节角数据无实际用处,但必须设定该J变量的编号。

因此,整条指令表示机器人触发视觉系统运行编号为1的Mech-Vision工程,且期望Mech-Vision工程返回所有视觉点。

Delay 100

上述语句表示机器人待机100ms,以确保相机有足够的时间进行拍照。

获取视觉结果

MM_Get_VisData 1,1,2
  • MM_Get_VisData:获取视觉结果的指令。

  • 1:Mech-Vision工程编号。

  • 1:指定I变量的编号。I[1]用于保存获取的视觉点数量。

  • 2:指定I变量的编号。I[2]用于保存指令执行的状态码。

因此,整条指令表示机器人获取Mech-Vision工程1返回的视觉结果。

由于返回的视觉结果保存在机器人内存中,此时用户无法直接获取到视觉结果,必须通过后续“转存视觉结果”才可访问。
IF I[2]<>1100 THEN
	stop
END IF

当状态码I[2]为1100时,则机器人成功获取到所有视觉结果;否则视觉系统发生异常。用户可根据具体异常状态码做相应的处理。

转存视觉结果

MM_Get_Pose 1,20,11,12
  • MM_Get_Pose:转存视觉结果的指令。

  • 1:将转存第一个视觉点。

  • 20:指定P变量的编号。P[20]将保存第一个视觉点的工具位姿,即抓取点的工具位姿。

  • 11:指定I变量的编号。I[11]将保存第一个视觉点对应的标签。

  • 12:指定I变量的编号。I[12]将保存第一个视觉点对应的速度。

因此,整条指令表示将第一个视觉点的工具位姿、标签和速度分别转存至指定变量。

移动到抓取接近点

Approach P, P[20], 100

机器人以PTP方式移动至抓取接近点。100表示相对于P[20]的Z轴负方向100mm处(即机器人移动到抓取点上方的100mm处,到达抓取接近点)。

增加抓取接近点可防止机器人在移动过程中与场景物体(例如料筐)发生碰撞。用户可根据实际场景修改此处的Z轴负方向偏移量,保证接近过程无碰撞。

移动到抓取点

Move L,@C P[20],speed=80

机器人以直线移动方式从抓取接近点移动到抓取点(P[20])。

设置DO执行抓取

Set IO[24]

机器人移动到抓取点后,通过设置DO指令(例如“Set IO[24]”),控制末端工具进行抓取。用户需根据实际场景增加设置DO的操作。

移动到抓取离开点

Approach L, P[20], 100

机器人移动到抓取点上方的100mm处,即到达抓取离开点。

增加抓取离开点可防止机器人在移动过程中与场景物体(例如料筐)发生碰撞。用户可根据实际场景修改此处的Z轴负方向偏移量,保证离开过程无碰撞。

移动到中间过渡点

Move P, P[3],speed=80

机器人移动至抓取离开点与放置点之间的某个过渡点(P[3])。

  • 添加过渡点可保证机器人平滑移动,同时避免一些不必要的碰撞。用户可根据实际场景添加多个过渡点。

  • 用户需提前示教中间过渡点,具体示教方法可参考自动标定中“示教标定起始点”的操作。

移动到放置点

Move L,@C P[4],speed=80

机器人从中间过渡点移动到放置点(P[4])。

用户需提前示教放置点,具体示教方法可参考自动标定中“示教标定起始点”的操作。

设置DO执行放置

Reset IO[24]

机器人移动到放置点后,通过设置DO指令(例如“Reset IO[24]”),控制末端工具进行放置。用户需根据实际场景增加设置DO的操作。

解除控制权

GiveArm

明确解除当前所获取机械臂组的控制权。

关闭通信

Close_socket

机器人通过Close_socket指令断开与视觉系统之间的TCP协议通信连接。

我们重视您的隐私

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