RoboDK API

RoboDK API(应用程序接口)由一系列程序和命令组成,它支持开发人员使用多种编程语言来操作机器人。借助RoboDK API,你可以使用这些编程语言(如C#、Python或C++)为任何机器人编程。你还可以通过RoboDK API实现重复性任务的自动化处理。

与厂商特定的机器人编程相比,RoboDK API允许使用统一的编程语言(如Python)来仿真和编程任何机器人。下页提供了使用 API 进行离线编程的概述和视频。

RoboDK API支持Python、C#、C、C++、Visual Basic (.NET)及MATLAB等多种编程语言,用户可任选其一进行机械臂的仿真与编程。

Tip:不确定该选用哪种编程语言?我们推荐使用Python!若你使用默认设置安装RoboDK,则已经自带Python环境,可立即开始编程。Python是一种广泛使用的高级通用编程语言,绝大多数RoboDK示例程序及技术文档均基于Python编写。

Note::RoboDK提供用户友好的图形用户界面(GUI)用于仿真和编程工业机器人。使用该界面进行机器人仿真与编程无需编程经验。通过程序章节可获取更多关于GUI编程的详细信息。借助RoboDK API,用户将获得仿真与离线编程的无限可能性。

Note:该API可采用任何编程语言实现。该API基于RoboDK中实现的TCP/IP协议,当RoboDK运行时其作为服务器,通过TCP/IP协议对外提供一系列命令接口。

RoboDK API 可用于执行以下任务:

1.自动化仿真:创建宏后就可以自动完成在RoboDK仿真器内的一些特定任务,例如移动对象、参考坐标或者机器人。

2.使用通用编程语言离线编程该机器人:可以通过RoboDK API为特定的机器人控制器生成特定的编程程序(如Python或C#)。机器人程序是根据为特定机器人选择的后置处理器后处理器而生成的。更多相关示例和信息请参见Python离线编程使用Python离线编程部分。。

3.在线编程:使用通用编程语言对优傲(Universal Robots)机器人进行在线编程:可以通过 RoboDK API 移动机器人并获取其当前位置。RoboDK 将使用机器人驱动器驱动机器人。本文档中的使用 Python 在线编程部分提供了更多信息和示例。

总的来说,用于仿真(1)的程序也可以用于生成机器人程序(2,离线编程),并可以实现实时移动机器人(3,在线编程)。

Note:当通过使用RoboDK API的泛型程序设计语言创建一个机器人仿真时,机器人运动指令就会在仿真准备好的时候自动生成线下程序。此外,如果机器人通过机器人驱动器连接,则可以使用相同的程序实时移动机器人。

本帮助文档涵盖以下主题:

Python API(含仿真、离线编程和在线编程示例)

以仿真、离线编程和在线编程为例介绍C# API

MATLAB API 与用于模拟的 Simulink 示例

启动 RoboDK的命令行选项

Note:本文档不包括离线程序所需的后处理器

Note:本文档不包括在线编程所需的机器人驱动器

Tip:从我们的官方GitHub仓库下载最新版本的RoboDK API

Python API

Python是一种广泛使用的高级通用编程语言。作为一门编程语言,Python能帮助开发者更高效地工作并实现系统集成。其语法设计使得程序员可以用比其他语言更少的代码行数表达概念,这种特性让Python显得友好且易于学习。

上一节介绍了介绍了RoboDK API配合通用编程语言Python进行机器人编程的优势。

Python会自动默认与RoboDK进行安装和集成。通过菜单选项卡中工具➔选项➔其他更改默认设置(Python路径和Python编辑器)。

Tip:RoboDK支持使用任意文本编辑器(如Notepad++或PyCharm),而非仅限于默认的VSCodium、VSCode或Python IDLE。您可以在选项菜单的Python选项卡中指定首选文本编辑器的路径,如下图所示。

RoboDK API - 图片 1

RoboDK的Python API分为以下模块:

RoboDK 包是Python API的分布式入口点,它是所有子包和模块的共同父级。

robolink 子模块(robolink.py)是RoboDK与Python之间的接口。通过Robolink对象可以获取RoboDK工作站树中的任何对象,这些对象均由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库在默认库文件夹(C:/RoboDK/Library/)中的"Scripts and Macros"目录下提供了示例Python脚本。

Tip:Scripts文件夹中的Python文件可以通过在RoboDK中选择工具➔运行脚本(Shift+S)直接作为脚本执行。

Python 仿真

本例展示了如何使用 UR 机器人创建新的工作站,并用机器人仿真六边形运动。

1.选择文件➔RoboDK API - 图片 2 打开

2.打开UR10 机器人

3.选择文件➔RoboDK API - 图片 3 打开

4.打开Paint_gun.tool 文件

5.从 C:/RoboDK/Library/Macros/ 打开 Python 示例程序SampleOfflineProgramming.py

Tip:有关设置 RoboDK 工作站的更多信息,请参阅入门指南章节。

Tip:选择程序➔RoboDK API - 图片 4 添加 Python 程序,创建新的 Python 程序。

6.双击SampleOfflineProgramming 项目运行仿真。机器人应在当前位置周围绘制一个六边形,TCP 的轨迹将显示为黄色。         
或者,右击程序,选择RoboDK API - 图片 5 运行Python脚本

7.右键单击RoboDK API - 图片 6 SampleOfflineProgramming 项,选择编辑 Python 脚本。我们应该可以看到如下图所示的程序。

SampleOfflineProgramming宏指令将在机器人当前位置绘制一个边数为n_sides、半径为R的多边形,该多边形相对于机器人参考坐标系。如需改变多边形尺寸,可将机器人移动至不同位置后重新运行程序。

此示例与网站离线编程部分显示的程序类似(包含视频)。

Tip:可以从 Python 编辑器中运行程序,方法是选择运行➔ Run。这时会出现一个新窗口,显示所有打印命令或任何错误。

RoboDK API - 图片 7

Python 离线编程

可以使用与机器人仿真相同的Python代码离线生成Python程序(如前面Python仿真所示)。离线编程能够生成可在特定机器人控制器上执行的程序:

1.右键单击RoboDK API - 图片 8 Python 程序

2.选择生成机器人程序 (F6)

在此情况下,程序并非通过模拟运行,而是快速执行以获取结果:一种专用于机器人控制器的机器人程序。

Tip:右键单击机器人,选择 "选择后处理程序",为离线编程选择不同的后处理器(如后处理器部分所示)。

RoboDK API - 图片 9

Note:"生成机器人程序"选项将自动把RDK/Robolink连接的运行模式设置为 RUNMODE_MAKE_ROBOTPROG。换句话说,如果Python程序在RoboDK图形用户界面之外执行,可以通过编程方式生成特定厂商的机器人程序,而非仅进行模拟。例如

RDK = Robolink()

RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)

Python 在线编程

Python程序可以直接在机器人上执行,使用的代码与模拟机器人时所用的Python代码相同(如Python仿真部分所示)。在线编程允许通过机器人驱动程序在特定机器人控制器上运行通用程序。

1.右键单击RoboDK API - 图片 10 Python 程序

2.选择“在机器人上运行”

随后程序就会在执行Python程序的时候运行该机器人。

Important:使用机器人驱动Robot Drivers需要连接PC和机器人(右键单击机器人,然后选择“连接到机器人…”)。更多相关信息请参见机器人驱动

RoboDK API - 图片 11

Note:在机器人上运行选项将自动把RDK/Robolink连接的运行模式设置为RUNMODE_RUN_ROBOT。换句话说,可以在 RoboDK 的图形用户界面之外运行机器人运动命令。例如

RDK = Robolink()

RDK.setRunMode(RUNMODE_RUN_ROBOT)

Tip:C:/RoboDK/Library/Macros/文件夹中的宏SampleOnlineProgramming.py提供了一个完整的示例,可使用Python仿真中使用的相同六边形路径进行测试。

Note:有关通过 API 使用机器人驱动器的更多信息,请参阅 "机器人驱动器部分 "。

Python故障排查

如果你是在安装Python之后安装RoboDK,RoboDK可能无法正确运行Python脚本或生成程序。本节介绍如何正确设置RoboDK中的Python解释器,以便顺利运行Python脚本。

如果出现以下错误信息“请执行这些步骤在工具-选项-Python 中设置 Python 解释器的路径"或 "运行 Python 脚本失败。设置 Python 解释器的路径:工具-选项-Python 选项卡中设置 Python 解释器的路径"。

Note:在Windows系统上安装RoboDK时,Python应默认已安装。如果尚未安装Python,请从Python网站下载并安装。任何Python版本均可使用(建议使用最新版本)。

如果已经安装了 Python,请按照以下步骤设置Python 解释器路径:

1.在 Windows 上选择 "开始 "菜单,然后输入 Python

2.右击要与 RoboDK 一起使用的 Python 版本,选择 "打开文件位置"。

RoboDK API - 图片 12

在打开的文件夹上重复此步骤:

3.右键点击 Python 3.13,选择 "打开文件所在的位置"。

RoboDK API - 图片 13

4.在路径标题栏中选择复制路径。

RoboDK API - 图片 14

在RoboDK设置中提供Python路径:

5.打开 RoboDK

6.选择工具-选项

7.选择 “Python” 选项卡。

8.Python 编译器中粘贴路径,添加 /python.exe,如下图所示。使用正斜杠或反斜杠都可以。

RoboDK API - 图片 15

C# API

RoboDK的C# API是一个名为RoboDK.cs的源文件,其中包含RoboDK类(类似于Python中的Robolink 类)、RoboDK.Item类(与Python的Robolink.Item类API相似),以及其他机器人工具,例如用于位姿变换矩阵运算的Matrix类(RoboDK.Mat)。

C#是由微软开发的一种编程语言,可以用于构建和运行在.NET Framework之上的各种应用程序。C#是简单、强大、类型安全、面向对象的高级程序设计语言。本文档的主要部分介绍了将 RoboDK API 与 C# 等广泛使用的编程语言一起用于机器人编程的优点。

C#版RoboDK API附带了一个示例项目(包含完整源代码),如下图所示。此外,你也可通过NuGet包将其集成到任意.NET项目中。

RoboDK API - 图片 16

选择 "加载文件",打开 RoboDK 工作站或 RoboDK 支持的任何其他文件。如果加载了机器人,ROBOT 变量将相应更新(与使用"选择机器人 "相同)。

Video:以下视频展示了使用RoboDK API的C#示例项目https://www.youtube.com/watch?v=3I6OK1Kd2Eo

Note:加载和运行项目示例时需要Microsoft Visual Studio软件。你可以到Visual Studio Community (Express)下载它的免费版本。

Tip:本 C# 示例的最新版本可在此处获取

C# 仿真

当机器人使用此类命令时(如MoveJ、MoveL或setDO),系统将默认在C#仿真下运行该程序。当C#示例项目启动时,系统也会默认设置C#为仿真模式。

RoboDK API - 图片 17

这意味着机器人运动将在RoboDK中进行仿真。例如,我们可以通过右侧按钮(+Tx、-Tx等)以10毫米为步长移动机器人,也可以选择"运行测试程序"让机器人在当前位置周围执行六边形轨迹运动。

设置一些断点来调试应用程序并测试该机器人的目标范围。机器人的目标范围可以定义为关节坐标或Mat变量(4x4姿态矩阵),通过使用XYZWPR形式可以帮助排除一些程序问题。更多相关信息请查阅参考坐标系

RoboDK API - 图片 18

此外,也可以将运行模式切换为离线编程模式或在线编程在线编程模式(在机器人上运行),具体内容如下一节所示。

C# 离线编程

可以使用模拟机器人所用相同 C# 代码离线生成C# 程序(离线编程)。请按照以下步骤测试该功能:

1.在运行模式部分选择离线编程

2.选择 "运行测试程序 "或任何其他动作组合

3.选择 "生成程序",获取供应商专用的机器人程序

基于这种操作,可以快速通过执行一个特定于机器人控制器的机器人程序获得相应结果,这个操作可以代替仿真程序。

RoboDK API - 图片 19

Tip:右键单击机器人,选择 "选择后处理程序",为离线编程指定不同的后处理器(如后处理器部分所示)。

Note:当离线编程模式激活时,机器人将不会移动,因为这时将运行模式更改为 RUNMODE_MAKE_ROBOTPROG,如 Python离线编程部分所示。

C# 在线编程

C# 程序可直接在机器人上执行,使用与仿真相同的 C# 代码。在线编程允许使用机器人驱动器在特定机器人控制器上运行通用程序。请按照以下步骤使用 C# 示例项目测试该功能:

1.在运行模式部分选择在机器人上运行

2.选择能让机器人移动的其他命令

动作将在真实机器人上运行,模拟器将与机器人同步动作。

Important: 使用机器人驱动器(右键单击机器人,然后选择连接到机器人...)时,需要在电脑和机器人之间建立连接。更多信息,请参阅 "机器人驱动器”。

RoboDK API - 图片 20

Note: RDK/Robolink 连接的运行模式改为 RUNMODE_RUN_ROBOT,以便在机器人上执行动作。例如

RDK = Robolink();

RDK.setRunMode(RUNMODE_RUN_ROBOT);

Tip:C:/RoboDK/Library/Macros/ 文件夹中的SampleOnlineProgramming.py宏提供了一个在 RoboDK 图形用户界面外进行在线编程的 Python 示例。

Note:有关通过 API 使用机器人驱动器的更多信息,请参阅 "机器人驱动器 "。

MATLAB API

MATLAB是由MathWorks公司开发的专有编程语言。除其他功能外,MATLAB支持矩阵运算、函数与数据绘图以及算法实现。RoboDK是MathWorks Connections项目的官方合作伙伴

RoboDK的MATLAB API以一组脚本文件(m文件)形式提供,可在此处获取:

在 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,roty.m 和rotz.m是在给定一个XYZ平移向量或沿着一个特定轴旋转的情况下创建的姿态矩阵函数。

Pose_2_XYZRPW.m 和XYZRPW_2_Pose.m允许将体式转换为XYZ位置和RPW欧拉角,反之亦然。更多相关信息请参见参考坐标系

下页介绍了 RoboDK MATLAB API 的多个示例,如操作物品、生成机器人程序和控制机器人:        
https://robodk.com/Matlab-API

Simulink 示例

我们提供了一个 Simulink 项目作为示例。在仿真中,机器人沿着随机生成的一组XYZ坐标移动。

Video:以下视频展示了仿真运行的结果:   
https://www.youtube.com/watch?v=7DDBMwa0-Oc

RoboDK API - 图片 21

命令行模式

本节介绍启动 RoboDK 时可用的命令行选项。命令行选项也可以使用 API 的Command 函数传递。

本部分展示了一些相关命令,可帮助你自定义RoboDK的启动方式。选择“工具-运行脚本-显示命令”即可查看启动RoboDK时可使用的其他命令。

以下调用表示对RoboDK的通用调用,附带若干参数:

RoboDK.exe -[option1] -[option2] open_fileA -[option3] open_fileB ...

RoboDK支持的所有文件格式均可作为参数提供,包括以下格式:

RDK    ➔RoboDK 站内文件:该文件包含整个项目及其所有依赖项(机器人、工具、数控文件等),集成于单一文件中。

robot    ➔Robot file:加载机器人文件时,也会为该机器人创建一个参考坐标系。

tool      ➔Tool file:自动附加到最后添加的机器人插件上。

stl/wrl/step/stp/iges/igs/sld➔物体(三维几何体):物体可轻松转换为工具

apt/gcode/cnc➔ NC 程序文件:RoboDK 自动准备铣削项目 (Utilities➔ Milling Project)。

Tip:机器人加工程序文件(如NC文件)将自动关联至RoboDK工作站中激活的参考坐标系与刀具参考坐标系你可在此处查看加载机器人加工NC文件的示例:C:/RoboDK/Other/Plugin-Mecsoft中的BAT文件。

Note:当尝试传递参数时,可以通过Python API来启动RoboDK。相关API代码如下所示:

RDK = Robolink(args= '-ADDFRAME "-RENAME=Main Ref " load_object.stl')

以下列表展示了一些可用的命令行选项:

-NOSPLASH

删除 RoboDK 启动时的闪屏图像。

-HIDDEN

隐藏 RoboDK。你需要使用 API 来显示RoboDK

-NEWINSTANCE

强制启动 RoboDK 的新实例。

-PORT=20501

强制 API 通过指定端口(TCP/IP 协议)进行通信。默认端口为 20500。

-EXIT_LAST_COM

当不再有与RoboDK API 通信的实例时,关闭 RoboDK。

-DEBUG

在 bin 文件夹中创建 RoboDK.debug.txt 文件,以便调试程序。

-SKIPINI

跳过自定义用户设置。

-SKIPMAINT

跳过维护更新弹出窗口。在维护到期前一个月,RoboDK 可能会在启动时弹出阻止更新许可证的弹窗。此参数允许你将此警告静音。

-SETTINGS=filepath

从文本文件加载参数。该文本文件的每一行都被视为一个参数。

-NOSHOW

在 RoboDK 加载文件和更新程序时,隐藏所有窗口。

-NO_WINDOWS

隐藏通常在加载 NC 文件时自动显示的所有窗口。

-NOUI

在没有用户界面(窗口和 3D 视图)的情况下启动 RoboDK。使用此选项可在后台使用 API 运行 RoboDK。如果显示 RoboDK,则无法看到 3D 视图。

-tree_state= -1

不要展示车站树。

-TREE_STATE 6=

显示停靠在窗口左侧且不透明的站台树。

-ADDFRAME

添加一个新的参考坐标系。任何载入的新物体都将置于该参考坐标系中。

-RESET

强制要求如果加载新物体,则将其置于站参考坐标系(而不是最后添加的坐标系)。

-RENAME=Name

更改最后添加的参考坐标系或物体的名称。

-MOVE=x;y;z;rx;ry;rz

移动最后添加的参考坐标系(单位:毫米和度)。

-update_apt=YES

将覆盖具有相同 APT 文件的任何机器加工项目

-UPDATE_APT=NO

不会覆盖任何机器加工项目(如果名称匹配,则会创建重复项目)。

-UPDATE=file.apt

加载或更新 APT 文件,如果没有问题,则生成机器人程序。

-replace_items=YES

当加载新文件且名称匹配时,更新现有工具和物体。

-replace_items=NO

加载新文件时,绝不覆盖工具和物体。

-SETCOLOR=blue

设置最后加载的物体(物体、工具、机器人或机械结构)的颜色。颜色可以是已命名的颜色或十六进制颜色(如 #RRGGBBAA,示例:#88112288)。

Note:无法通过单击选择透明度超过50%的对象。

-AUTOGEN_MAINPROG=Prog

生成一个主程序,按顺序调用与加载的 APT 文件链接的程序。

-SELECTTOOL=#1(选择工具

将第一个可用的机器人工具(或相应编号)设为激活工具(加载新程序时使用的工具)。

-SELECTTOOL= "tool name"

使用名称匹配选择激活工具。

-ADDCUTTER=length|path/cutter name.stl

Addcutter 可以添加刀具与工具夹具之间的几何关系。在 RoboDK 中,刀具被视为工具,持有刀具的几何体。刀具的几何图形必须是一个 STL 文件(ASCII 或二进制),原点位于工具的顶端。相对于刀柄的长度必须以毫米为单位(刀柄的正 Z 轴必须指向外部)。

-SELECTCUTTER= "cutter name"

Selectcutter 的效果与 SELECTTOOL 相同,刀具被视为工具。

-SHOW

显示 RoboDK 窗口。在加载所有文件并更新机器加工项目后自动完成。

使用以下选项之一将改变 -SHOW 命令所引起的可见性。

-QUIT

如果没有错误信息,则退出程序。

-END

即使有任何错误信息,也会退出程序。