后处理器是离线编程中的关键步骤,因为它们可以为特定的机器人控制器生成机器人程序。机器人编程必须遵循特定于供应商的编程规则,这些规则在后处理器中实现。机器人后处理器定义必须如何为特定机器人控制器生成机器人程序。
从RoboDK模拟到特定机器人程序的转换由后处理器完成。每个机器人都链接到一个后处理器,后者将定义一个特定的机器人编程风格。离线生成程序时使用后处理器,如“ 生成程序”部分所示(右键单击程序,然后选择“生成机器人程序”)。
RoboDK附带了许多后处理器,支持许多机器人控制器,列在可用后处理器部分。或者,可以创建定制的后处理器或修改现有的后处理器。所有可用的后处理器都在文件夹中:
C:/RoboDK/Posts/
一个后处理器是PY文件(每个后处理器由Python脚本定义)。可以手动添加,修改或删除RoboDK 的Posts文件夹中的文件。如果您已经提供了RoboDK后处理器(PY文件),它应该放在Posts文件夹中,以便可以从RoboDK中选择它。
本节介绍如何选择,编辑或创建后处理器,并将其与RoboDK中的机器人配合使用。以下视频中提供了快速介绍:https://www.robodk.com/help#PostProcessor
重要提示:默认情况下,每个机器人都有一个特定的后处理器。默认选择可能无法为特定机器人控制器生成适当的程序。在这种情况下,需要为正确的机器人控制器选择后处理器。
要为机器人选择特定的后处理器:
1。右键单击机器人或程序
2。选择选择后处理器
3。从列表中选择一个后处理器
4。选择确定。
作为替代方案,还可以通过以下步骤选择后处理器:
1。打开机器人面板(双击机器人)
2。选择参数
3。在Robot品牌框中选择您的后处理器,如下图所示。
提示:通过双击C:/ RoboDK / Posts /文件夹中的PY文件,可以快速预览每个后处理器的输出。
修改后处理器
可以修改现有的后处理器或创建新的后处理器。后处理器必须放在文件夹C:/ RoboDK / Posts /中,以便可以在RoboDK中选择它们。上一节介绍如何将特定机器人链接到后处理器。
每个后处理器都是一个PY文件。可以从/向C:/ RoboDK / Posts /文件夹重命名文件或复制文件以共享不同的后处理器。要删除现有的后处理器脚本,只需删除Posts文件夹中相应的PY文件即可。
可以使用任何文本编辑器或Python编辑器(Python IDLE)编辑后处理器。使用Python编辑器可以快速调试和评估文件末尾的示例程序。
要修改现有的后处理器:
1。选择程序➔添加/编辑后处理器
2。选择现有的后处理器
3。选择确定。将打开一个文本编辑器和程序。
4。选择运行➔ 运行模块(F5)以预览结果。必要时进行任何更改。
或者,可以手动编辑后处理器:
1。转到后处理器文件夹:C:/ RoboDK /Posts/
2。使用Python IDLE打开PY文件(右键单击➔使用IDLE编辑)或其他文本编辑器
3。进行所需的更改
4。运行该文件以测试结果:从Python IDLE中选择运行➔Run模块(默认情况下为F5)。
或者,可以使用文本编辑器编辑此文件,然后通过双击将其与Python一起运行。
修改实例
例如,将对现有的ABB和KUKA后处理器进行以下更改:
● 使用关节角度信息设置关节运动以生成运动命令。
● 将最大速度覆盖为500 mm / s。即使机器人被编程为移动得更快,后处理器的速度也将限制在500 mm / s。
●将 每个程序生成为单独的文件,并强制程序最多每个程序有3000行代码。大型程序将被分成较小的程序并按顺序调用。
上一节介绍了如何打开现有的后处理器进行编辑:
1。选择程序➔添加/编辑后处理器
2。选择您的后处理器。例如,对于KUKA KRC4,请选择KUKA_KRC4。
3。选择确定。后处理器将显示在Python IDLE编辑器中。
以下部分显示如何在文本编辑器(或Python IDLE)上进行建议的更改。
使用关节角度施加运动
以下步骤说明如何修改现有的后处理器以使用关节角度强制轴向移动。在此示例中,我们将展示如何将此更改应用于ABB IRC5机器人控制器。
1。查找特定机器人控制器的编程手册。在本例中,我们使用ABB IRC5 RAPID编程手册。
2。寻找关节运动指令。在这种情况下,ABB的绝对联合运动命令称为MoveAbsJ。此命令需要一个用于定义关节轴的jointtarget变量。
3。选择程序➔添加/编辑后处理器,然后选择您当前使用的后处理器进行修改。如果您当前正在使用可自定义的后处理器,则默认情况下将选中它。
4。您应该在后处理器中查找MoveJ函数。此函数定义后处理器生成关节运动命令的方式。或者,RoboDK使用MoveL进行线性运动。使用Python编程语言,修改添加到程序文件中的行以提供关节角度信息,如下图所示。
5。最后,您可能需要修改后处理器将关节角度或姿势转换为字符串的方式。函数angles_2_str和pose_2_str分别定义关节角度和姿势如何转换为文本。
大多数RoboDK后处理器使用关节运动的联合数据和线性运动的笛卡尔坐标。建议始终将一系列线性运动中的第一个点作为关节运动开始,指定关节坐标。这避免了使用错误的机器人配置启动程序并达到奇点或轴限制
注意:默认情况下,所有RoboDK后处理器都链接到robodk.py模块。该模块包括许多机器人控制器从姿势转换为欧拉角的有用工具。使用与机器人控制器对应的符号;
注意:不止一个机器人制造商可以使用相同的欧拉角表示法。例如,Fanuc与莫托曼都使用相同的X ➔ ý ➔ Z语言,史陶比尔和Mecademic使用相同的X ➔ Y” ➔ Z‘’记法等。
重要提示:如果使用姿势指定运动(例如,使用笛卡尔坐标和欧拉或四元数信息),机器人将获得的位置将取决于活动工具和参考框架。必须在程序中正确指定工具和参考框架的姿势。这分别通过setTool和setFrame函数完成。
强制限速
按照以下步骤设置速度限制为500 mm / s,并避免使用RoboDK设置更高的速度。在这个例子中,我们假设我们使用的是KUKA KRC2或KRC4控制器:
1。找到setSpeed函数定义(def setSpeed)
2。在生成$ VEL.CP输出之前添加以下代码,该输出将以m / s为单位更改速度:
speed_mms = min(speed_mms,500)
注意:默认速度为200 mm / s,在后处理器顶部的HEADER变量中定义($ VEL.CP = 0.2)。如果未从RoboDK修改速度,也可以更改此默认速度。
每个文件生成一个程序
添加以下更改以避免每个文件添加多个程序并生成最多包含3000行代码的程序:
1。将变量MAX_LINES_X_PROG设置为3000
2。将变量INCLUDE_SUB_PROGRAMS设置为False
注意:如果从RoboDK 程序选项菜单中指定了每个程序的最大行数,则可以覆盖变量MAX_LINES_X_PROG 。修改后处理器的__init__部分以避免从RoboDK设置更改此变量。
可用的后处理器:
KUKA_IIWA:用于Java中的KUKA IIWA日出编程
● KUKA_KRC2:适用于KUKA KRC2机器人控制器
● KUKA_KRC2_CamRob:适用于KUKA CamRob铣削选项
● KUKA_KRC2_DAT:适用于KUKA KRC2机器人控制器,包括DAT数据文件
● KUKA_KRC4:适用于KUKA KRC4机器人控制器
● KUKA_KRC4_Config:适用于KUKA KRC4机器人控制器,每行配置数据
● KUKA_KRC4_DAT:适用于KUKA KRC4机器人控制器,包括DAT数据文件
**
RoboDK API(应用程序接口)**是RoboDK通过编程语言公开的一组例程和命令。RoboDK API允许您使用受支持的编程语言(如C#,Python或C ++)对任何机器人进行编程。
与特定于供应商的机器人编程相比,使用RoboDK API可以使用独特/通用编程语言(如Python)模拟和编程任何机器人。主页面提供概述和显示使用API进行离线编程的视频。
RoboDK API可用于Python,C#,C ++,Visual Basic(.NET)和Matlab。这些编程语言中的任何一种都可用于模拟和编程任何机器人。
提示:您不确定要使用哪种编程语言?我们建议使用Python!如果您使用默认设置安装了RoboDK,那么您已经安装了Python,并且您已准备好开始使用。Python是一种广泛用于通用编程的高级编程语言。大多数RoboDK示例和文档都基于Python程序。
注意: RoboDK提供用户友好的图形用户界面(GUI)来模拟和编程工业机器人。使用GUI模拟和编程机器人不需要编程经验。“ 程序”部分提供了有关使用GUI编程机器人的更多信息。另一方面,通过使用RoboDK API,模拟和离线编程没有限制。
注意: API可以用任何编程语言实现。API由RoboDK中实现的TCP / IP协议组成。当RoboDK运行时,它的行为类似于服务器,它通过TCP / IP协议公开一组命令。
RoboDK API可用于以下任务:
自动化模拟:创建宏以自动执行RoboDK模拟器中的特定任务,例如移动对象,参考框架或机器人。
离线编程:使用通用编程语言离线编程机器人。当使用API时,RoboDK将为特定的机器人控制器生成特定的程序(例如Python或C#中的程序)。根据为特定机器人选择的后处理器生成机器人程序。该离线编程与Python本文第四部分提供了更多的信息和示例。
在线编程:使用通用编程语言在线编程机器人:可以移动机器人并从RoboDK API检索其当前位置。RoboDK将使用机器人驱动程序驾驶机器人。本文档中的在线编程与Python部分提供了更多信息和示例。
换句话说,用于模拟(1)的相同程序可用于生成机器人程序(2,离线编程)并实时移动机器人(3,在线编程)
注意:使用RoboDK API从通用编程语言创建机器人模拟时,机器人运动命令会在模拟准备就绪时自动用于离线生成程序。此外,如果使用机器人驱动器连接机器人,则可以使用相同的程序实时移动机器人
本文档包含以下主题:
● 在Python的API与仿真,离线编程和在线编程实例
● 在C#API与仿真,离线编程和在线编程实例
● 带有Simulink仿真的Matlab API
● 用于启动RoboDK 的命令行选项
用于Python的RoboDK API分为以下两个模块:
● 该robolink模块(robolink.py):将robolink模块是RoboDK和Python之间的接口。可以使用Robolink对象检索RoboDK工作站树中的任何对象,它由Item对象表示。可以根据Robolink.Item类对该项执行不同的操作。
● 该robodk模块(robodk.py):将robodk模块是一个机器人工具箱用于Python允许与姿势转换操作,将获得欧拉角对于不同的机器人供应商。所有后处理器都依赖于这个robodk模块。
Python模块位于文件夹C:/ RoboDK / Python /中,当安装RoboDK或选择Set default Python settings时,它们会自动复制到Python文件夹路径(参见上图)。
以下小节分别介绍了如何创建用于模拟,离线编程和在线编程的简单程序。RoboDK页面的Python API中提供了更多示例。此外,RoboDK库在文件夹C:/ RoboDK / Library / Macros /中附带了示例Python宏。
Python模拟
按照以下步骤使用UR机器人设置示例项目,并使用机器人模拟运动。
1。选择文件➔ 打开
2。打开UR10机器人
3。选择文件➔ 打开
4。打开Paint_gun.tool文件
5。从C:/ RoboDK / Library / Macros / 打开示例Python程序SampleOfflineProgramming.py
6。双击SampleOfflineProgramming项以运行模拟。机器人应在机器人的当前位置周围绘制六边形,TCP的轨迹将以黄色显示。
或者,右键单击该程序并选择“运行Python脚本”。
7。右键单击SampleOfflineProgramming项并选择Edit Python Script。我们应该看到如下图所示的程序。
SampleOfflineProgramming宏将相对于机器人参考系在机器人的当前位置绘制侧边n_sides和半径R的多边形。如果需要,将机器人移动到更改多边形尺寸的其他位置并重新运行程序。
Python OLP
可以使用用于模拟机器人的相同Python代码离线生成Python程序(如前面的Python Simulation部分所示)。离线编程允许生成可在特定机器人控制器上执行的机器人程序:
1。右键单击Python程序
2。选择生成机器人程序(F6)
这种情况下,程序不是模拟的,而是快速执行以获得结果:特定于机器人控制器的机器人程序。
注意: “ 生成机器人程序”选项将自动将RDK / Robolink连接的RunMode设置为RUNMODE_MAKE_ROBOTPROG。换句话说,如果Python程序在RoboDK的GUI之外执行,则可以以编程方式生成特定于供应商的程序,而不是模拟它。例如
RDK = Robolink()
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG )
Python在线编程
可以使用用于模拟机器人的相同Python代码在机器人上直接执行Python程序(如Python Simulation部分所示)。在线编程允许使用机器人驱动程序在特定机器人控制器上运行通用程序:
1。右键单击Python程序
2。选择在机器人上运行
程序将在执行Python程序时在机器人上运行。
重要提示:使用Robot Drivers需要PC和机器人之间的连接(右键单击机器人,然后选择Connect to robot …)。在更多信息机器人驱动程序部分。
注:在对机器人运行选项将自动设置RunMode该RDK / Robolink连接RUNMODE_RUN_ROBOT的。换句话说,可以在RoboDK的GUI之外运行机器人运动命令。例如:
RDK = Robolink()
RDK.setRunMode(RUNMODE_RUN_ROBOT )
提示: C:/ RoboDK / Library / Macros /文件夹中的宏SampleOnlineProgramming.py提供了一个完整的示例,使用Python模拟部分中使用的相同六边形路径对其进行测试。
C#API
用于C#的RoboDK API是一个RoboDK.cs源文件,其中包含RoboDK类(类似于Python的Robolink类),RoboDK.Item类(类似于Python的Robolink.Item类API),以及其他用于机器人的工具,如Matrix class(RoboDK.Mat)用于矩阵运算以使用姿势变换进行操作。
C#(发音为“C sharp”)是Microsoft开发的一种编程语言,用于构建在.NET Framework上运行的各种应用程序。C#简单,功能强大,类型安全,面向对象。本文档的主要部分解释了使用RoboDK API和广泛使用的编程语言(如C#)进行机器人编程的优势。
用于C#的RoboDK API提供了一个示例项目,如下图所示(包括完整的源代码)。也可以将它用作NuGet包,将其集成到任何.Net项目中。
选择加载文件以打开RoboDK站或RoboDK支持的任何其他文件。如果加载机器人,则ROBOT变量将相应更新(与使用选择机器人相同)。
Microsoft Visual Studio需要加载和运行示例项目。Visual Studio社区(Express)版本是免费的。
Matlab API
用于Matlab的RoboDK API可在RoboDK安装文件夹中找到。通常在C:/ RoboDK / Matlab /中找到。用于Matlab的RoboDK API是作为一组m个文件提供的。
Matlab是MathWorks开发的专有编程语言。除其他外,MATLAB允许矩阵操作,函数和数据的绘图以及算法的实现。
本文档的主要部分解释了使用RoboDK API和广泛使用的编程语言(如Matlab)进行机器人编程的优势。
用于Matlab的RoboDK API包括:
● Robolink.m是一个与RoboDK连接的类。可以使用Robolink对象检索RoboDK工作站树中的任何对象,它由RobolinkItem对象表示(与Python的Robolink类相同)。
● RobolinkItem.m是一个表示工作站树中RoboDK项的类。可以对该项执行不同的操作(与Python的Robolink.Item类相同)。
● transl.m,rotx.m,roty.m和rotz.m是在给定XYZ平移向量或沿特定轴旋转的情况下创建姿势矩阵的函数。
● Pose_2_XYZRPW.m XYZRPW_2_Pose.m允许将姿势转换为XYZ位置和RPW欧拉角,反之亦然。参考框架部分中的更多信息。
示例代码位于以下页面:https://robodk.com/Matlab-API
以Simulink项目为例。在模拟中,机器人沿着任意生成的一组XYZ坐标移动。
命令行选项
本节介绍RoboDK启动时可用的命令行选项。也可以使用API的Command函数传递命令行选项。
以下调用表示带有一些参数的泛型调用:
RoboDK.exe - [option1] - [option2] open_fileA - [option3] open_fileB …
RoboDK支持的所有文件格式都可以作为参数提供。包括以下格式:
● RDK➔RoboDK工作站文件:该文件将整个项目保存在一个文件中,包括任何依赖项(机器人,工具,NC文件…)。
● 机器人➔机器人文件:加载机器人文件也会为该机器人创建参考框架。
● 工具➔工具文件:自动连接到最后添加的机器人。
● stl / wrl / step / stp / iges / igs /sld➔对象(3D几何):可以轻松地将对象转换为工具。
● apt / gcode /cnc➔NC程序文件:RoboDK自动准备铣削项目(Utilities➔MillingProject)。
重要事项: NC文件将链接到RoboDK站中的活动参考框架和工具参考框架
注意:可以通过传递一些参数从API启动RoboDK。使用Python API的示例:RDK = Robolink(args =’ - ADDFRAME“-RENAME = Main Ref”load_object.stl’)