RoboDK 是一款专注于工业机器人应用的模拟器。这意味着可以针对特定的机械臂和机器人控制器离线创建、模拟和生成机器人程序。换句话说,RoboDK 是用于离线程序的软件。
要创建机器人程序,需要选择机器人,加载机器人工具,并使用一个或多个 CAD 到路径特征,通过添加目标或使用特定工具(如将数控机床程序转换为机器人程序)来创建程序。
提供了大量工业机器人资源库。工业机器人在 RoboDK 中的建模方式与它们使用特定供应商控制器的行为方式相同,包括轴限制、运动感和轴链接。
本节介绍如何使用 RoboDK 图形用户界面(GUI)为特定机器人控制器创建、模拟和生成机器人程序。
注: 本节仅介绍如何使用图形用户界面(GUI)创建机器人程序。RoboDK API 可用于补充这些程序或完全创建机器人程序。更多信息,请访问 RoboDK API 部分。
离线编程(或称脱机编程)是指在生产环境之外对机器人进行编程。离线编程消除了车间编程(使用示教器编程)造成的生产停机。
通过模拟和离线程序,可以在建立生产单元之前研究机器人单元的多种方案。设计工作单元时常见的错误可以及时预测。
离线程序是使机器人系统投资回报最大化的最佳方法,它需要适当的模拟工具。采用新程序的时间可从数周缩短到一天,从而实现短线生产的机器人化。
在程序中添加一连串指令即可完成模拟。每条指令都代表了特定控制器的特定代码,不过,RoboDK 提供了图形用户界面 (GUI),以通用方式轻松构建机器人程序,无需编写代码。
生成程序时,将自动生成机器人控制器的专用代码。使用 RoboDK 图形用户界面创建新的空程序:
1.选择程序➔ 添加程序插件
或者,选择工具栏上的相应按钮。
2.选择工具➔ 重命名项目...(F2)重命名程序
注: 如果添加了指令,但管理平台中没有可用程序,则会自动创建程序。
此操作将创建一个空程序,并允许通过右键单击程序或从程序菜单中选择指令来添加新指令。下一节 "程序指令 "将提供更多有关添加指令的信息。
注:也可使用 RoboDK API 和特定编程语言(如 Python、C# 或 Matlab)完全创建模拟和程序。RoboDK API 部分提供了更多信息。
可以通过右键单击程序或从程序菜单中添加新的指令,如上一节所示。
提示:选择特定指令,可在所选指令后添加新指令。
提示:可以在程序内部或不同程序之间拖放指令,以重新排序。
本节介绍 RoboDK 图形用户界面支持的指令,用于机器人离线编程。
选择程序➔ 移动关节指令,添加新的关节移动指令。或者,选择工具栏上的相应按钮。
除非在添加指令前选择了目标,否则移动指令将创建一个新的目标,并将它们连接起来。如果目标被移动,移动也会被修改。
如果这是添加到程序中的第一条指令,那么在移动指令之前还会添加两条指令:参考坐标系选择和工具坐标系选择。这将确保当程序到达移动指令时,机器人使用的参考坐标系和工具坐标系与创建这个新目标时相同。
注: 右键单击运动指令并选择目标选项...(F3)打开目标选项菜单。可从该窗口或直接从 3D 视图修改目标。
选择程序➔ 移动线性指令,添加新的线性移动指令。或者,选择工具栏上的相应按钮。
除非在添加指令前选择了目标,否则移动指令将创建一个新的目标,并将它们连接起来。如果目标被移动,移动也会被修改。
关节移动和直线移动的行为方式相同,可以轻松地从一种类型切换到另一种类型。
与关节移动指令相同,如果这是程序中添加的第一条指令,那么在移动指令之前还会添加两条指令:参考坐标系选择和工具坐标系选择。
重要提示: 建议将每个程序的第一个动作保持为使用关节目标的关节移动。这将从第一个动作开始正确设置所需的配置,并确保真实机器人的运动方式与模拟的相同。
与关节移动相反,线性移动对机器人的奇点和轴限制有敏感认识。例如,6 轴机器人在线性移动后无法越过奇点。下图是一个例子,表示关节 5 太靠近奇点(0 度)。[...]考虑改用关节移动。如下图所示
如果严格来说不需要线性移动,可右击移动指令,将其更改为关节指令。
或者,必须修改目标、TCP 或参考坐标系的位置,以避免出现奇点。
选择程序 ➔设置参考坐标系指令,以使用特定参考坐标系。这将更新控制器上的给定参考系,用于执行后续运动指令,并更改 RoboDK 中机器人的激活参考系,以便进行仿真。这意味着,对特定目标(直角坐标系目标)的运动指令将以最后设定的参考坐标系为基准。
参考坐标系是一个变量,也称为工作物体(ABB 机器人)、UFRAME(发那科(Fanuc)机器人)、FRAME(安川(Motoman)机器人)或 $BASE(库卡(Kuka)机器人)。
注:特定控制器支持使用编号参考坐标系设置参考坐标系(如发那科(Fanuc)和安川(Motoman)控制器)。在这种情况下,参考坐标系的名称可以以数字结尾(如 Frame 4 用于设置坐标系索引 4)。
选择程序 ➔ 设置工具坐标系指令,以使用特定工具坐标系 (TCP)。这将更新程序上的给定工具坐标系,用于执行后续运动指令,并在 RoboDK 中更换机器人的激活工具坐标系,以便进行仿真。这意味着,对特定目标(直角坐标系目标)的运动指令将以最后设定的工具坐标系为基准。
参考坐标系是一个变量,也称为 ToolData(ABB 机器人)、UTOOL(发那科(Fanuc)机器人)、TOOL(安川(Motoman)机器人)或 $TOOL(库卡(Kuka)机器人)。
注:特定控制器支持使用编号工具设置工具坐标系(如发那科(Fanuc)和安川(Motoman)控制器)。在这种情况下,工具坐标系的名称可以以数字结尾(如 Tool 4 用于设置工具索引 4)。
选择程序➔ 移动圆周运动指令,添加新的圆周运动指令。或者,选择工具栏上的相应按钮。
除非在添加指令前选择了两个目标,否则移动指令不会创建新目标。这就需要分别再添加两个目标,并从循环移动指令中将它们链接起来,如下图所示。
环形路径是从机器人所在的点出发,经过第一个环形点(目标链接 1),并以终点(目标链接 2)为终点而形成的弧线。
重要提示:仅用一个圆周运动指令不可能完成一个完整的圆周运动。一个完整的圆必须分成两个独立的圆周运动。
选择程序➔ 设置速度指令,可添加改变速度和/或加速度的新指令。可以在关节空间和笛卡尔空间中指定速度和加速度。
激活相应的情况,在程序中设定特定的速度和/或加速度。机器人速度从执行该指令时开始生效。
也可在机器人参数菜单中更改机器人速度:双击机器人,然后选择参数。
注:并非所有机器人控制器都支持精确设置加速度。
重要: 设置正确的速度对准确计算程序时间(循环时间)非常重要。更多信息请参见循环时间部分。
选择程序➔ 显示信息指令,添加一条新指令,在示教器上显示一条信息。
注意: 并非所有机器人控制器都支持通过程序在示教器上显示信息。在这种情况下,本指令将不起作用。
选择程序➔ Pause Instruction(暂停指令),添加一条新指令,暂停程序执行一段时间或停止程序,直到操作员希望恢复程序。
注意: 将暂停延迟值设置为-1,可暂停程序,直到操作员希望恢复程序。在这种情况下,指令将自动命名为 "停止"。
重要提示: 在模拟过程中,如果默认的模拟比率为 5,则 5 秒钟的暂停需要 1 秒钟的模拟时间。更多信息请参阅模拟部分。
选择程序➔ 程序调用指令,可从当前程序向子程序添加调用。
默认情况下,这是对特定程序的阻塞调用。不过,也可以切换到插入代码,在该指令的位置输入特定代码。这可能对特定应用程序和特定控制器有用。
提示:选择 "选择程序 "可自动填充文本字段。否则,文本匹配也会起作用。如果与指令中使用的子程序名称匹配,则将在 RoboDK 中模拟该子程序。
提示:输入多行可自动连续设置多个程序调用指令。
从程序调用切换到启动线程,以引发对子程序的非阻塞调用。在这种情况下,控制器将启动一个新线程。该选项仅适用于某些控制器,且仅对特定操作有效。
小贴士仅用于模拟目的的主程序可使用 Start Thread 选项同时启动多个程序的模拟(例如模拟两个或多个机器人时)。
选择程序➔ 设置或等待 I/O 指令,以改变数字输出 (DO) 的状态。默认情况下,该指令设置为 "设置数字输出"。该指令还允许等待特定数字输入 (DI) 切换到特定状态。
如果是命名变量,IO 名称可以是数字或文本值。如果是已命名的状态,IO 值可以是数字(0 表示 "假",1 表示 "真")或文本值。
注: 该指令还支持在某些机器人控制器上设置模拟输出 (AO) 或等待模拟输入 (AI)。在这种情况下,可以用十进制数字或特定文本代替数字。
设置为等待数字输入,可停止程序执行,直到特定输入变为特定值。此外,大多数机器人控制器都支持超时延迟功能,当等待时间超过特定值时就会出错。选中超时(毫秒)选项可激活此功能。
提示:举例来说,如果机器人单元上有特定的硬件(如夹爪或铣削主轴),那么使用数字输出(DO)激活该特定硬件,然后等待特定的数字输入(DI)切换到特定状态,这是一种很好的做法。
更改模拟的数字输入和数字输出将创建新的管理平台变量。要检查这些变量的状态,可以右键单击台站并选择台站参数。也可以通过 API 读取或修改这些变量。
选择程序➔ 设置舍入指令,更改舍入精度。舍入精度用于平滑连续运动之间的边缘。该更改在程序内执行后立即生效(与所有其他指令相同),因此通常在程序开始时设置该值。
如果没有舍入指令,机器人在每次运动结束时的速度都将为 0(除非下一次运动与上一次运动相切)。这将引发高加速度和快速速度变化,以确保每次运动都能达到最佳精度。
该值也称为混合半径(Universal Robots)、ZoneData(ABB 机器人)、CNT/FINE(发那科(Fanuc)机器人)、拐角(Mecademic 机器人)或 $APO.CDIS/$APO.CPTP/Advance (库卡(Kuka)机器人)。
注:将 "绕行 "值设为-1,可实现精细运动。这意味着机器人不会绕过路径边缘。
提示:高舍入值可确保机器人路径上的速度恒定,以换取路径边缘上的精度损失。根据不同的应用,通常可以在精度和平稳速度之间找到一个很好的折衷方案。
有些控制器要求将该值设置为百分比,例如在发那科(Fanuc)控制器上,如果要提供 CNT5 命令,则应输入 5。
如果您生成的程序用于机器人加工、3D 打印或曲线/点追踪,还可以在 "程序事件 "窗口中指定舍入参数。
RoboDK 的路径精度测试可以更好地了解不同舍入策略的效果。
选择程序➔ 仿真事件指令,以引发特定的仿真事件。仿真事件对生成的代码没有影响,仅用于为仿真目的触发特定事件。
使用图形用户界面模拟事件,您可以
●在机器人工具上安装或拆卸物体
●显示或隐藏物体或工具
●改变物体和参考坐标系的位置
例如,如果机器人移动到一个特定位置去抓取一个物体,我们可以设置一个 Attach 对象事件,将该物体与机器人一起移动。然后,在机器人移动后准备离开物体时,我们可以设置一个 Detach object 事件,离开工具抓取的任何物体。
注:也可以使用宏来模拟特定事件(需要编程经验)。例如,使用 API 可以使物体随机出现在特定位置,进行取放模拟。
注意: 将物体连接到工具时,如果离给定距离不远,则连接最近的物体。默认距离为 200 毫米,可在以下页面更改:工具➔选项➔ 将物体吸附到机器人工具的最大距离。此外,默认情况下检查的是从 TCP 位置到物体参考点的距离。另外,也可以通过选择选中 TCP 与物体形状之间的最短距离,使用 TCP 与物体几何形状之间的距离。
双击程序,启动程序模拟。
或者
1.右击程序
2.选择运行
如果双击程序,底部会出现一个模拟栏。使用模拟栏可以滑动模拟,使模拟向前或向后移动。
提示:选择程序➔ 快速模拟可加快模拟速度(或按住空格键)。工具栏中也有该选项。
RoboDK 的默认模拟速度是实时速度的 5 倍。这意味着,如果一个程序的执行时间为 30 秒,那么它的模拟时间为 30/5=6 秒。加快模拟速度可将这一比率提高到 100。正常和快速模拟速度可在工具➔选项➔ 运动菜单中更换。
提示:选择程序➔ Pause 可暂停模拟(或按 Backspace 键)。
提示:选择 Esc 键停止模拟或再次双击程序。
提示:双击每条指令,逐一执行。
小贴士右键单击运动指令并选择从此处开始,即可从该指令开始恢复程序的执行,如下图所示。
当您准备好要导出到机器人的程序时,就可以生成机器人控制器所需的程序文件。
请按照以下步骤生成机器人程序:
1.右键单击程序。
2.选择生成机器人程序 (F6)。
然后,您就会看到文本编辑器中显示的机器人程序。
注:当您选择了一个或多个程序时,还可以选择程序➔ 生成程序 (F6) 来生成一个或多个机器人程序。
提示:按住 Control 键(Ctrl)可同时选择多个程序,并一次全部生成。
机器人程序默认保存在文档文件夹中(C:/Users/Your Name/Documents/RoboDK/Programs/)。您可以通过选择工具➔选项,选择程序选项卡,然后点击机器人程序文件夹旁边的设置来更换该文件夹。
注:某些机器人控制器的最佳做法是将生成的程序和所需的子程序整合到同一个程序文件中。RoboDK 已考虑到这一细节,对于支持此功能的机器人控制器(例如:ABB、优傲(Universal Robots)或库卡(Kuka)控制器),您应在主程序中看到子程序。另一方面,对于不支持此功能的机器人,您必须生成多个文件并传输到机器人控制器,才能正确运行所有程序(例如,在发那科(Fanuc)或安川(Motoman)控制器上)。有些后处理器允许您配置这种行为。您可以在工具➔选项中找到更多设置,然后选择程序选项卡。
另外,您也可以右击程序,选择 "生成机器人程序为......"(Shift+F6)来生成程序,并指定要保存的位置。
可以将程序从计算机直接传输到机器人。该选项通常通过 FTP 协议或其他特定协议(如使用套接字消息传递或串行连接)将程序发送到机器人。首先,需要在机器人连接菜单中输入机器人 IP 和 FTP 设置:
1.右键点击机器人。
2.选择连接到机器人......左侧将出现一个窗口。
3.输入机器人 IP。
4.选择更多选项,输入 FTP 设置和FTP 凭据(如需要)。
提示: 选择 Ping,查看能否在网络中找到机器人。
提供网络设置并正确连接机器人后,请按照以下步骤直接从 RoboDK 向机器人传输程序:
1.右键单击程序。
2.选择发送程序到机器人(Ctrl+F6)。
弹出窗口将显示状态(成功或失败)。
注:程序也可通过 USB 盘或其他介质传输。机器人小贴士部分(特定品牌部分)提供了一些支持的机器人品牌的更多信息。
重要提示: 连接按钮仅在使用机器人驱动器时有用。不连接机器人驱动器也可以实现程序传输。使用机器人驱动器,可以从 RoboDK 逐点移动机器人,并以简便的方式调试程序(在机器人上运行选项)。机器人驱动器还可以直接通过 API 移动机器人。
提示: 使用 FileZilla 等 FTP 客户端可以更好地浏览机器人控制器的内容,并检索程序的远程 FTP 路径。大多数机器人控制器都支持 FTP 传输。
从 RoboDK 仿真到具体机器人程序的转换由后处理器完成。后处理器定义了应如何为特定机器人生成机器人程序。在 RoboDK 中,每个机器人默认都有一个特定/默认的后处理器。
为机器人选择特定的后处理器:
1.右键点击机器人或程序。
2.选择"选择后处理器"。
3.从列表中选择后处理器。
4.选择确定。
现在更改已应用,您可以再次生成程序查看结果。
注: 后处理器与特定机器人相连。更改程序的后处理器将更新链接到同一机器人的所有程序的后处理器。
RoboDK 中的后处理器具有完全的灵活性,可根据特定要求生成机器人程序。RoboDK 提供适用于大多数机器人品牌的后处理器。后处理器可轻松创建或修改。有关后处理器的更多信息,请参阅后处理器专用章节。
您可以自定义为机器人生成程序的方式。
按照以下步骤查看程序生成设置:
1.选择工具➔ 选项。
2.选择程序选项卡。
该菜单允许您自定义程序生成,例如
1.将关节动作分割成更小的步骤。
2.将直线运动拆分成更小的步骤。
3.将圆周运动转换为小的线性运动。
4.将大型机器人程序拆分成子程序。
5.指定保存机器人程序的默认位置。
6.指定机器人程序的默认文本编辑器。
提示其他设置可由所选的后处理器定义或覆盖。
在为机器人生成程序时,您可以轻松地将圆弧力矩转换成小的线性运动。如果您的控制器不支持圆弧运动,这将非常有用。
按照以下步骤将弧线生成为小的线性运动:
1.选择工具➔ 选项。
2.选择程序选项卡。
3.选择 "避免弧线"。
4.指定最大圆弧尺寸(毫米),它定义了沿圆弧线性移动的尺寸。
注意:RoboDK 不会生成小于此窗口中定义的最小步长(毫米)的线性运动。因此,如果最小步长(毫米)公差大于最大圆弧尺寸(毫米)公差,则沿圆弧的线性运动将更大。
大型机器人程序可能会超出机器人控制器的限制。控制器的限制可以是文件大小,也可以是每个程序的行数。例如,用于机器加工或 3D 打印的机器人程序可能有数千行代码。
在这种情况下,最好将这么长的程序拆分成更小的子程序,包括一个运行子程序的主程序。
请按照以下步骤自动分割长程序:
1.选择工具➔ 选项➔ 程序。
2.选中"限制每个程序的最大行数",并提供所需的每个文件生成的每个程序的最大行数。
提示:大多数后处理器都默认限制每个程序的最大行数该程序可以更改或覆盖该限制(变量名为 MAX_LINES_X_PROG)。
当您生成的程序调用子程序时,RoboDK会自动创建一条指令来调用该子程序。另一方面,您可以自定义程序输出,直接在主程序上内联子程序,防止程序调用。
注: 有些后处理器默认情况下会在主程序文件中包含子程序(如默认的 ABB 后处理器),而其他后处理器则不包含子程序,因为它们通常是机器人控制器中的独立文件(如默认的发那科后处理器)。
提示:如果控制器要求使用编号程序而不是命名程序,则此功能非常有用。
请按照以下步骤内联子程序,以避免调用脱机程序:
1.选择工具➔ 选项。
2.选择程序选项卡。
3.选中 "内联子程序 "选项。
从现在起,当您生成包含子程序的程序时,您将直接在第一个/主程序中获取这些子程序的内容。
后处理器和机器人驱动器使用不同的方法来移动机器人。后处理器允许您离线生成程序,而驱动器则允许您与机器人进行实时通信。
后处理器用于离线编程,负责将 RoboDK 机器人程序转换为相关机器人控制器的本地编程语言。例如,ABB 后处理器为 IRC5 控制器生成 .mod 文件。后处理器还包括将程序上传到机器人控制器,通常是通过 FTP 上传。程序的以下功能由后处理器处理:
1.生成机器人程序
2.生成机器人程序作为...
3.向机器人发送程序
4.机器人启动(与驱动器结合使用)
通过机器人驱动器,可以使用 RoboDK 从电脑远程控制机器人。这样,您就可以在机器人控制器上实时执行 RoboDK 中的程序指令。这包括在控制器上调用远程程序的功能。例如,ABB驱动器通过套接字通讯发送运动指令。驱动器可处理以下功能:
1.激活 "在机器人上运行 "选项,然后双击即可使用驱动器在机器人上运行程序。
2.启动机器人(与后处理器结合使用)
注:机器人驱动器单独发送每条指令,并等待控制器完成。对于运动指令而言,这意味着会出现轻微延迟(明显抽搐)。
提示:在大多数情况下,离线程序是控制机器人的最佳方式,因为机器人控制器已预先知道所有运动指令(预读),因此可以利用运动和速度优化(如舍入)。
提示:您可以使用后处理器和驱动器的混合组合,将复杂路径上传到控制器,并由驱动器远程调用。这在使用 RoboDK API 时尤为有效。