文档库 最新最全的文档下载
当前位置:文档库 › RoboDK机器人离线编程软件学习

RoboDK机器人离线编程软件学习

RoboDK机器人离线编程软件学习
RoboDK机器人离线编程软件学习

RoboDK学习总结/基础教程

E-mail: ygfwind@https://www.wendangku.net/doc/fb162336.html, robodk交流群:253679540

由于RoboDK在国内的资料特别少,而本资料是作者一点一点摸索总结的结果,如有错误请

邮件联系,一起学习改正!

1.在导入工件,或是导入刀具时,在Solidworks中绘制好工件或刀具三维图,按照RoboDK中所期望的坐标系,将工件的坐标系在Solidworks中配置好,并保存成RoboDK所支持的格式(.igs ,.stp等),在保存时在坐标系选项中将坐标设置成你所编制好的坐标系。这样在导入RoboDK时,导入零件的坐标系就可以是非原点坐标系。(注:编制坐标系一定要在装配体中编制,在零件图编制无效)。

2.对铣削加工CAM路径的导入,需要使用MasterCAM。

在使用MasterCAM路径编辑的时候,需要注意以下几点:

1)MasterCAM编制路径必须为5轴机床刀具路径,可以直接创建曲面五轴刀具轨迹,也可以3轴转为五轴轨迹的方式。

2)MasterCAM需导出NC代码,可以在NC代码后处理的部分,修改轨迹代码,并可以保存成RoboDK支持的CAM格式如(.nc,.apt)。

3.在RoboDK中最好将各工件都设定一个坐标系,并设置好工件基坐标系与设定的用户坐标系的参数,这样方便操作,如果若干个部件的相对位置不改变,可以设置在同一个坐标树下。如图,部件zuozi和DKtest body2都有各自的坐标系。

4.在RoboDK导出机器人程序时,我们可以注意到,对于不同厂家,机器人的编程方式也有所不同,有些是直接对机器人的关节角度变化进行编程,如UR。而更为普遍的是给定TCP点的六自由度坐标值进行编程。

5.在利用Python进行机器人编程时需注意一下几个方面:

1)在编写循环语句时,一定要注意for、while的对齐格式,否则容易出错,且不容易被发现。

2)Python编写函数时,特别是自定义函数def,也需要注意对齐格式。例如定义名为box_calc()的数组函数,其中return的返回值就是函数执行结束的结果:def box_calc():

xyz_list=[]

for k in range(count_z):

for j in range(count_y):

for i in range(count_x):

xyz_list=xyz_list+[ [ i*distance_x, j*distance_y, k*distance_z ] ]

return xyz_list

6.关于MoveL,MoveJ,MoveC的使用和解释

众所周知

MoveL指的是机器人直线运动

MoveJ指的是机器人关节运动

MoveC指的是机器人圆弧运动

我们可以注意到在图标中有黑色点和红色点,黑色点指的是动作的起始点(个人实践得出),红色点为目标点(软件中有说明)。

具体做法:1)MoveL和MoveJ的操作方法一致,首先创建一个目标点作为起始点,并将机器人移动到起始点。再创建一个目标点2作为移动的目标点,点击MoveL或MoveJ,将软件自动创建的目标点删除。将MoveL或MoveJ的关联目标点设置为创建的目标点2

2)MoveC与MoveL类似,只不过MoveC需要选择两个目标点(加上起始点,三点确定一个圆),关联点1代表先经过的点,关联点2代表后经过的点。运行路径如图。

注意:一定要把机器人先置于设定好的起始点位置,在点击仿真运动。例子中目标点1为起始点,2,3为经过的圆弧路径点。其次,机器人路径最好不要经过4.5.6关节的原始位置,

容易接近奇异点出现错误,如图。改变路径位置便可修复错误。三个点必须可以是同一圆上的三点,否则一样会出现错误。

7.自定义机器人的创建

我们以六轴机器人为例

实用程序→添加机构或机器人→六轴机器人

把机器人名称设为my robot1

导入事先创建的机器人各关节CAD模型(最好是英文名称)。机器人有六个轴,所以应该创建七个零件(包含基座)。

然后设置机器人各关节的位置,在joint1的基座位置创建一个用户坐标系joint1的坐标系一定与创建/修改机构或机器人中的红色机器人范例的坐标一致,这样方便后续坐标系的设置。

参考基坐标系(base reference)选为设置好的坐标系1,base到joint6分别设置为坐标到6轴末端的法兰。其中home是设置机器人的初始原点角度值,minimum limit和maximum limit 为各关节角度的变化范围。这里先保持默认。

设置完,下面是DK独特的机器人参数设置方法,这里暂时还不知道想的对不对,大家一起研究,先说一下我的理解

首先我们需要明确这里是一个机器人运动学的问题,对于六轴机器人我们可以根据坐标变换得到机器人各关节坐标系的关系,ok ,相信大家都有这个基础,不赘述。由此我们对照红色机器人模型,根据D-H 参数法得到机器人坐标系如下图。

显而易见,参数表中d1、a2、a3....为连杆的长度或位置参数,其符合D-H 参数法,所有红色机器人的a 、d 参数的方向均设为正方向。

而θ?代表机器人关节坐标系相对于D-H 参数法的关节坐标系绕Z 轴的旋转角度。例如: 从坐标0运动到坐标1,沿z 轴平移d1,红色机器人中的x 坐标向左,z 向上与D-H 的坐标一致,所以1θ?为0。

坐标1到坐标2,沿x 轴方向平移了a2,并绕x 轴旋转90°,得到D-H 的坐标系2,但红色机器人样板的坐标2中x 轴应该是向上的,两坐标系方向不一致,

所以还需绕z

轴旋转-90°,所以2θ?为-90°。后面的同理。

简言之就是机器人坐标与D-H 参数法坐标的z 轴旋转值变化,这里不考虑x 的旋转值α,α是D-H 中必须要有的,默认α的旋转范围-180<0<+180°,所以在参数中不可变,无需设置,因此参数表中无α的值。

注,关于d2在红色样板中未标出。如果机器人第4轴旋转与坐标2无z轴方向偏移,则默认d2为0。有偏移,按相对坐标2中z轴方向的变化量设置。

点击另存为*.robot。就可以将自己创建的机器人模型保存,在离线变成中使用,但是此机器人不具备自己的控制器。控制器是默认的,当然你可以选择其他厂家的现成的控制器,如图,双击机器人→机器人参数→后处理程序中选择。

方法2:在机器人参数中,点击解锁高级选项,如图。参数表就是六轴机器人的D-H参数表,其中a,θ,d就是我们刚才在创建机器人坐标系中设置的参数。这里可以直接和D-H结合起来,当然也可以直接进行修改,修改完消除在高级选项前的勾。

8.机器人工具和参考坐标系的问题

在roboDK中有这样两个图标

添加参考系的坐标变更,就是设置坐标系

添加工具更改

举个例子,如图:

图中是一个带有机器人导轨的机器人系统。机器人从原点运动到目标点1沿四边形运动再回到原点。在沿四边形运动的时候,机器人在导轨上的位置不变。因此我们将target1-4的基准坐标设置为机器人的基座。目标点3和目标点1的基准设置为大地。来实现机器人沿导轨运动到工位,机器人不动,再回到基础位置的功能。

如果需要调用其他程序,可以在添加自定义代码里直接输入程序的名字即可调用

9. 多个坐标下条件下,目标点问题

在有多个机器人,或多个外部轴的条件下,一般的目标点设置容易发生程序混乱,这里我们对这一状况进行说明

双击目标点,会出现如下图的弹窗

其中,选项中有目标点类型(上一级坐标系被移动的情况下),有两个选项保留直角坐标系位置,以目标点的参考系坐标为依据;或保留关节变量值,以机器人各轴的关节变量为依据,目标点坐标位置会失效,包括外部轴(蓝色)。

例如,如果机器人的动作是回到原点(初始位置),即知道关节变量值的情况下,建议使用保留关节变量值选项,如果选择保留直角坐标可能会出现位姿错误到达不了。

选择直角坐标选项,目标点图标为红色

选择关节变量选项,目标点图标为绿色

10. RoboDK API Python函数讲解

打开python3.4.1 IDLE GUI

在shell 里输入help('robodk')/help('robolink'),调出robodk的API帮助文档

关于python的学习大家可以寻找相关书籍,这里不做讲解。robodk里的python 也都比较简单易懂。python的这个机器人工具箱中的函数也是基于澳大利亚科学家Peter Corke编写的MATLAB机器人工具箱,所以对MATLAB robotics toolbox 熟悉的人难度不大。

以一个简单的python程序作为初步讲解:

在编写一段python控制程序时

1.首先要定义机器人和机器人工具,函数为

robot=RL.Item('机器人型号')的形式,中间用下划线隔开

robottool=RL.Item('工具名')

注:名称一定要与机器人树的名字一致,特别是大小写

也可以在操作数树中选择一个机器人。

robot=RL.ItemUserPick('Select a robot for welding/painting /...',

ITEM_TYPE_ROBOT)如果不知道机器人的名字可以:

robot=RL.Item('', ITEM_TYPE_ROBOT)

2.NEXT,定义系统的参考基坐标

用frameBase=RL.Item('坐标系')

设定坐标系,robot.setFrame( )

同样,名称要与机器人树一致,DK2.0版本识别程序里汉字

每一段机器人程序都需要设置上面这两项,很重要。

3.设定home点

这里home点用六关节的角度值,为简单,设为六个0

4.设定目标点

我们可以用transl([x,y,z])函数,xyz为目标点的坐标值,如果不加坐标旋转函数,则坐标方向与参考基坐标的方向一致。

如:target=transl([410,5,40])*rotz(pi)*roty(pi)

5. 用robot.MoveJ使机器人到达目标点

总的程序如下:

1.旋转

rotx(rx):返回一个绕x轴旋转的矩阵

roty(ry):返回一个绕y轴旋转的矩阵

rotz(rz):返回一个绕z轴旋转的矩阵

2.目标点定义

transl(x , y = None , z = None) 返回一个变换矩阵,意义在于输入目标点的xyz 值变换成矩阵形式。

| 1 0 0 X |

transl(X,Y,Z) = | 0 1 0 Y |

| 0 0 1 Z |

| 0 0 0 1 |

3. 暂停多少秒

pause(seconds)

4.姿态

机器人品牌_2_Pose(xyzrpw)

输入xyzrpw转换成某个机器人品牌的姿态。

原点为机器人原点

home=robot.JointsHome()

拾取树中的目标点

target=RL.Item('Target')

设置参考坐标系为当前目标点的坐标系

reference=target.Parent()

robot.setFrame(reference)

5.对官方范例中画多边形的程序进行说明

程序如下:

其中,target为正多边形的中心点,循环中的角度值指的是多边形端点相对于中心的角度值。

6.调用RoboDK程序树中的程序,函数为

RL.RunProgram('程序名')

7.其实我们可以把函数中. 前面的认为是函数执行的本体,.后面的是要执行的函数/动作。

8.目标点设置为关节方式(在目标点设置中讲过有两种方法,关节和坐标)

RL.Addtarget()

target.setAsJointTarget() 以机器人关节数据设置目标点位置

target.setJoint([0,-90,90,0,40,0]) 设定目标点位置

robot.addMoveJ(target) 机器人移动到目标点

目标点设置为坐标方式

RL.Addtarget

target.setPose()

Comau喷涂audi R8示意

本程序中的CAM来自与UG NX8.0R8

UG数控铣加工编程通用过程

相关文档