工具坐标系点数据是由直角坐标系为基准的工具(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可以使用机器人管理器的工具向导定义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) / 2yTool = (Y2 - Y1) / 2(9) 在机器人管理器的工具窗口中输入偏移量,或在命令窗口中执行以下指令来定义Tool。
TLSET 1, XY(xTool, yTool, 0, 0)(10) 测试Tool的设置结果。
选择刚才用以上步骤定义的Tool。
举例设置为Tool1 。
然后步进机器人,请把夹爪或吸嘴对准基准点。
之后步进U轴,此时夹爪或吸嘴是对准基准点的情况下旋转不会有偏移。
使用向上的固定相机计算Tool偏移量的方法Function中首先执行定位Tool中心用的序列。
然后进行Tool偏移量的计算。
Function CalcToolBoolean foundReal x, y, u ,x0, y0, u0,xTool, yTool, rTool, thetaTool 0VRun findTipVGet findTip.tip.RobotXYU, found, x, y, uIf found Then' Get the TOOL 0 positionx0 = 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 axisxTool = x - x0 ; yTool = y - y0' Calculate angle at initial offsetstheta = Atan2(xTool, yTool)' Calculate angle of tool when U is at zero degreestheta = theta - DegToRad(u0)' Calculate tool radiusrTool = Sqr(xTool * xTool + yTool * yTool)' Calculate final tool offsetsxTool = Cos(theta) * rTool ; yTool = Sin(theta) * rTool' Set the toolTLSet 1, XY(xTool, yTool, 0, 0)EndIfFend抓取抓取基板的基板的Tool 计算方法在这个例子中Vision Guide 5.0用于机器人抓取需要放置的基板后计算此基板的Tool。
此时需要一个向上的相机一台。
校准相机之后需要示教放置位置。
放置位置的示教方法如下(1) 用机器人抓取基板。
(2) 为了计算Tool1请执行一次子程序CalBoardTool 。
(3) 请切换至Tool1。
(4) 请步进移动基板。
(5) 请示教基板放置位置。
F unction CalcBoardTool As BooleanBoolean foundReal fidX, fidY, fidU, rReal robX, robY, robUReal x, y, thetaReal toolX1, toolY1, toolUReal toolX2, toolY2CalcBoardTool = FALSEJump Fid1CamPos ' Locate fiducial 1 over camera robX = CX(Fid1CamPos)robY = CY(Fid1CamPos)robU = CU(Fid1CamPos)VRun SearchFid1VGet SearchFid1.Corr01.RobotXYU, found, fidX, fidY, fidU If found Thenx = fidX - robXy = fidY - robYtheta = Atan2(x, y) - DegToRad(robU)r = Sqr(x ** 2 + y ** 2)toolX1 = Cos(theta) * rtoolY1 = Sin(theta) * rElse 'target not foundExit FunctionEndIfJump Fid2CamPos ' Locate fiducial 2 over camera robX = CX(Fid2CamPos)robY = CY(Fid2CamPos)robU = CU(Fid2CamPos)VRun SearchFid2VGet SearchFid2.Corr01.RobotXYU, found, fidX, fidY, fidU If found Thenx = fidX - robXy = fidY - robYtheta = Atan2(x, y) - DegToRad(robU)r = Sqr(x ** 2 + y ** 2)toolX2 = Cos(theta) * rtoolY2 = Sin(theta) * rElse 'target not foundExit FunctionEndIfx = (toolX1 + toolX2) / 2y = (toolY1 + toolY2) / 2theta = Atan2(toolX1 - toolX2, toolY1 - toolY2) toolU = RadToDeg(theta)TlSet XY(1, x, y, 0, toolU)CalcBoardTool = TRUEFend。