python】RoboDk软件中创建的Python程序总是运行不成功,如何解决?

2020-04-21 14:21发布

1条回答
大泽九章
2楼 · 2020-07-16 18:21






后处理器

后处理器是离线编程中的关键步骤,因为它们可以为特定的机器人控制器生成机器人程序。机器人编程必须遵循特定于供应商的编程规则,这些规则在后处理器中实现。机器人后处理器定义必须如何为特定机器人控制器生成机器人程序。

从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编辑器(PythonIDLE)编辑后处理器。使用Python编辑器可以快速调试和评估文件末尾的示例程序。

要修改现有的后处理器:

1。选择程序➔添加/编辑后处理器

2。选择现有的后处理器

3。选择确定。将打开一个文本编辑器和程序。

4。选择运行➔运行模块(F5)以预览结果。必要时进行任何更改。

或者,可以手动编辑后处理器:

1。转到后处理器文件夹:C:/RoboDK/Posts/

2。使用PythonIDLE打开PY文件(右键单击➔使用IDLE编辑)或其他文本编辑器

3。进行所需的更改

4。运行该文件以测试结果:从PythonIDLE中选择运行➔Run模块(默认情况下为F5)。

或者,可以使用文本编辑器编辑此文件,然后通过双击将其与Python一起运行。

修改实例

例如,将对现有的ABB和KUKA后处理器进行以下更改:

●使用关节角度信息设置关节运动以生成运动命令。

●将最大速度覆盖为500mm/s。即使机器人被编程为移动得更快,后处理器的速度也将限制在500mm/s。

●将每个程序生成为单独的文件,并强制程序最多每个程序有3000行代码。大型程序将被分成较小的程序并按顺序调用。

上一节介绍了如何打开现有的后处理器进行编辑:

1。选择程序➔添加/编辑后处理器

2。选择您的后处理器。例如,对于KUKAKRC4,请选择KUKA_KRC4。

3。选择确定。后处理器将显示在PythonIDLE编辑器中。

以下部分显示如何在文本编辑器(或PythonIDLE)上进行建议的更改。

使用关节角度施加运动

以下步骤说明如何修改现有的后处理器以使用关节角度强制轴向移动。在此示例中,我们将展示如何将此更改应用于ABBIRC5机器人控制器。

1。查找特定机器人控制器的编程手册。在本例中,我们使用ABBIRC5RAPID编程手册。

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函数完成。

强制限速

按照以下步骤设置速度限制为500mm/s,并避免使用RoboDK设置更高的速度。在这个例子中,我们假设我们使用的是KUKAKRC2或KRC4控制器:

1。找到setSpeed函数定义(defsetSpeed)

2。在生成$VEL.CP输出之前添加以下代码,该输出将以m/s为单位更改速度:

speed_mms=min(speed_mms,500)


注意:默认速度为200mm/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中的KUKAIIWA日出编程

●KUKA_KRC2:适用于KUKAKRC2机器人控制器

●KUKA_KRC2_CamRob:适用于KUKACamRob铣削选项

●KUKA_KRC2_DAT:适用于KUKAKRC2机器人控制器,包括DAT数据文件

●KUKA_KRC4:适用于KUKAKRC4机器人控制器

●KUKA_KRC4_Config:适用于KUKAKRC4机器人控制器,每行配置数据

●KUKA_KRC4_DAT:适用于KUKAKRC4机器人控制器,包括DAT数据文件

**

RoboDKAPI

RoboDKAPI(应用程序接口)**是RoboDK通过编程语言公开的一组例程和命令。RoboDKAPI允许您使用受支持的编程语言(如C#,Python或C++)对任何机器人进行编程。

与特定于供应商的机器人编程相比,使用RoboDKAPI可以使用独特/通用编程语言(如Python)模拟和编程任何机器人。主页面提供概述和显示使用API进行离线编程的视频。

RoboDKAPI可用于Python,C#,C++,VisualBasic(.NET)和Matlab。这些编程语言中的任何一种都可用于模拟和编程任何机器人。

提示:您不确定要使用哪种编程语言?我们建议使用Python!如果您使用默认设置安装了RoboDK,那么您已经安装了Python,并且您已准备好开始使用。Python是一种广泛用于通用编程的高级编程语言。大多数RoboDK示例和文档都基于Python程序。

注意:RoboDK提供用户友好的图形用户界面(GUI)来模拟和编程工业机器人。使用GUI模拟和编程机器人不需要编程经验。“程序”部分提供了有关使用GUI编程机器人的更多信息。另一方面,通过使用RoboDKAPI,模拟和离线编程没有限制。

注意:API可以用任何编程语言实现。API由RoboDK中实现的TCP/IP协议组成。当RoboDK运行时,它的行为类似于服务器,它通过TCP/IP协议公开一组命令。

RoboDKAPI可用于以下任务:



自动化模拟:创建宏以自动执行RoboDK模拟器中的特定任务,例如移动对象,参考框架或机器人。



离线编程:使用通用编程语言离线编程机器人。当使用API时,RoboDK将为特定的机器人控制器生成特定的程序(例如Python或C#中的程序)。根据为特定机器人选择的后处理器生成机器人程序。该离线编程与Python本文第四部分提供了更多的信息和示例。



在线编程:使用通用编程语言在线编程机器人:可以移动机器人并从RoboDKAPI检索其当前位置。RoboDK将使用机器人驱动程序驾驶机器人。本文档中的在线编程与Python部分提供了更多信息和示例。



换句话说,用于模拟(1)的相同程序可用于生成机器人程序(2,离线编程)并实时移动机器人(3,在线编程)

注意:使用RoboDKAPI从通用编程语言创建机器人模拟时,机器人运动命令会在模拟准备就绪时自动用于离线生成程序。此外,如果使用机器人驱动器连接机器人,则可以使用相同的程序实时移动机器人

本文档包含以下主题:

●在Python的API与仿真,离线编程和在线编程实例

●在C#API与仿真,离线编程和在线编程实例

●带有Simulink仿真的MatlabAPI

●用于启动RoboDK的命令行选项

用于Python的RoboDKAPI分为以下两个模块:

●该robolink模块(robolink.py):将robolink模块是RoboDK和Python之间的接口。可以使用Robolink对象检索RoboDK工作站树中的任何对象,它由Item对象表示。可以根据Robolink.Item类对该项执行不同的操作。

●该robodk模块(robodk.py):将robodk模块是一个机器人工具箱用于Python允许与姿势转换操作,将获得欧拉角对于不同的机器人供应商。所有后处理器都依赖于这个robodk模块。

Python模块位于文件夹C:/RoboDK/Python/中,当安装RoboDK或选择SetdefaultPythonsettings时,它们会自动复制到Python文件夹路径(参见上图)。

以下小节分别介绍了如何创建用于模拟,离线编程和在线编程的简单程序。RoboDK页面的PythonAPI中提供了更多示例。此外,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项并选择EditPythonScript。我们应该看到如下图所示的程序。

SampleOfflineProgramming宏将相对于机器人参考系在机器人的当前位置绘制侧边n_sides和半径R的多边形。如果需要,将机器人移动到更改多边形尺寸的其他位置并重新运行程序。


PythonOLP

可以使用用于模拟机器人的相同Python代码离线生成Python程序(如前面的PythonSimulation部分所示)。离线编程允许生成可在特定机器人控制器上执行的机器人程序:

1。右键单击Python程序

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

这种情况下,程序不是模拟的,而是快速执行以获得结果:特定于机器人控制器的机器人程序。


注意:“生成机器人程序”选项将自动将RDK/Robolink连接的RunMode设置为RUNMODE_MAKE_ROBOTPROG。换句话说,如果Python程序在RoboDK的GUI之外执行,则可以以编程方式生成特定于供应商的程序,而不是模拟它。例如

RDK=Robolink()

RDK.setRunMode(RUNMODE_MAKE_ROBOTPROG)

Python在线编程

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

1。右键单击Python程序

2。选择在机器人上运行

程序将在执行Python程序时在机器人上运行。

重要提示:使用RobotDrivers需要PC和机器人之间的连接(右键单击机器人,然后选择Connecttorobot…)。在更多信息机器人驱动程序部分。


注:在对机器人运行选项将自动设置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#的RoboDKAPI是一个RoboDK.cs源文件,其中包含RoboDK类(类似于Python的Robolink类),RoboDK.Item类(类似于Python的Robolink.Item类API),以及其他用于机器人的工具,如Matrixclass(RoboDK.Mat)用于矩阵运算以使用姿势变换进行操作。

C#(发音为“Csharp”)是Microsoft开发的一种编程语言,用于构建在.NETFramework上运行的各种应用程序。C#简单,功能强大,类型安全,面向对象。本文档的主要部分解释了使用RoboDKAPI和广泛使用的编程语言(如C#)进行机器人编程的优势。

用于C#的RoboDKAPI提供了一个示例项目,如下图所示(包括完整的源代码)。也可以将它用作NuGet包,将其集成到任何.Net项目中。


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

MicrosoftVisualStudio需要加载和运行示例项目。VisualStudio社区(Express)版本是免费的。

MatlabAPI

用于Matlab的RoboDKAPI可在RoboDK安装文件夹中找到。通常在C:/RoboDK/Matlab/中找到。用于Matlab的RoboDKAPI是作为一组m个文件提供的。

Matlab是MathWorks开发的专有编程语言。除其他外,MATLAB允许矩阵操作,函数和数据的绘图以及算法的实现。

本文档的主要部分解释了使用RoboDKAPI和广泛使用的编程语言(如Matlab)进行机器人编程的优势。

用于Matlab的RoboDKAPI包括:

●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.mXYZRPW_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。使用PythonAPI的示例:RDK=Robolink(args=’-ADDFRAME“-RENAME=MainRef”load_object.stl’)



相关问题推荐

  • 回答 1

    可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。

  • 回答 6

    人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...

  • 回答 7

    代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http':  'http://61.155.164.110:3128'}http://www.goub......

  • 回答 2

    要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False  #进入循环标志while not Is_exit:User_name = input(please ...

  • 回答 2

    MacOS设置环境变量path的完全总结  一、MacOS加载bash shell 环境变量的加载顺序   mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile                                              ...

  • 回答 4

    当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...

  • 回答 5

    在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...

  • 回答 2
    已采纳

    import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...

  • 回答 13

    Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...

  • 回答 27

    当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量学会使用Python处理表格的话之前接了一个国企的case,说让我们给出一个解决方案关于数据处理方面的,去了他们天津的公司,一个部门7个人,7个人的工作我看了一下,我和我的同事...

  • 回答 22

    1、兼职处理数据2、兼职查询资料3、兼职P图

  • 回答 26

       Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...

  • 回答 17

    可以的,python语法简单。刚开始学习可以试一下

  • 回答 25

    这两个其实现在用的都很普遍,java可能更好用一些吧

  • 回答 19

    1.if 语句1)基本用法:if 要判断的条件:    条件成立的时候,要做的事情else:    条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件:    条件成立的时候,要做的事情elif 条件2...

  • 回答 26

    首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括:  (1)Web和Internet开发  (2)科学计算和统计  (3)人工智能  (4)桌面界面开发  (5)软件开发  (6)后端开发  (7)网络爬虫...

没有解决我的问题,去提问