RoboDK API(应用程序接口)是RoboDK通过编程语言公开的一套例程和命令。通过 RoboDK API,您可以使用 C#、Python 或 C++ 等支持的编程语言对任何机器人进行编程。您还可以使用 RoboDK API 自动执行重复性任务。
与针对特定供应商的机器人编程相比,有了 RoboDK API,就可以使用独特/通用的编程语言(如 Python)对任何机器人进行模拟和编程。下页提供了使用 API 进行离线编程的概述和视频。
RoboDK API 适用于 Python、C#、C、C++、Visual Basic (.NET) 和 MATLAB。这些编程语言中的任何一种都可用于模拟任何机械臂并为其编程。
提示:不确定使用哪种程序语言?我们建议使用 Python!如果您使用默认设置安装了 RoboDK,那么您已经安装了 Python,可以开始使用了。Python 是一种广泛使用的通用高级编程语言。大多数RoboDK示例和文档都基于Python程序。
注:RoboDK 提供用户友好的图形用户界面 (GUI),用于模拟工业机器人并为其编程。使用图形用户界面对机器人进行仿真和编程并不需要编程经验。程序部分提供了更多有关使用图形用户界面为机器人编程的信息。另一方面,通过使用 RoboDK API,仿真和离线编程不受任何限制。
注:API 可以用任何编程语言实现。API 由 RoboDK 中的 TCP/IP 协议组成。当 RoboDK 运行时,它就像一个服务器,并通过 TCP/IP 协议公开一系列命令。
RoboDK API 可用于执行以下任务:
1.自动仿真创建宏,自动执行 RoboDK 模拟器中的特定任务,如移动物体、参考坐标系或机器人。
2.离线编程:用通用编程语言对优傲(Universal Robots)机器人进行离线编程。使用 API 时,RoboDK 将为特定机器人控制器生成特定程序(如 Python 或 C# 语言程序)。机器人程序是根据为特定机器人选择的后处理器生成的。本文档的 "使用 Python 离线编程 "部分提供了更多信息和示例。
3.在线程序设计:使用通用编程语言对优傲(Universal Robots)机器人进行在线编程:可以通过 RoboDK API 移动机器人并获取其当前位置。RoboDK 将使用机器人驱动器驱动机器人。本文档中的 "使用 Python 在线编程 "部分提供了更多信息和示例。
换句话说,用于模拟的同一程序(1)可用于生成机器人程序(2,离线编程)和实时移动机器人(3,在线编程)。
注:使用 RoboDK API 从通用编程语言创建机器人仿真时,机器人运动指令会在仿真准备就绪后自动用于离线生成程序。此外,如果使用机器人驱动器连接机器人,则同一程序可用于实时移动机器人。
本帮助文档涵盖以下主题:
●Python API(含仿真、离线编程和在线编程示例
●以模拟、离线编程和在线编程为例介绍C# API
●MATLAB API 与用于模拟的 Simulink 示例
●启动 RoboDK 的命令行选项
注:本文档不包括离线程序所需的后处理器。
注:本文档不包括在线编程所需的机器人驱动器。
小贴士从我们的官方 GitHub 存储库RoboDK API下载最新版本的。
Python 是一种广泛使用的通用高级编程语言。Python 是一种能让您更快地工作、更有效地集成系统的编程语言。与其他语言相比,Python 的语法允许程序员用较少的代码行表达概念,使其友好易学。
上一节介绍了将 RoboDK API 与 Python 等广泛使用的机器人编程语言结合使用的优势。
默认情况下,Python 已自动安装并与 RoboDK 集成。选择工具➔选项➔ 其他,更换默认设置(Python 位置和 Python 编辑器)。
提示:可以在RoboDK中使用任何文本编辑器,如记事本++或PyCharm(与默认使用的VSCodium、VScode或Python IDLE相反)。在 "选项 "菜单的 "Python "选项卡中输入首选文本编辑器的位置,如下图所示。
用于 Python 的 RoboDK API 分为以下模块:
●RoboDK 包是 Python API 的分布式入口点。它是所有子软件包和模块的共同父包。
●robolink 子模块(robolink.py)是 RoboDK 与 Python 之间的接口。RoboDK 站点树中的任何物体都可以使用 Robolink 物体进行检索,它由Item 物体表示。根据 Robolink.Item 类,可以对该项目执行不同的操作。
●robomath 子模块(robomath.py)是一个用于 Python 的机器人工具箱,可进行位姿变换操作,并获取不同机器人厂商的欧拉角。所有后处理器都依赖于该模块。
●robodialogs 子模块 (robodialogs.py) 是一个对话框工具箱。例如,打开和保存文件对话框、消息提示等。
●robofileio 子模块(robofileio.py)是一个文件操作工具箱。文件属性、CSV、FTP 等。
●roboapps子模块(roboapps.py)是一个RoboDK应用程序工具箱。有关小程序的更多信息,请点击此处:应用程序加载器。
您可以在 C:/RoboDK/Python/ 文件夹中找到 Python 模块。在 RoboDK 中运行 Python 程序和后处理器时,默认情况下会自动包含该文件夹(用作 PYTHONPATH)。
下文将分别介绍如何创建一个用于模拟、离线编程和在线编程的简单程序。更多示例请参见 RoboDK 的 Python API 页面。此外,RoboDK 资源库还附带了 Python 脚本示例,位于脚本和宏文件夹中,可在默认资源库(C:/RoboDK/Library/)中找到。
提示:脚本文件夹中的 Python 文件可以直接从 RoboDK 作为脚本执行,方法是选择工具➔ 运行脚本 (Shift+S)。
本例展示了如何使用 UR 机器人创建一个新站,并用机器人模拟六边形运动。
1.选择文件➔ 打开
2.打开UR10 机器人
3.选择文件➔ 打开
4.打开Paint_gun.tool 文件
5.从 C:/RoboDK/Library/Macros/ 打开 Python 示例程序SampleOfflineProgramming.py
提示:有关设置 RoboDK 工作站的更多信息,请参阅 "入门 "部分。
提示:选择程序➔ 添加 Python 程序,创建新的 Python 程序。
6.双击SampleOfflineProgramming 项目运行模拟。机器人应在当前位置周围绘制一个六边形,TCP 的轨迹将显示为黄色。
或者,右击程序,选择 Run Python Script(运行 Python 脚本)。
7.右键单击 SampleOfflineProgramming 项,选择编辑 Python 脚本。我们应该可以看到如下图所示的程序。
SampleOfflineProgramming 宏将在机器人的当前位置,相对于机器人参考坐标系,绘制一个边长为 n_sides、半径为 R 的多边形。如果需要,可将机器人移动到其他位置,改变多边形的尺寸,然后重新运行程序。
此示例与网站离线编程部分显示的程序类似(包含视频)。
提示:可以从 Python 编辑器中运行程序,方法是选择运行➔ Run。这时会出现一个新窗口,显示所有打印命令或任何错误。
可以使用模拟机器人时使用的相同 Python 代码离线生成 Python 程序(如前面的 Python 模拟部分所示)。离线编程可以生成可在特定机器人控制器上执行的机器人程序:
1.右键单击 Python 程序
2.选择生成机器人程序 (F6)
在这种情况下,程序不是模拟出来的,而是快速执行后得到的结果:机器人控制器专用的机器人程序。
小贴士右键单击机器人,选择 "选择后处理器",为离线编程指定不同的后处理器(如后处理器部分所示)。
注:"生成机器人程序 "选项将自动把 RDK/Robolink 连接的运行模式设置为 RUNMODE_MAKE_ROBOTPROG。换句话说,如果在 RoboDK 的图形用户界面之外执行 Python 程序,就有可能以编程方式生成供应商专用程序,而不是模拟该程序。例如
RDK = Robolink()
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)
Python 程序可以直接在机器人上执行,使用与模拟机器人相同的 Python 代码(如 Python 模拟部分所示)。在线编程可以使用机器人驱动器在特定的机器人控制器上运行通用程序:
1.右键单击 Python 程序
2.选择在机器人上运行
在执行 Python 程序时,程序将在机器人上运行。
重要信息: 使用机器人驱动器(右键单击机器人,然后选择连接至机器人...)时,需要在电脑和机器人之间建立连接。更多信息,请参阅 "机器人驱动器 "部分。
注:"在机器人上运行 "选项将自动把 RDK/Robolink 连接的运行模式设置为 RUNMODE_RUN_ROBOT。换句话说,可以在 RoboDK 的图形用户界面之外运行机器人运动命令。例如
RDK = Robolink()
RDK.setRunMode(RUNMODE_RUN_ROBOT)
提示:C:/RoboDK/Library/Macros/ 文件夹中的宏 SampleOnlineProgramming.py 提供了一个完整的示例,可使用 Python 模拟部分中使用的相同六边形路径进行测试。
注:有关通过 API 使用机器人驱动器的更多信息,请参阅 "机器人驱动器部分 "。
如果您在安装 Python 之后才安装 RoboDK,RoboDK 可能无法正确运行 Python 脚本或生成程序。本节介绍了在RoboDK中正确设置Python解释器并顺利运行Python脚本所应遵循的步骤。
如果出现以下错误信息,请执行这些步骤:"在工具-选项-Python 中设置 Python 解释器的路径 "或 "运行 Python 脚本失败。设置 Python 解释器的路径:工具-选项-Python 选项卡中设置 Python 解释器的路径"。
注:在 Windows 上安装 RoboDK 时,默认情况下应已安装 Python。如果没有安装 Python,则应从 Python 网站下载并安装。任何 Python 版本都可以使用(建议使用最新版本)。
如果已经安装了 Python,请按照以下步骤正确设置 Python 解释器路径:
1.在 Windows 上选择 "开始 "菜单,然后输入 Python。
2.右击要与 RoboDK 一起使用的 Python 版本,选择 "打开文件位置"。
在打开的文件夹上重复此步骤:
3.右键点击 Python 3.7,选择 "打开文件位置"。
4.在路径标题栏中选择复制路径。
在 RoboDK 设置中提供 Python 路径:
5.打开 RoboDK。
6.选择工具-选项。
7.选择 Python 选项卡。
8.在 Python 解释器箱中粘贴路径,添加 /python.exe,如下图所示。使用正斜杠或反斜杠都可以。
C# 版 RoboDK API 是一个 RoboDK.cs 源文件,其中包含 RoboDK 类(类似于 Python 的Robolink 类)、RoboDK.Item 类(类似于 Python 的Robolink.Item 类 API),以及用于机器人技术的其他工具,如用于矩阵操作的矩阵类(RoboDK.Mat),以便对位姿变换进行操作。
C#(发音为 "C sharp")是微软公司开发的一种编程语言,设计用于构建在.NET 框架上运行的各种应用程序。C# 语言简单、功能强大、类型安全且面向对象。本文档的主要部分介绍了将 RoboDK API 与 C# 等广泛使用的编程语言一起用于机器人编程的优势。
RoboDK API for C# 提供了一个示例项目,如下图所示(包含完整源代码)。也可以将其作为一个 NuGet 打包,集成到任何 .Net 项目中。
选择 "加载文件",打开 RoboDK 工作站或 RoboDK 支持的任何其他文件。如果加载了机器人,ROBOT 变量将相应更新(与使用 "选择机器人 "相同)。
视频以下视频展示了使用 RoboDK API https://www.youtube.com/watch?v=3I6OK1Kd2Eo 的 C# 示例项目概览。
注意:加载和运行示例项目需要 Microsoft Visual Studio。Visual Studio Community(Express)版本是免费的。
提示:本 C# 示例的最新版本可在此处获取。
使用机器人指令(如 MoveJ、MoveL 或 setDO)时,C# 程序默认为模拟模式。启动示例 C# 项目时,也会默认选择模拟模式。
这意味着将在 RoboDK 中模拟机器人的运动。例如,我们可以选择右侧的按钮(+Tx、-Tx......),以 10 毫米为单位移动机器人,也可以选择运行测试程序,围绕机器人当前位置运行六边形运动。
设置任意断点,调试程序并检视机器人目标。机器人目标可以定义为关节坐标或 Mat 变量(4x4 位姿矩阵),可以 XYZWPR 格式对其进行检视,以排除程序问题。有关参考坐标系的更多信息,请参阅参考坐标系部分。
还可以将运行模式更改为脱机程序或联机程序(在机器人上运行),如以下章节所示。
可以使用模拟机器人所用相同 C# 代码离线生成 C# 程序(离线编程)。请按照以下步骤测试该功能:
1.在运行模式部分选择脱机程序
2.选择 "运行测试程序 "或任何其他动作组合
3.选择 "生成程序",获取供应商专用的机器人程序
在这种情况下,程序不是模拟运行,而是快速执行,以获得结果:机器人控制器专用的机器人程序。程序生成后,运行模式将变回模拟模式。
小贴士右键单击机器人,选择 "选择后处理器",为离线编程指定不同的后处理器(如后处理器部分所示)。
注意:当离线编程模式激活时,机器人将不会移动,因为这会将运行模式更改为 RUNMODE_MAKE_ROBOTPROG,如 Python OLP 部分所示。
C# 程序可直接在机器人上执行,使用与仿真相同的 C# 代码。在线编程允许使用机器人驱动器在特定机器人控制器上运行通用程序。请按照以下步骤使用 C# 示例项目测试该功能:
1.在运行模式部分选择在机器人上运行
2.选择能让机器人移动的其他命令
动作将在真实机器人上运行,模拟器将与机器人同步动作。
重要信息: 使用机器人驱动器(右键单击机器人,然后选择连接至机器人...)时,需要在电脑和机器人之间建立连接。更多信息,请参阅 "机器人驱动器 "部分。
注: RDK/Robolink 连接的运行模式改为 RUNMODE_RUN_ROBOT,以便在机器人上执行动作。例如
RDK = Robolink();
RDK.setRunMode(RUNMODE_RUN_ROBOT);
提示:C:/RoboDK/Library/Macros/ 文件夹中的 SampleOnlineProgramming.py 宏提供了一个在 RoboDK 图形用户界面外进行在线编程的 Python 示例。
注:有关通过 API 使用机器人驱动器的更多信息,请参阅 "机器人驱动器部分 "。
MATLAB 是一种由 MathWorks 公司开发的专有程序语言。除其他功能外,MATLAB 还可进行矩阵操作、绘制函数和数据图以及执行算法。RoboDK 是 MathWorks Connections 程序合作伙伴的官方。
适用于 MATLAB 的 RoboDK API 以脚本文件(m-files)的形式提供,可在此处获取:
●在 RoboDK 的安装文件夹中,通常为 C:/RoboDK/Matlab/。
●在 MathWorks MATLAB Central 上。
●在RoboDK API GitHub 上。
本文档的主要部分介绍了将 RoboDK API 与广泛使用的编程语言(如 MATLAB)一起用于机器人编程的优势。
适用于 MATLAB 的 RoboDK API 包括
●Robolink.m 是一个与 RoboDK 接口的类。RoboDK 站树中的任何物体都可以使用 Robolink 对象来检索,它由 RobolinkItem 对象(与 Python 的Robolink 类相同)来表示。
●RobolinkItem.m是一个类,代表了站树中的一个RoboDK项目。可以对该项目执行不同的操作(与 Python 的Robolink.Item 类相同)。
●transl.m、rotx.m、rotty.m 和rotz.m 是给定 XYZ 平移向量或沿特定轴旋转的函数,用于创建位姿矩阵。
●Pose_2_XYZRPW.m 和XYZRPW_2_Pose.m 允许将位姿转换为 XYZ 位置和 RPW 欧拉角,反之亦然。更多信息请参阅参考坐标系部分。
下页介绍了 RoboDK MATLAB API 的多个示例,如操作物品、生成机器人程序和控制机器人:
https://robodk.com/Matlab-API
我们提供了一个 Simulink 项目作为示例。在模拟中,机器人沿着任意生成的一组 XYZ 坐标移动。
视频以下视频展示了模拟运行的结果:
https://www.youtube.com/watch?v=7DDBMwa0-Oc
本节介绍启动 RoboDK 时可用的命令行选项。命令行选项也可以使用 API 的 Command 函数传递。
本节显示了一些相关命令,可帮助您自定义RoboDK的启动方式。选择 "工具"-"运行脚本"-"显示命令",可显示启动RoboDK时可使用的其他命令。
下面的调用表示对 RoboDK 的通用调用,并带有一些参数:
RoboDK.exe -[option1] -[option2] open_fileA -[option3] open_fileB ...
RoboDK 支持的所有文件格式都可以作为参数提供。包括以下格式
●RDK ➔RoboDK 站文件:该文件在一个文件中包含整个项目,包括任何依赖项(机器人、工具、NC 文件......)。
●机器人➔机器人文件:加载机器人文件还将为该机器人创建参考坐标系。
●工具➔工具文件:自动附加到最后添加的机器人插件上。
●stl/wrl/step/stp/iges/igs/sld➔物体(三维几何体):物体可轻松转换为工具。
●apt/gcode/cnc➔ NC 程序文件:RoboDK 自动准备铣削项目 (Utilities➔ Milling Project)。
提示:机器人加工文件(如 NC 文件)将自动链接到 RoboDK 工作站中的激活参考系和工具参考系。您可以在此处的 BAT 文件中找到一些加载机器人加工 NC 文件的示例:C:/RoboDK/Other/Plugin-Mecsoft.
注:通过传递一些参数,可以从 API 启动 RoboDK。使用 Python API 的示例:
RDK = Robolink(args= '-ADDFRAME "-RENAME=Main Ref " load_object.stl')
下面列出了一些可用的命令行选项:
-NOSPLASH
删除 RoboDK 启动时的闪屏图像。
-隐藏
隐藏 RoboDK。您需要使用 API 来显示 RoboDK。
-NEWINSTANCE
强制启动 RoboDK 的新实例。
-端口=20501
强制 API 通过指定端口(TCP/IP 协议)进行通信。默认端口为 20500。
-EXIT_LAST_COM
当不再有与 RoboDK API 通信的实例时,关闭 RoboDK。
-DEBUG
在 bin 文件夹中创建 RoboDK.debug.txt 文件,以便调试程序。
-斯基皮尼
跳过自定义用户设置。
-SKIPMAINT
跳过维护更新弹出窗口。在维护到期前一个月,RoboDK 可能会在启动时弹出阻止更新许可证的弹窗。此参数允许您将此警告静音。
-SETTINGS=文件路径
从文本文件加载参数。该文本文件的每一行都被视为一个参数。
-NOSHOW
在 RoboDK 加载文件和更新程序时,隐藏所有窗口。
-无窗口
隐藏通常在加载 NC 文件时自动显示的所有窗口。
-NOUI
在没有用户界面(窗口和 3D 视图)的情况下启动 RoboDK。使用此选项可在后台使用 API 运行 RoboDK。如果显示 RoboDK,则无法看到 3D 视图。
-tree_state= -1
不要展示车站树。
-TREE_STATE 6=
显示停靠在窗口左侧且不透明的站台树。
-ADDFRAME
添加一个新的参考坐标系。任何载入的新物体都将置于该参考坐标系中。
-重置
强制要求如果加载新物体,则将其置于站参考坐标系(而不是最后添加的坐标系)。
-RENAME=名称
更改最后添加的参考坐标系或物体的名称。
-MOVE=x;y;z;rx;ry;rz
移动最后添加的参考坐标系(单位:毫米和度)。
-update_apt=是
将覆盖具有相同 APT 文件的任何机器加工项目
-UPDATE_APT=否
不会覆盖任何机器加工项目(如果名称匹配,则会创建重复项目)。
-UPDATE=file.apt
加载或更新 APT 文件,如果没有问题,则生成机器人程序。
-replace_items=是
当加载新文件且名称匹配时,更新现有工具和物体。
-replace_items=否
加载新文件时,绝不覆盖工具和物体。
-SETCOLOR=蓝色
设置最后加载的物体(物体、工具、机器人或机械结构)的颜色。颜色可以是已命名的颜色或十六进制颜色(如 #RRGGBBAA,示例:#88112288)。
注意:单击无法选择透明度超过 50% 的物体。
-AUTOGEN_MAINPROG=Prog
生成一个主程序,按顺序调用与加载的 APT 文件链接的程序。
-SELECTTOOL=#1(选择工具
将第一个可用的机器人工具(或相应编号)设为激活工具(加载新程序时使用的工具)。
-SELECTTOOL= "工具名称"
使用名称匹配选择激活工具。
-ADDCUTTER=length|path/cutter name.stl
Addcutter 可以添加刀具与工具夹具之间的几何关系。在 RoboDK 中,刀具被视为工具,持有刀具的几何体。刀具的几何图形必须是一个 STL 文件(ASCII 或二进制),原点位于工具的顶端。相对于刀柄的长度必须以毫米为单位(刀柄的正 Z 轴必须指向外部)。
-SELECTCUTTER= "切割机名称"
Selectcutter 的效果与 SELECTTOOL 相同,刀具被视为工具。
-显示
显示 RoboDK 窗口。在加载所有文件并更新机器加工项目后自动完成。
使用以下选项之一将改变 -SHOW 命令所引起的可见性。
-退出
如果没有错误信息,则退出程序。
-结束
即使有任何错误信息,也会退出程序。