机器人工具坐标系的创建(官方文档)

工具坐标系 

点数据是由直角坐标系为基准的工具(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 坐标系也同时旋转。

image.png

垂直多关节机器人(6 轴机器人)的 Tool 0 坐标系的定义

桌上型时,把所有关节移动到 0 度位置时第 6 关节的法兰面中心为原点,垂直上方向为 X 轴,机器人直角坐标的 X 轴方向为 Y 轴,对第 6 关节法兰面垂直的方向为 Z 轴的坐 标系为 Tool 0 坐标系(请参考下图)。

Tool 0 坐标系是固定在第 6 关节的,所以机器人姿势变化时 Tool 0 坐标系也相应的移动。 吊顶型和挂壁型时的 Tool 0 坐标系请参考下图。

image.png

用户自定义工具(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
来源:
www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2025年4月    »
123456
78910111213
14151617181920
21222324252627
282930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864