样例程序2:Sample_2

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

程序简介

功能说明

机器人触发Mech-Viz工程运行,然后获取路径规划结果,进而执行抓取和放置操作。

文件路径

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

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

所需工程

Mech-Vision工程和Mech-Viz工程

使用前提

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

  2. 已完成自动标定。

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

程序解读

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

Sub Sample_2
'-------------------------------
'FUNCTION:simple pick and place
'with Mech-Viz
'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 Viz project
	MM_Start_Viz 2,0
	Delay 500
'set branch exitport
	MM_Set_Branch 1,1
'get result from Viz
	MM_Get_VizData 2,1,2,3
	IF I[3]<>2100 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

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

sample2

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

流程 代码及说明

获取控制权

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_Viz 2,0
  • MM_Start_Viz:触发运行Mech-Viz工程的指令。

  • 2:将机器人的一个示教点(非当前关节角,而是自定义关节角)传入Mech-Viz工程,用于在机器人处于拍照区域外时,提前触发Mech-Viz工程规划下一轮路径。此时相机的安装方式为Eye To Hand。

  • 0:指定J变量的编号。J[0]用于保存用户自定义的关节角数据。

因此,整条指令表示机器人触发视觉系统运行Mech-Viz工程,且将J[0]表示的关节角数据传入Mech-Viz工程。

Delay 500

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

设置Mech-Viz消息分支出口

MM_Set_Branch 1,1
  • MM_Set_Branch:设置Mech-Viz消息分支出口的指令。

  • 第一个1:消息分支的步骤编号。

  • 第二个1:Mech-Viz工程将沿“消息分支”步骤的出口0继续执行。此处需注意,如果该参数设置为N,则出口为N-1。

因此,整条指令表示Mech-Viz工程在编号为1的“消息分支”步骤处将沿出口0继续执行,如下图所示。

set branch

获取规划路径

MM_Get_VizData 2,1,2,3
  • MM_Get_VizData:获取规划路径的指令。

  • 2:指定路径点的位姿形式为工具位姿。

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

  • 2:指定I变量的编号。I[2]用于保存视觉移动路径点(抓取点)在路径中的位置编号。

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

因此,整条指令表示机器人获取Mech-Viz工程返回的规划路径。

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

当状态码I[3]为2100时,则机器人成功获取到规划路径;否则视觉系统发生异常。用户可根据具体异常状态码做相应的处理。

转存规划路径

本样例假设获取的第一个路径点就是抓取点。
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 来确保您在访问本网站时不会被跟踪或记住。