RoboDK API(应用程序接口)由一系列例程和命令组成,它支持开发人员使用多种编程语言来操作机器人。
相比其他供应商专用的机器编程语言,RoboDK API 竭尽所能的帮助开发人员使用多种独特且开源的编程语言仿真和编程机器人,例如Python。该文档提供了一些关于离线编程API offline programming with the API的概述和视频。
RoboDK API 现在适用于Python,C# 和Matlab. 其中任何一种编程语言都可以用于仿真和编程机器人。
提示:你还不确定使用哪种编程语言?我们非常建议你选择Python!如果你已经在默认设置中安装了RoboDK,你就已经安装好了Python而且可以随时启动它ready to start。Python是一种广泛应用的高级语言,它可用于通用编程。RoboDK的大多数实例和文档基于Python编程语言。
注意:RoboDK 内置了一个用户友好的图形用户界面(GUI),它可以帮助仿真和编程工业机器人。这里并不需要编程经验,因为在程序Program部分,我们提供了很多关于如何使用GUI编程的信息。这意味着我们可以使用RoboDK API 实现没有限制的仿真和离线编程。
注意:RoboDK API 可以用任何一种编程语言来实现。RoboDK API支持TCP/IP协议。所以当RoboDK运行的时候,它会像服务器一样通过TCP/IP协议投射一组命令。
RoboDK API 可以用于以下的操作:
1.自动化仿真:创建宏后就可以自动完成在RoboDK仿真器内的一些特定任务,例如移动对象、参考坐标或者机器人。
2.离线编程:使用通用编程语言离线编程该机器人:可以通过RoboDK API为特定的机器人控制器生成特定的编程程序(如Python或C#)。机器人程序是根据为特定机器人选择的后置处理器post processor而生成的。更多相关示例和信息请参见Python离线编程Offline Programming with Python部分。
3.在线编程:使用通用编程语言在线编程该机器人:可以通过RoboDK API移动机器人并检索它们当前的位置。RoboDK也可以使用机器人驱动程序Offline Programming with Python驱动机器人。更多相关示例和信息请参见Python在线编程Online Programming with Python部分。
总的来说,用于仿真(1)的程序也可以用于生成机器人程序(2,离线编程),并可以实现实时移动机器人(3,在线编程)。
注意:当通过使用RoboDK API的泛型程序设计语言创建一个机器人仿真时,机器人运动指令就会在仿真准备好的时候自动生成线下程序。此外,如果机器人通过机器人驱动器连接,则可以使用相同的程序实时移动机器人。
本文件涵盖以下主题:
●Python API关于仿真、离线编程和在线编程的示例
●C#API关于仿真、离线编程和联机编程的示例
●关于用Matlab API编写的Simulink仿真示例
● 关于RoboDK命令行Command line的选项内容
注意:本文档不包含离线编程所需的后置处理器Post Processors。
注意:本文档不包含在线编程所需的机器人驱动程序 Robot Drivers。
Python是通用编程中被广泛使用的高级编程语言。Python可以让你高效工作,并且更有效率地集成你的系统。Python的语法允许程序员用比其他语言更少的代码来表达概念,这使它变得十分友好和容易学习。
上一节 previous section介绍了RoboDK API配合通用编程语言Python进行机器人编程的优势。
Python会自动默认与RoboDK进行安装和集成。通过菜单选项卡中的选择工具Select Tools ➔选项Options ➔其他Other更改默认设置(Python位置和Python编辑器Editor)。
提示: 除了Python IDLE(默认的集成开发环境)之外,还可以使用特定的文本编辑器,比如Notepad++或PyCharm。下图展示了相关文本编辑器的路径。
面向Python的RoboDK API有两个模块:
●Robolink模块(robolink.py): robolink模块建立了一个RoboDK与Python之间的接口。RoboDK Station Tree中的任何对象都可以通过使用Robolink对象进行检索,并由类别Item对象进行返回。同时也可以根据Robolink.Item类别对该项目执行各种操作。
●Robodk模块(robodk.py): robodk模块类似于Python的一个机器人工具箱,它允许对不同的机器人供应商进行姿态变换并获得欧拉角。所有的后置处理器都依赖于这个robodk模块。
Python的相关模块位于路径C:/RoboDK/Python/下,在安装RoboDK或者默认Python设置Set default Python settings时(见前面的图像),这些模块将会自动复制到Python文件夹路径中。
下面的小节将展示如何为仿真、离线编程和在线编程分别创建一个简单的程序。更多示例会在Python API for RoboDK 页面中展示。此外,RoboDK库还提供了Python的示例宏,它位于C:/RoboDK/ library / macros /路径下。
按照以下步骤,可以操纵UR机器人建立一个项目示例,并命令该机器人仿真完成一些动作。
1. 选择文件File ➔打开 Open
2. 打开UR10机器人
3. 选择文件File ➔打开 Open
4. 打开Paint_gun.tool文件
5. 在路径C:/RoboDK/Library/Macros/中打开离线编程Python实例文档SampleOfflineProgramming.py
提示:更多关于如何创建RoboDK站的信息请参见开始Getting started部分。
提示:创建一个Python程序可以在菜单选项卡中点击选择程序Program➔ 添加Python程序Add Python program。
6. 双击离线编程实例SampleOfflineProgramming以运行该仿真程序。机器人就会在它当前位置周围绘制一个六边图形,TCP的运行轨迹此时将会显示为黄色。或者右键单击该程序,选择运行Python脚本Run Python Script。
7. 右键单击离线编程实例SampleOfflineProgramming,选择编辑Python脚本Edit Python Script,就会看到下图所示的流程。
关于机器人的参考坐标,SampleOfflineProgramming宏会在机器人当前位置绘制出一个以n_sides为边和R为半径的多边形。你也可以将机器人移动到不同的位置,这样就会改变多边形的尺寸,同时会重新运行一次该程序。
你也可以在我们网站上的离线编程offline programming部分找到类似的案例。
提示:当尝试在Python编辑器上运行该程序,选择运行箭头➔Run,随后弹出的窗口会显示所有打印命令或是任何错误提示信息。
Python支持通过重复使用之前相同的Python代码 (如前面的Python仿真Python Simulation部分所示) 离线生成Python程序。离线编程Offline Programming允许生成在特定机器人控制器上执行过的机器人程序:
1.点击Python程序
2.选择生成机器人程序Generate robot program (F6)
基于这种操作,可以快速通过执行一个特定于机器人控制器的机器人程序获得相应结果,这个操作可以替代类似的仿真程序。
提示:右键单击机器人,选择后置处理程序Select Post Processor来指定离线编程里不同的后置处理器(如后置处理程序Post Processor部分所示)。
注意:点击生成机器人程序Generate robot program选项后,系统会自动将RDK/Robolink模块下的RunMode模式切换为RUNMODE_MAKE_ROBOTPROG模式。这意味着Python程序可以在RoboDK 图形用户界面GUI之外的编程环境里执行生成特定于供应商的程序,替代仿真程序。相关代码如下所示:
RDK = Robolink()
RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)
Python程序支持通过重复使用之前相同的Python代码(如Python仿真Python Simulation部分所示) 直接控制操纵机器人。在线编程允许在特定的机器人控制器上,使用机器人驱动Robot Drivers来运行该程序:
1. 点击Python 程序
2. 选择运行机器人Run on robot
随后程序就会在执行Python程序的时候运行该机器人。
重要提示:使用机器人驱动Robot Drivers需要连接PC和机器人(右键单击机器人,然后选择Connect to robot…)。更多相关信息请参见机器人驱动Robot Drivers section部分。
注意: 点击运行机器人Run on robot选项,系统会自动将RDK/Robolink下的RunMode模式切换为RUNMODE_MAKE_ROBOTPROG模式。这意味着操作者可以在RoboDK图形用户界面GUI之外的操作环境下运行该机器人的移动命令。相关代码如下所示:
RDK = Robolink()
RDK.setRunMode(RUNMODE_RUN_ROBOT)
提示:在线编程Python实例文档SampleOnlineProgramming.py位于路径C:/RoboDK/Library/Macros/ folder下,它提供了一个非常完整的示例,测试这个示例需要配合使用一个六边图形,相关内容可参见Python仿真Python simulation部分。
注释:更多关于如何通过API使用机器人驱动器的信息,可参见机器人驱动部分Robot Drivers section。
C#(发音为“C sharp”)是由微软开发的一种编程语言,可以用于构建和运行在.NET Framework之上的各种应用程序。C#是简单、强大、类型安全、面向对象的高级程序设计语言。
本文将主要main section 介绍RoboDK API配合通用计算机编程语言C# 进行机器人编程的优势。
面向C#的RoboDK API 是一个RoboDK.cs 源文件,它包含了RoboDK类(类似于Python的Robolink类),RoboDK.Item 类(类似于Python的Robolink.Item 类的API),和其他机器人工具,例如用于进行姿态转向操作的矩阵类(RoboDK.Mat) 。
此处为面向C#的RoboDK API提供了一个项目示例,如下图所示(包含完整的源代码)。
选择加载文件Load File选项,打开RoboDK站或任何RoboDK支持的其他文件。如果你已成功加载机器人,则相应机器人变量将会依次更新(与使用选择机器人Select Robot相同)。
下面的视频展示了一个面向C#的RoboDK API的项目示例:https://www.youtube.com/watch?v=1hRRYr9bEsY
注意:加载和运行项目示例时需要Microsoft Visual Studio软件。你可以到Visual Studio Community (Express)下载它的免费版本。
当机器人使用此类命令时(如MoveJ、MoveL或setDO),系统将默认在C#仿真下运行该程序。当C#示例项目启动时,系统也会默认设置C#为仿真模式。
这意味着机器人的动作可以在RoboDK上进行仿真。例如,我们可以选择右边的按钮(+Tx, -Tx,…),使得机器人位移10 mm的步长,或者我们可以选择运行测试程序Run Test Program按钮,机器人就会围绕当前位置做一个六边形的运动。
设置一些断点来调试应用程序并测试该机器人的目标范围。机器人的目标范围可以定义为关节坐标或Mat变量(4x4姿态矩阵),通过使用XYZWPR形式可以帮助排除一些程序问题。更多相关信息请参见参考坐标系Reference Frames部分。
此外,也可以将运行模式Run Mode切换为离线编程Offline Programming模式或在线编程Online Programming模式(Run on Robot),具体内容如下一节所示。
C#语言编程程序支持通过重复使用之前相同的C#代码离线生成Offline Programming程序。以下步骤将测试这一特性:
1. 在运行模式部分选择离线编程Offline Programming
2. 选择运行测试程序Run Test Program或任何其他动作组合。
3. 选择生成程序Generate Prog来获取特定于供应商的机器人程序
基于这种操作,可以快速通过执行一个特定于机器人控制器的机器人程序获得相应结果,这个操作可以代替仿真程序。
一旦生成该程序,运行模式Run Mode将会切换为仿真Simulation状态。
提示:右键单击机器人,然后点击选择后置处理器Select Post Processor,这样就可以为离线编程指定一个后置处理器(如后置处理器Post Processor部分所示)。
注意:当离线编程Offline Programming模式处于活动状态时,机器人不会移动,因为这时已由RunMode模式切换到RUNMODE_MAKE_ROBOTPROG模式,相关内容请参见Python离线编程Python OLP部分。
C#程序支持直接在机器人上运行程序,通过重复使用之前相同的C#仿真代码。线上编程允许在一些特定的机器人控制器上使用机器人驱动Robot Drivers。以下步骤将以C#项目为例测试此特性:
1. 在运行模式Run Mode部分选择Run on Robot
2. 选择其他任何命令都会使机器人移动
你的运动指令将在真实的机器人上运行,并且对应的仿真器将与该机器人同步运动。
重要提示:使用机器人驱动程序需要连接PC和机器人 (右键单击机器人,然后选择Connect to robot…)。更多相关信息请参见Robot Drivers section。
注意:此时RDK/Robolink下的运行模式RunMode将会被切换为RUNMODE_RUN_ROBOT模式,机器人由此可以执行命令动作。相关代码如下:
RDK = Robolink();
RDK.setRunMode(RUNMODE_RUN_ROBOT);
提示:在线编程Python实例文档SampleOnlineProgramming.py宏位于路径C:/RoboDK/Library/Macros/ folder下,该文档为RoboDK GUI之外的在线编程方案提供了一个很好的Python案例。
注意:更多关于如何通过API使用机器人驱动的信息请参见Robot Drivers section。
Matlab是美国MathWorks公司出品的一种商业数学编程软件,它专业用于矩阵操作、函数绘制和数据分析以及算法开发等。
本文将主要main section介绍RoboDK API配合通用编程语言Matlab 进行机器人编程的优势。
在路径C:/RoboDK/Matlab/下安装RoboDK后,就可以使用Matlab了。Matlab API会提供一组m形式的文件,其中包括:
● Robolink.m is a class that interfaces with RoboDK. Any object in the RoboDK Station Tree can be retrieved using the Rob
● RobolinkItem.m is a class that represents a RoboDK item in the Station Tree. It is possible to perform different operations on that item (same as Python’s Robolink.Item class).
● 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欧拉角,反之亦然。更多相关信息请参见参考坐标系Reference Frames部分。
样本代码请参见此处页面:
https://robodk.com/Matlab-API
在Simulink项目仿真过程中,机器人会沿着随意生成的XYZ坐标系移动。
下面的视频展示了它运行仿真的结果:
https://www.youtube.com/watch?v=7DDBMwa0-Oc
本节主要描述RoboDK启动时可用的命令行选项。
下面的代码是一个包含参数的通用调用:
Robodk.exe /[option1] /[option2] open_fileA /[option3] open_fileB ...
RoboDK支持以文件格式作为参数进行的相应传递。支持的文件格式如下:
●RDK ➔RoboDK站内文件:该文件将整个项目保存在一个文件中,包含了各式各样的依赖项(机器人、工具、NC文件…)。
●robot ➔ Robot file机器人文件:加载机器人文件还将为该机器人创建一个参考坐标。
●tool ➔ Tool file工具文件:工具自动添加至最近添加的机器人。
●stl/wrl/step/stp/iges/igs/sld ➔ Object (3D geometry):该对象能很容易的转换为工具converted to tools 。
●apt/gcode/cnc ➔ NC program file: RoboDK会自动准备铣削项目(实用程序Utilities➔铣削项目Milling Project)。
重要提示:NC files将会连接到RoboDK站的主动参考坐标和工具参考坐标中。
注意:当尝试传递参数时,可以通过Python API来启动RoboDK。相关API代码如下所示:
RDK = Robolink(args='/ADDFRAME "/RENAME=Main Ref " load_object.stl')
可用的命令行选项:
/NOSPLASH
启动时移除RoboDK启动图像。
/DEBUG
在bin文件夹中创建一个RoboDK.debug.txt文件,允许调试该应用程序。
/SETTINGS=filepath
从文本文件中加载参数。文本文件的每一行都被视为一个单独的参数。
/NOSHOW
当RoboDK加载文件和更新程序时隐藏所有窗口。
/NO_WINDOWS
当加载NC文件时自动隐藏经常显示的所有窗口。
/PORT=20501
通过指定的端口强制应用编程接口(即API)通信(TCP/IP协议)。默认端口号是20500。
/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=steelblue
设置最后加载对象的颜色(物体、机器人工具、机器人或者机械装置)。这些颜色允许以颜色或十六进制颜色命名。
注意:单击一次不会选择超过50%透明度的对象。
/AUTOGEN_MAINPROG=Prog
生成一个主程序,该程序可以按顺序调用连接到加载APT文件的程序。
/SELECTTOOL=#1
设置第一个可用的机器人工具(或相应的数字)作为当前active工具(该工具可以在新程序加载后使用)
/SELECTTOOL=tool name
选择当前active工具用于匹配名称。
/ADDCUTTER=length|path/cutter name.stl
允许在刀架上增加刀具的几何形状。在RoboDK中,刀具被当作是一种为了保持刀具几何形状的工具来使用。刀具几何形状的原点位于刀具尖端,并且它的文件必须设置为STL编码格式(ASCII或二进制)。长度必须以毫米表示,与刀架有关(刀架的正Z轴必须指向外面)。
/SELECTCUTTER=cutter name
Selectcutter与SELECTTOOL具有相同的作用,刀具被视为工具。
/SHOW
在所有文件都已加载完,并且加工项目都已更新结束时,将会自动显示RoboDK窗口。
使用下列选项之一将调整/SHOW命令响应的能见度。
/HIDDEN
一旦RoboDK完成装载,将会避免自动触发/SHOW。显示窗口的唯一方法是使用API。
/QUIT
如果没有错误消息,将会退出程序。
/END
即使有任何错误消息也退出程序。