视觉系统和机器人联用
在您使用视觉序列的结果来指导机器人时,您需要校准序列所使用的相机。有关详细信息,请参考 7.视觉校准。
视觉校准
如果您尝试从一个需要校准的序列对象读取结果,但是此序列并没有经过校准,则将出现运行时间误差。
定位结果
使用机器人校准相机的视觉序列中的对象所报告的所有定位结果均位于指定的本地坐标系中。和其他机器人/视觉系统不同,没有额外步骤来获得机器人坐标转换函数调用的像素坐标。这完全由Vision Guide 8.0进行处理。能够轻易检索机器人本地坐标系中零件的X、Y和U坐标。
为了准确地将终端执行器定位在视觉系统定义的位置,您需要为终端执行器定义一个工具。请参见下一节的 定义一项工具。
以下结果可用于指导机器人:
结果 | 说明 |
---|---|
RobotXYU | 返回x、y和u值以及找到的状态。 |
RobotToolXYU | 仅限向上相机时 返回X、Y、U坐标值,以定义检出状态下的机器人工具 |
RobotX | 返回X坐标。 |
RobotY | 返回Y坐标。 |
RobotU | 返回U坐标。 |
RobotPlacePos | 仅限向上相机时 以Point类型返回机器人的位置,以便将检出的零件放置到在CalRobotPlacePos中已注册的工件放置位置(RobotPlaceTargetPos)上 注意:需要为每个对象设置CalRobotPlacePos。 |
U坐标零度位置沿Y轴直直地从机器人底座向外延伸。
以下对RobotPlacePos进行补充说明。
如上图所示,在机器人的坐标系(工作平面)中放一个向上的相机,工件的放置位置 (RobotPlaceTargetPos)通过CalRobotPlacePos注册。在实际操作中,首先在视觉序列中检测出(VRun)要拾取工件的位置。然后获取(VGet)放置该工件时机器人的位置(RobotPlacePos)。
图中右侧为移动到RobotPlacePos后的状态。移动到RobotPlacePos,可以时工件的位置姿态和工件的放置位置相匹配。
在RobotPlacePos中获取的点,姿态Flag为默认值,所以在移动时根据需要进行修正。以下程序示例可实现,通过向上相机检测到要抓取的工件,然后以最小的关节移动距离,移动到工件的放置位置的操作。
Function placePart
'Move robot into position snapshot
Go camshot
VRun findPart
VGet findPart.Blob01.RobotPlacePos, P100
'------------------\-
' When the robot is SCARA
Double diffJ4 'Angle difference between RobotPlacePos and latch position(J4)
diffJ4 = PAgl(P100, 4) \- PAgl(LatchPos(WithoutToolArm), 4)
If diffJ4 > 180 Then
Go P100 -U(360) 'Joint4 will be the shortest movement
ElseIf diffJ4 < -180 Then
Go P100 +U(360) 'Joint4 will be the shortest movement
Else
Go P100
EndIf
'------------------\-
' When the robot is 6-axis
Go P100 LJM 4 '4: Joint6 will be the shortest movement
Fend
当RobotPlacePos中获取的点超出操作范围时,可能会出现4007错误。此时,请更改工件的放置位置,或使用RobotToolXYU。
定义一项工具
为机器人终端执行器定义一项工具十分重要。
此工具告知机器人终端执行器的位置,以便所有的位置信息都和终端执行器位置相关,而不是和TOOL 0位置相关。
使用TLSET命令在SPEL+中定义一项工具。
以下为定义工具偏移的三种方式。
用Robot Manager Tool Wizard来定义一项工具
您可以使用Robot Manager中的Tool Wizard来定义一项工具。
要使用Tool Wizard,请采用以下步骤:
- 打开Robot Manager。
- 点击[Tools]选项卡。
- 点击[Tool Wizard]按钮。
- 按照向导中的步骤来创建工具。
利用固定向上相机来计算工具偏移
这是如何使用固定向上相机来计算工具偏移的示例。即使用RobotToolXYU结果定义工具偏移。
该功能首先运行一个序列来定位工具的尖端。然后使用VGet RobotToolXYU检索工具偏移,并使用TLSet定义工具。
Function DefineTool
Boolean found
Real xTool, yTool, uTool
VRun findTip
VGet findTip.tip.RobotToolXYU, found, xTool, yTool, uTool
If found Then
TlSet 1, XY(xTool, yTool, 0, 0)
EndIf
Fend
手动计算工具偏移
在按如下方式计算工具偏移时您不能释放轴(使用SFREE),也不能手动移动机器人。在以下步骤中,您必须用Jog & Teach窗口中的Jog按钮来步进机器人。
计算工具偏移,请执行以下步骤。
要点
- 使用垂直6轴机器人时,执行接下来的Local命令,然后按照下一页的步骤进行。 > Local 1,Here
- 当在以下计算步骤中读取当前位置时,应使用Local 1中的位置。如果使用Jog & Teach窗口,将步进模式设为“Local”,当前位置的显示模式设为“World”,编号设为“1”。
如果使用命令窗口,可执行如下命令,检查Local 1的位置。
> Print Here@1
- 将U轴定位在零度位置。
- 将工具设置为零(TOOL 0)。
- 在基准点上步进终端执行器,然后将其仔细对准。不要改变U轴设置。
- 记下当前的X和Y坐标,分别为X1和Y1。
- 步进U轴至180°位置。
- 在基准点上步进终端执行器,然后将其仔细对准。不要改变U轴设置。
- 记下当前的X和Y坐标,分别为X2和Y2。
- 利用以下公式来计算工具偏移:
xTool = (X2 - X1) / 2
yTool = (Y2 - Y1) / 2 - 通过Robot Manager的Tools页面或通过Command窗口定义工具。
TLSET 1, XY(xTool, yTool, 0, 0) - 测试工具设置。
请将当前工具设置为您在之前的步骤中定义的工具。例如,TOOL 1。在基准点上步进终端执行器。现在步进U轴。终端执行器应保持在基准点之上。
机器人电路板的工具计算
本示例中,Vision Guide 8.0用于计算机器人所配备的电路板的工具。从电路板中的两个参考点的坐标,计算工具偏移量。这需要一台固定向上相机。校准相机后,您将需要示教一次电路板的安放位置。
要示教安放位置:
由机器人拾取电路板。
调用示例函数CalcBoardTool来计算工具1。
转换到Tool 1。
步进机器人,移至电路板的安放位置。
示教安放位置。
符号 说明 a 参考点1(Fid1CamPos) b 电路板 c 待计算的工具偏移 d 参考点2(Fid2CamPos) e 机器人的保持位置
Function CalcBoardTool As Boolean
Boolean found
Real x, y, theta
Real toolX1, toolY1, toolU
Real toolX2, toolY2
CalcBoardTool = False
Jump Fid1CamPos 'Locate fiducial 1 over camera
VRun SearchFid1
VGet SearchFid1.Corr01.RobotToolXYU, found, toolX1, toolY1, toolU
If Not found Then
Exit Function
EndIf
Jump Fid2CamPos 'Locate fiducial 2 over camera
VRun SearchFid2
VGet SearchFid2.Corr01.RobotToolXYU, found, toolX2, toolY2, toolU
If Not found Then
Exit Function
EndIf
x = (toolX1 + toolX2) / 2
y = (toolY1 + toolY2) / 2
theta = Atan2(toolX1 \- toolX2, toolY1 \- toolY2)
toolU = RadToDeg(theta)
TlSet 1, XY(x, y, 0, toolU)
CalcBoardTool = True
Fend
定位相机以搜索托盘
使用安装在J2上的相机进行托盘搜索时,相机的成像位置很难控制。然而,通过使用Arm命令来确定相机的Arm,可以使相机轻松移动到托盘上的每个成像位置。有关Arm命令的详细内容,请参见以下内容。
“Epson RC+8.0 SPEL+语言参考”
提示:
Arm命令仅适用于SCARA机器人。