本章介绍如何在机器人离线状态下,在RoboDK中准备一个离线编程的工作站。在本范例中,我们会为一台优傲(UR)机器人完成编程与仿真,实现机器人喷涂应用。
本范例将会概述机器人的基本概念,比如如何使用参考坐标系、工具和目标。
RoboDK项目中的所有设置都被保存在RoboDK工作站中(RDK文件)。一个RoboDK工作站包括机器人、机器人工具、参考坐标系、物体(工件)及其他参数。该RoboDK工作站被保存在单一文件中(RDK 扩展)。
由于机器人文件、工具、以及物体都保存为一个 RDK 文件,因此无需单独保存。
按照以下步骤创建一个新的RoboDK 项目(RDK 工作站):
1.下载并安装RoboDK:https://robodk.com.cn/cn/download
2.双击桌面上的快捷方式
3.如果桌面上已经打开了其他工作站:
那么你可以选择文件 ➔


多个RoboDK项目可以同时存在于RoboDK中。双击左侧树型菜单中的工作站图标
Video:本视频教程讲解创建工作站的第一步,比如添加新项目、选择机器人、添加参考坐标系:
https://www.youtube.com/watch?v=uxlfxglE2YE&index=2&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl.
可以从本地文件或者在线模型库中添加新的机器人:
添加步骤:
1.点击文件➔
1.根据品牌、载荷等参数找到你的机器人模型。此案例我们将使用优傲(Universal Robots)UR10 机器人(10公斤载荷,1.3米臂展半径)。
2.在机器人文件处点击"打开",文件将会在 RoboDK 中打开,或是将文件拖放到窗口中。
3.完成机器人加载后可以关闭在线模型库。
Tip:点击在线模型库中的"清空选项"或"全部清空"将移除使用过的所有筛选条件。更多信息详见此章节RoboDK 资源库。
Tip:你也可以在网站上直接下载机器人文件(.robot):https://robodk.com.cn/cn/library,拖拽该文件至RoboDK窗口内,或者通过点击菜单打开它:文件➔ 打开。
Note:每次在RoboDK中加载新机器人时,系统会自动添加一个代表机器人基坐标系(Base Frame)的新参考坐标系。
Note:在线模型库中加载的机器人将自动备份于本地文件夹中。
本范例的默认位置为:C:/RoboDK/Library/Tutorial-UR-Painting.rdk。

参考坐标系(又称坐标系)用于确定物体相对于机器人或其他3D空间对象的位置和方向。
Note:更多关于RoboDK中参考坐标系的内容详见参考坐标系。
添加一个新的参考坐标系:
1.选择程序➔
或者,点击工具栏中添加参考坐标系图标。
2.设置坐标系参数:双击树型结构中的参考坐标系(或主界面的3D模型),输入如图所示的坐标值(X、Y、Z位置+欧拉角方向)。快速调整:鼠标滚轮可在输入框上滚动,实时更新坐标系位置
默认颜色标识:
●X轴➔红色
●Y轴➔绿色
●Z轴➔蓝色
●第一欧拉角➔青色
●第二欧拉角➔洋红
●第三欧拉角➔黄色
Tip:选择工具➔选项➔显示➔显示 XYZ 轴字母,显示参考坐标系的字母标Note。
3.点击查看➔ 放大参考系 (+) 来增大参考坐标系。
4.点击查看➔ 缩小参考系 (-) 来减小参考坐标系的大小。
5.点击查看➔ 显示/隐藏文本 (/),以显示或隐藏屏幕上的文本。
6.也可以选择F2 重新命名树中的任何参考坐标系或物体。

Video:如何添加参考坐标系https://www.youtube.com/watch?v=ilmJSD-a9bs&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=5。
如果使用多个参考坐标系,用户可以根据它们现实中的相关性,在树型工作站中拖拽它们的位置。例如,参考坐标系Frame 2可以依据机器人基坐标位置摆放,此时如果移动UR10机器人的基坐标,Frame 2也会随之移动。当使用多台机器人以及参考坐标时,要Note意各坐标系之间的依附关系。下图中显示了不同的依附关系。

如下图所示,用户可以在不同颜色的方格中输入或者查看坐标值,这些数值代表该坐标系相对于其他坐标系的关系。多数机器人控制器根据机器人基坐标作为绝对参考来定义其他参考坐标系。

在工作空间内按下Alt 键,或者通过使用工具栏中相应的按钮

RoboDK支持导入文件的常规3D格式包括STL,STEP(STP)和IGES(IGS)。其他格式例如WRML,3DS或者OBJ也同样支持(在Mac和Linux系统下则不支持STEP与IGES格式)。加载新的3D文件:
请按照以下步骤加载新的 3D 文件:
1.选择文件➔
2.选择RoboDK 本地资源库中的Object Inspection:
C:/RoboDK/Library/Object Inspection。
3.或者,将物体拖拽至RoboDK主窗口内自动加载。
4.在工作站树型结构中,将物体拖拽至Frame 2内。
Tip:按住鼠标右键的同时进行拖拽,可以重新安排物体在树型结构中的位置。
Video:如何导入物体和创建工具:https://www.youtube.com/watch?v=gNgCwwpZrWE&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=4。
Important:将物体嵌套于参考坐标系内,可以确保机器人目标将相对于物体添加。如果需要移动参考坐标系时,机器人目标也随之移动。

Tip:当STEP或IGES文件过大时,可以通过以下操作加快导入的速度:
工具➔选项➔CAD➔快速导入设置。更多信息请参考STEP/IGES。


在RoboDK中,可以通过先前加载的 3D几何模型来加载或创建新的机器人工具(TCP)。
请按照以下步骤加载物体并将其设置为机器人工具:
1.选择文件➔
2.双击选择Paint gun.stl文件,该物体将自动添加至机器人基坐标位置
3.在工作站树型结构中拖拽物体到机器人坐标系下方,如下图所示
可以加载新的机器人工具,或将其保存为.tool格式的文件。


RoboDK默认设置TCP位置为[X,Y,Z]=[0,0,200]mm。该坐标位置可以通过手动更改,或者按下ALT+Shift键并拖拽TCP,如下图所示:
1.按下ALT+Shift或使用工具栏中的按钮(如图中标识)
2.选中青色的平面(TCP坐标的XZ平面)并朝喷枪表面的方向拖拽TCP,如下图所示
3.选中绿色的弧形箭头(Y轴旋转方向)并移动,直至TCP的Z轴指向外,即喷枪方向。
4.用户可以进一步微调TCP的坐标值。双击喷枪物体后可以查看并手动修改它的坐标,将鼠标置于每个方格内的数字上时,可以通过滚动鼠标滑轮快速更新TCP的位置。

此时,可以保存工作站:
1.选择文件➔
2.这时你可以重命名,将工作站保存为Paint Test.rdk。
可以根据已有的TCP创建新的TCP,例如,在第一个TCP位置的基础上设置一个偏移距离,或者根据一个钻磨轴的位置定义新的刀具位置。
以下步骤假设第二个TCP需要位于第一个TCP坐标Z轴的150mm位置:
1.右键点击机器人。
2.在菜单中选择
3.双击新的TCP(Tool 2)。
4.选择“工具中心点与”的下拉选项为Paint gun。
5.在Z坐标方格内输入150 mm,并将其他位置的数值修改为0。
这个相对于之前定义的 TCP 的新 TCP 将在本演示接下来的章节中删除。
当工具加载到RoboDK中时,工具的几何位置可能无法相对于机器人法兰(工具的参照位置)正确对齐。
以下步骤假设已出现错误,且工具绕 Z 轴旋转了 180 度,因此应进行如下校正:
1.打开工具详情窗口,然后点击该窗口底部的更多选项。
2.在黄色方格(围绕Z轴旋转)中输入180,以改变喷枪的几何位置,如下图所示。可以通过鼠标滚轮更新各个方格中的坐标数字并在窗口中观察工具位置的改变。


机器人位置可以被记录为目标。笛卡尔目标定义了工具相对于坐标系的位置。关节目标根据机器人关节值定义了机器人的位置。
Note:RoboDK默认创建的是笛卡尔目标(红色目标点

根据以下步骤添加两个机器人目标,分别定义为Home与Approach:
1.双击机器人以查看机器人面板。
2.选择工具Paint gun作为Tool Frame(机器人工具坐标)。当一个机器人工具或者参考坐标系被选为当前工具或坐标时,一个绿色的圆点会出现在该项目上。
3.选择Frame 2作为参考坐标系。
4.按下Alt键并拖拽机器人的TCP或者机器人法兰至一个不易与任何物体产生碰撞的安全位置。或者,以参考坐标系为基础移动Tool Frame(TCP)的坐标。
5.使用其他构型选择不同的机器人位姿,需确保机器人各轴都不接近轴极限。
Video:如何创建机器人目标:https://www.youtube.com/watch?v=ylKTq03-b_A&list=PLjiA6TvRACQd8pL0EnE9Djc_SCH7wxxXl&index=5
Tip:一般来说,程序的第一个机器人目标的各轴数值应尽可能居中(如下图中所示,轴数值的滑杆应尽量居中)。通过改变机器人的位姿,可以防止机器人在运行程序中的线性运动时达到轴极限。
6.选择程序➔
本范例中,第一个目标的机器人轴坐标值为:[-150, -75, -90, -60, 70, 110](角度)。用户可以使用相应的按钮拷贝这些角度值、粘贴
Note:选择另一个参考坐标系将导致新的机器人目标添加于该坐标中。

7.使用F2键将第一个机器人目标重命名为Home。或者,选择工具➔重命名。
8.移动机器人使其接近物体的一边(可以按下Alt键并拖拽机器人工具、输入机器人工具坐标或者通过滑杆驱动机器人的各轴)。
在本范例中,我们使用机器人轴坐标为[0,0,200,180,0,180]角度。
9.选择程序➔
10.将该目标重命名为Approach(见步骤7)。
11.在树型结构中分别点击Home与Approach,观察机器人在两个目标之间运动。
12.如需在运动轨迹中增加新的目标,右键点击机器人目标并选择:示教当前的位置(Alt+双击),记录当前机器人位置为机器人目标。
13.右键点击机器人目标,并选择

如有需要,改变机器人目标的坐标数值。
创建一个Approach机器人程序的操作步骤:
1.在菜单中选择:程序➔
2.程序命名为:ApproachMove
3.选择目标点:Home
4.在菜单栏中选择:程序➔
该程序自动生成两条命令,设置机器人工具与参考坐标系
5.选择目标点:Approach
6.再次选择程序➔
双击ApproachMove程序就开始仿真了。主窗口下方自动显示仿真状态栏与预测周期时间。

Note:有关如何新建程序和程序指令的更多信息,请参阅机器人程序章节。
RoboDK的示教表面目标点功能适用于喷涂、检测等应用场景:
操作步骤:
1.在主菜单栏选择:程序➔
2.将鼠标悬停在工件表面,可预览机器人到达该位置时的姿态。
3.在物体表面点击多个点(左键单击),每个点击都会创建一个新目标点,并保持TCP的Z轴垂直于表面。
4.如需调整Z轴方向角度:使用左侧面板的滚轮、或按键盘左右方向键按下Alt键移动已有的目标。
5.功能键操作:按住Alt键可移动现有目标点,按住Alt+Shift键可在保持目标点在曲面的前提下移动。
6.退出创建模式:按Esc键。或右键点击屏幕选择【完成】。

创建目标点后,按以下步骤生成程序:
1.选择所有已创建的表面目标点(右键点击)。
Tip:按住Ctrl键可多选。或者先选Target 3,按下Shift键,再选择Target 10,这样鼠标就能选中Target 3至Target 10间所有目标。
2.点击弹出菜单中:重命名。
3.输入:Top Paint,所有选中目标点将按此名称自动编号。
4.再次右键点击目标点,选择创建程序。首段运动指令为关节运动,后续的运动指令都为直线运动。
5.程序命名:PaintTop。
6.双击PaintTop程序,可查看沿目标点的运动仿真。
7.如需调整运动顺序,可直接拖拽程序内的运动指令。

创建Retract回退程序,使机器人从工件位置撤离至安全区域。
操作步骤:
1.定位机器人至最后目标点:在机器人控制面板中,通过调整TCP相对于参考坐标系的Z坐标值(如下图高亮部分所示),将机器人垂直上移。
2.选择程序➔
3.选择程序➔

4.选择Home目标点。
5.选择程序➔
双击单个程序可独立仿真。按住 空格键或点击 快速仿真按钮

主程序需要依顺序执行Approach, Paint和Retract三个程序。
请按照以下步骤创建主程序:
1.选择程序➔
2.选择程序➔
3.输入名称:ApproachMove, 或者使用选择程序自动添加程序。
4.选择确定。
5.如下图所示,对PaintTop 和Retract 重复前面的步骤
双击主程序将运行完整的仿真。右键单击主程序并选择循环可重复循环子程序。

如果Frame 2被移动(例如,按下Alt键并拽动坐标系的X/红色轴),参照该坐标系定义下的物体与机器人目标也跟着移动。如果机器人目标被移动到机器人工作空间范围之外,它的图标上会出现警告信息
Tip:在主菜单栏选择:查看➔ 显示/隐藏机器人工作空间 (*) 显示机器人的工作空间。

在RoboDK准备好仿真程序后,即可轻松生成机器人程序,而无需编写一行代码。
请按照以下步骤生成机器人程序:
1.右键单击一个仿真程序(例如MainProg)。也可以按住 Ctrl 键同时选择多个程序进行生成。
2.选择生成程序 (F6)。或者选择 "生成机器人程序为...",指定保存文件的位置。
然后,你就可以在文本编辑器中看到机器人程序。
有关如何生成机器人程序的更多信息,详见机器人程序章节。
在本例中,你将获得 UR 机器人的 SCRIPT 程序文件。对于优傲(Universal Robots)机器人,你可以单独导出任何程序,也可以导出包括子程序在内的主程序。
你获得的文件是离线生成程序的结果。可将该文件发送至机器人控制器,以运行在 RoboDK 中模拟的相同动作。
Note:如果你使用的是UR机器人,可以更改后处理器,生成机器人控制器可读取的URP文件。请访问以下章节,了解有关SCRIPT程序和URP程序区别的更多信息:如何为优傲(Universal Robots)控制器生成和修改URP程序,以及使用优傲(Universal Robots)控制器启动SCRIPT程序。
Note:"在机器人上运行"选项需要机器人驱动器才能正常工作。这些驱动器可能需要在机器人控制器上安装额外的软件选项和/或在机器人控制器上进行特定设置(UR 机器人不属于这种情况)。

Tip:使用RoboDK进行离线编程时,需要使用后处理器来定义用于生成每个程序的语法。RoboDK 提供多种后处理器,以支持多个机器人控制器和不同的制造应用。对于特定的机器人控制器,可能有不止一种后处理器可用。
可以为 UR 机器人更换后处理器,自定义程序的生成方式:
1.右键点击程序或机器人。
2.选择
3.选择优傲(Universal Robots URP)。
Note:所有带有黑色图标的后处理器都可以通过选择程序➔ Add/Edit Post Processor(添加/编辑后处理器)进行修改。
再次生成程序。在本例中,默认后处理器使用关节值来定义每个线性移动,而第二个后处理器则使用直角坐标来定义每个线性移动。
Note:更多信息详见后处理器章节。
你可通过脚本深度定制仿真流程。RoboDK API支持全自由度仿真配置,结合Python或内置示例脚本可显著提升仿真效果。
RoboDK默认安装Python及一组示例脚本,涵盖喷枪模拟、2D相机仿真、SVG文件转机器人程序、自动TCP校准、Python机器人编程、离散事件模拟等功能。此外还支持C#、C++、Matlab等语言,更多信息可参考RoboDK API部分。
本案例将加载现有脚本模拟喷枪喷涂效果。我们还将使用半透明的颜色标记喷枪的喷涂范围(在主菜单栏选择:工具➔改变颜色),或者将使用合适的颜色设置已有的喷枪模型(在本地library文件夹中的paint_gun.tool或者在线模型库中)。
Note:需要更新Set Tool指令关联新工具。
1.在菜单栏选择:文件➔
2.导航至 C:/RoboDK/Library/Macros/ 查看更多宏范例。
3.选择文件:SprayOn。
4.点击打开。一个Python项目
5.双击SprayOn ,进行测试。
6.选择On激活放仿真。
7.按下Alt键,拖拽机器人法兰,使机器人连同喷枪工具在物体表面上移动。
物体表面将出现喷枪的轨迹。喷漆颗粒的透明度将取决于TCP距离物体表面的距离。
按Esc键一次将清除仿真的喷漆。
8.双击同一个SprayOn程序并选择Off关闭喷漆颗粒仿真。

为了更好地理解该仿真的原理,可以根据以下步骤查看或编辑它的Python代码:
1.右键单击
2.在菜单中选择:编辑Python 脚本。
RoboDK已集成Python功能,文本编辑器将自动打开,并显示喷枪模拟程序的源代码。
按照以下步骤将喷枪仿真包括在主程序中:
1.右键单击指令:Call ApproachMove 。
2.在菜单中选择:添加指令➔
3.为这个指令命名:Call SprayOn(1)。
4.点击确认。
5.重复同样的操作,在CallPaintTop指令后添加Call SprayOn(0)指令,如下图所示。
可以通过拖拽的方式重新安排调用的顺序。
6.双击MainProg运行程序。循环运行两次后,将出现如下图中的运行结果(正常仿真速度)。

还可以创建新脚本:
1.在菜单栏选择:程序➔
2.右键点击新程序,并选择编辑Python脚本。
3.RoboDK支持在仿真程序中设置机器人运行速度,设置数字输出,数字输入等待,在控制器上显示提示信息等等。这些设置都在程序说明菜单中。