点数据是由直角坐标系为基准的工具(Tool)坐标系中心位置及姿势所表示的。
位置用位置数据(X、Y、Z),姿势用姿势数据(U、V、W)指定。
除了机器人固有的 Tool 0 坐标系外,用户可自定义 1~15 共 15 个 Tool 坐标系。
机器人默认的 Tool 0 坐标系根据机器人类型分别如下定义。
水平多关节机器人(4 轴机器人)的 Tool 0 坐标系的定义
第 4 轴(旋转轴)的中心为原点,把第 4 轴旋转到 0 度角度时与机器人直角坐标系平行
的坐标轴为坐标轴的坐标系为 Tool 0 坐标系。(参考下图)。Tool 0 坐标系是固定在第四
关节(旋转关节)的,所以第四关节时 Tool 0 坐标系也同时旋转。
垂直多关节机器人(6 轴机器人)的 Tool 0 坐标系的定义
桌上型时,把所有关节移动到 0 度位置时第 6 关节的法兰面中心为原点,垂直上方向为
X 轴,机器人直角坐标的 X 轴方向为 Y 轴,对第 6 关节法兰面垂直的方向为 Z 轴的坐
标系为 Tool 0 坐标系(请参考下图)。
Tool 0 坐标系是固定在第 6 关节的,所以机器人姿势变化时 Tool 0 坐标系也相应的移动。
吊顶型和挂壁型时的 Tool 0 坐标系请参考下图。
用户自定义工具(Tool)坐标系的应用 )坐标系的应用
1) 视觉定位中的 Tool 应用。
用视觉定位来补正工件的角度时如果安装在旋转轴(第 4 轴)上的吸嘴或夹具的中心
(Tool 中心)与 Tool 0 坐标系不一致,通常需要根据角度偏移值和 Tool 中心的偏移值
经过复杂的三角函数计算才能准确的抓取工件。
这时事先把吸嘴中心或夹具中心校准为自定义 Tool 坐标系,就无需任何计算可准确抓
取工件。
2) 快速搬运工件时多 Tool 坐标系的应用
用一个吸嘴或夹具搬运工件时有时因机器人速度限制无法达到短循环时间的要求,这时
增加几个吸嘴或夹具同时抓取多个工件搬运可减短 10%-20%的循环时间,根据情况有
时甚至减短 30%-40%的循环时间。
每个吸嘴或夹具校准为独立的 Tool 坐标系,可简单实现。
3) 点胶等经常更换 Tool 时的应用。
在点胶项目中因胶针容易堵塞经常要更换,一般情况下每次更换胶头或胶桶后需要重新
校准点胶的位置,如果使用了自定义 Tool 的功能,每当更换胶头或胶桶时只需重新校
准胶头的 Tool 即可继续准确的点胶。
Tool 的定义方法
准确定义机器人夹爪或吸嘴的 Tool 是非常重要的。
根据 Tool 的定义机器人通过夹爪或吸嘴取得位置数据,位置数据的全部都与 Tool0 不
相关,只跟夹爪或吸嘴有关。
使用 SPEL+语言定义 Tool 时请使用 TLSET 指令。
Tool 的定义方法有以下几种。
使用机器人管理器的工具向导定义Tool
可以使用机器人管理器的工具向导定义Tool。
使用工具向导按照以下步骤操作。
(1) 打开机器人管理器
(2) 点击左边列表中的工具
(3) 点击工具向导按钮
(4) 按照工具向导的提示定义Tool。
Tool的手动计算方法 Tool的手动计算方法
NOTE 使用以下计算Tool的方法时,不能在释放轴的状态下(SFREE状态下)
计算,换句话说不能用手推动机器人。使用步进示教窗口步进移动机器人。 Tool
的计算请按照以下步骤进行。
(1) 请把U轴转动到0º。
(2) 步进示教窗口中的Tool设置为0(TOOL0)。
(3) 步进机器人,请把夹爪或吸嘴对准基准点(对的越准越好,对准的准确度直接影响Tool
的校准精度),此时U轴的角度要保持0º。
(4) 现在位置的X坐标和Y坐标记入X1和Y1。
(5) 步进U轴到180º的位置。
(6) 步进机器人,请把夹爪或吸嘴对准基准点(对的越准越好,对准的准确度直接影响Tool
的校准精度),此时U轴的角度要保持180º。
(7) 现在位置的X坐标和Y坐标记入X2和Y2。
(8) 使用以下公式计算Tool的偏移量。
xTool = (X2 - X1) / 2
yTool = (Y2 - Y1) / 2
(9) 在机器人管理器的工具窗口中输入偏移量,或在命令窗口中执行以下指令来定义Tool。
TLSET 1, XY(xTool, yTool, 0, 0)
(10) 测试Tool的设置结果。
选择刚才用以上步骤定义的Tool。举例设置为Tool1 。然后步进机器人,请把夹爪或吸
嘴对准基准点。之后步进U轴,此时夹爪或吸嘴是对准基准点的情况下旋转不会有偏移。
使用向上的固定相机计算Tool偏移量的方法//Function中首先执行定位Tool中心用的序列。然后进行Tool偏移量的计算。
Function CalcTool
Boolean found
Real x, y, u ,x0, y0, u0,xTool, yTool, rTool, theta
Tool 0
VRun findTip
VGet findTip.tip.RobotXYU, found, x, y, u
If found Then
' Get the TOOL 0 position
x0 = CX(P*) ; y0 = CY(P*) ; u0 = CU(P*)
' Calculate initial tool offsets
' X and Y distance from tip found with vision
' to center of U axis
xTool = x - x0 ; yTool = y - y0
' Calculate angle at initial offsets
theta = Atan2(xTool, yTool)
' Calculate angle of tool when U is at zero degrees
theta = theta - DegToRad(u0)
' Calculate tool radius
rTool = Sqr(xTool * xTool + yTool * yTool)
' Calculate final tool offsets
xTool = Cos(theta) * rTool ; yTool = Sin(theta) * rTool
' Set the tool
TLSet 1, XY(xTool, yTool, 0, 0)
EndIf
Fend
抓取基板的Tool计算方法
在这个例子中Vision Guide 5.0用于机器人抓取需要放置的基板后计算此基板的Tool。
此时需要一个向上的相机一台。校准相机之后需要示教放置位置。
放置位置的示教方法如下
(1) 用机器人抓取基板。
(2) 为了计算Tool1请执行一次子程序CalBoardTool。
(3) 请切换至Tool1。
(4) 请步进移动基板。
(5) 请示教基板放置位置。Function CalcBoardTool As Boolean
Boolean found
Real fidX, fidY, fidU, r
Real robX, robY, robU
Real x, y, theta
Real toolX1, toolY1, toolU
Real toolX2, toolY2
CalcBoardTool = FALSE
Jump Fid1CamPos ' Locate fiducial 1 over camera
robX = CX(Fid1CamPos)
robY = CY(Fid1CamPos)
robU = CU(Fid1CamPos)
VRun SearchFid1
VGet SearchFid1.Corr01.RobotXYU, found, fidX, fidY, fidU
If found Then
x = fidX - robX
y = fidY - robY
theta = Atan2(x, y) - DegToRad(robU)
r = Sqr(x ** 2 + y ** 2)
toolX1 = Cos(theta) * r
toolY1 = Sin(theta) * r
Else 'target not found
Exit Function
EndIf
Jump Fid2CamPos ' Locate fiducial 2 over camera
robX = CX(Fid2CamPos)
robY = CY(Fid2CamPos)
robU = CU(Fid2CamPos)
VRun SearchFid2
VGet SearchFid2.Corr01.RobotXYU, found, fidX, fidY, fidU
If found Then
x = fidX - robX
y = fidY - robY
theta = Atan2(x, y) - DegToRad(robU)
r = Sqr(x ** 2 + y ** 2)
toolX2 = Cos(theta) * r
toolY2 = Sin(theta) * r
Else 'target not found
Exit Function
EndIf
x = (toolX1 + toolX2) / 2
y = (toolY1 + toolY2) / 2
theta = Atan2(toolX1 - toolX2, toolY1 - toolY2)
toolU = RadToDeg(theta)
TlSet XY(1, x, y, 0, toolU)
CalcBoardTool = TRUE
Fend
---------------------
作者:hackpig 来源 网络
更多详情:埃斯顿机器人