工业机器人可以像机床(三轴或五轴CNC)一样执行加工作业。为达到与数控机床同等的加工精度,需采用RoboDK等高效离线编程软件将机床加工程序(如APT、G-code、ACL、TAP或NCI)转换为机器人可执行的仿真程序与运动指令。
机器人加工涵盖铣削、钻孔、倒角及去毛刺等材料去除工艺,此类工艺传统上要在数控机床上完成。
加工件的尺寸需要通过计算机辅助设计(CAD)软件定义,经计算机辅助制造(CAM)软件生成G代码等加工程序后,可利用RoboDK离线编程工具将其转换为机器人加工程序。
为扩展工作范围,可创建转台或直线导轨等外部轴,通过同步外部轴功能实现与机器人的协同运动。
本节展示了一些涉及机器人加工的应用案例。其中部分范例通过插件演示如何生成CAM刀具路径。不过,也可以在RoboDK中加载通用的五轴刀具路径文件,例如APT、NC或G代码格式文件。
更多有关机器人加工项目的范例,如 Mastercam、MecSoft/RhinoCAM、Inventor、FeatureCAM 或 Fusion 360。请访问帮助文档中的 CAM插件章节。
本范例将帮助你了解 RoboDK 中机器人加工的基础知识,以及如何将三轴机器人加工作业转换为机器人仿真和机器人程序。
Video:如何使用 RoboDK 机器人加工功能进行三轴机器人加工:https://www.youtube.com/watch?v=NH_htrrtSPg.
本示例将帮助你理解RoboDK中机器人加工的基础知识,以及如何将三轴机器人加工作业转换为机器人加工仿真和机器人程序。
该范例还将帮助你在不同的机器加工作业之间创建安全的接近/缩回动作。
Video:如何使用 RoboDK 机器人加工功能进行五轴机器人加工:https://www.youtube.com/watch?v=Pv7LljFTtI0.
本案例演示了配备3组外部轴的库卡(Kuka)机器人加工单元配置方案。该工作站集成六轴工业机器人、单轴单轴地轨及双轴变位机,实现多自由度协同运动。
更多信息请参见RhinoCAM范例。通过RhinoCAM与RoboDK集成接口,用户可直接APT格式的刀具路径导入RoboDK,自动生成机器人加工程序。
Video:https://www.youtube.com/watch?v=FMG-CkB4CL4&t=3422。
本范例演示如何将安川(Motoman)机器人用于激光切割应用。机器人切割刀具路径是使用Autodesk Fusion的RoboDK插件定义的。
Video:https://www.youtube.com/watch?v=MZcPXktyT8s。
本示例演示如何利用安川/莫托曼机器人进行机器人加工,以及Mastercam的插件。RoboDK支持自动加载由Mastercam生成的NCI或NC文件。
访问FCAMExample3x 获取更多信息。
Video:https://www.youtube.com/watch?v=tArHbCS2HK8
本范例演示如何使用 ABB 机器人去毛刺。这个例子包含了一个拾取和放置操作。
Video:https://www.youtube.com/watch?v=HaMICaEjaAk。
本范例展示了如何使用库卡(Kuka)机器人进行抛光。
Video:https://www.youtube.com/watch?v=N4aujsuiqy4。
本节介绍如何离线准备一个简单的RoboDK机器人加工项目。机器人加工单元必须至少包含一台机器人、一个工具(末端执行器)和一个参考坐标系(也称为坐标系、零件基准或基准面)。有关在RoboDK中新建工作站的具体操作,请参阅入门指南部分。
Note:更多范例和教程请参阅机器人加工范例。

下面的步骤展示了如何使用库卡(Kuka)KR210 机器人和 Teknomotor 铣削主轴准备机器人加工设置(该示例在库中的文件名为Sample-New-Project.rdk)。
1-选择一个机器人:
a.选择文件➔
b.使用筛选器按品牌、负载、... 等条件查找你需要的机器人。
例如,选择Kuka KR 210 R2700(负载210 千克,伸展距离2.7 米)。
c.选择 "下载",双击文件,机器人就会自动出现在主屏幕上。
2-选择工具:
a.在同一在线资源库中,选择重置可移除筛选器,并按Type筛选对应的工具。
b.选择 "下载 "以加载主轴工具,如 Teknomotor ATC71-C-LN 主轴。
c.主轴将自动连接到机器人上。
d.关闭机器人库窗口。
Tip:在RoboDK中可将3D模型作为对象导入并转换为工具。只需在工作站树中将模型对象拖放至机器人末端,即可快速完成工具定义。更多信息,请点击此处。
3-添加参考坐标系:
a.选择机器人基础坐标系(命名为KUKA KR210 R2700 Base)。
b.选择程序➔
c.双击参照物并输入坐标:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d.输入新名称或选择 F2,将新参考坐标系重命名为 "Milling Reference"。
4-添加用于机器人加工的物体(可选):
a.选择文件➔
b.从 RoboDK 资源库中选择名为 Object Chess Rook.sld 的物体:
C:/RoboDK/Library
c.如果物体没有自动放置在Milling Reference上,将其拖拽到下方即可。
Note:从加工文件创建机器人仿真和机器人程序时,无需加载物体对象。但加载物体对象有助于可视化设置并避免碰撞。
Tip:建议移动参考坐标系而非物体本身。当机器人加工程序准备就绪时,该参考坐标系将用于定位工件。
5-双击机器人,可查看机器人面板。机器人面板会显示当前使用的工具和参考坐标系。通过选择和调整工具及参考坐标系,我们应能看到与机器人控制器中显示的坐标一致。默认情况下,Teknomotor主轴的TCP(工具中心点)位于刀柄根部。工具(TCP)会具有一定的长度。在本示例中,我们会改变TCP以体现刀具切削部分的长度:
a.将工具 X 坐标 (TCP)数值调整为 375 毫米。你会看到 TCP 沿轴移动。
b.(可选)你也可以创建第二个工具,并通过沿Z轴添加平移来定义相对于第一个工具的TCP。
c.关闭机器人面板窗口。
Tip:更多有关定义设置及校准工具与参考坐标系的信息,详见定义工具 (TCP) 和定义参考坐标系章节。

Note: RoboDK工作站存储在一个文件(RDK文件)中。无需单独保存机器人文件、工具和对象,因为它们已随RDK文件一并存储。
请按照以下步骤在 RoboDK 中创建一个机器加工项目,导入一个通过 CAM 软件生成的 NC 文件(如 G 代码或 APT):
1.选择实用程序➔
如图所示,将弹出一个新窗口。
2.在路径输入旁点击 "选择 NC 文件
3.提供 NC 文件,例如以下 APT 机器加工文件:
C:/RoboDK/Library/Example-02.e-Robot Machining Chess Rook.apt
4.右键单击树中的新项目并选择重命名(F2),此处命名为Machining Settings,完成机器人加工项目的重命名。
Tip:直接加载 NC 文件以自动设置项目。你也可以将文件拖放到 RoboDK 窗口。
Note:你可以选择将窗口停靠在窗口的左边或者右边,窗口最终会固定在那个位置。

在菜单左上方选择机器人、参考坐标系和工具,如下图所示。相对于正确的坐标系,刀具路径应显示为绿色。

加工刀具路径以绿色显示,路径法线以白色矢量表示。取消勾选“工具轨迹可见”可隐藏刀具路径。
Tip:你可以在工具选项窗口,将某个工具(TCP)设置为相对于另一个 TCP 的偏移。这一功能非常实用——例如,当你以某个工具作为基准时,可通过长度偏移量快速校准其他工具。
Note:物体相对于参考系的定位必须与加工刀具路径相匹配。如不符合,需将物体参考系与加工参考系对齐,以确保实际装夹时可准确定位参考基准。
你可以选择 "更新"来查看是否可以使用默认设置创建机器人加工程序。如果程序生成成功,你会看到一个绿色的勾选标记。然后,你可以选择“模拟”或双击生成的程序来启动程序。
如果你看到带有警告信息的红叉,这意味着你的机器加工程序不可行。你可能需要更换刀具方向、优化参数、起始点或工件位置等设置。
以下部分提供有关如何自定义机器人加工设置的更多信息。
路径输入功能支持不同的提供刀具路径的方式。
●选择NC文件:如本节所述,需要一个从 CAM 软件生成的NC 文件。
●选择曲线:如曲线跟踪项目所述,作为一条或多条曲线。
在 RoboDK 中可以将曲线导入作为坐标列表。
●选择点:一个或多个点,如点跟踪项目部分所述。
可以在 RoboDK 中以坐标列表的形式导入点。
●3D 打印物体:作为 3D 打印的物体。使用切片器将几何图形转换为刀具路径

选择程序事件,出现一个显示生成机器人程序时考虑特殊事件的窗口。包括触发刀具更换、设置主轴转速(RPM单位),在程序开始/结束时触发特定程序。
你可以在程序事件中设定精度值。这将在程序开始时自动创建一个圆滑过渡指令,有助于使机器人加工程序运行更加流畅,避免机器人抖动。例如,在 ABB 机器人上,该值以毫米为单位设置 ZoneData 参数;在发那科(Fanuc)机器人上,这将以百分比%为单位设置 CNT 参数;在优傲(Universal Robots)控制器上,这将以毫米为单位设置路径混合参数。
如果你使用的是 G 代码或者NCI 文件,自定义 M 代码将默认作为 M_RunCode 的函数调用触发(M 代码作为参数传递)。你可以通过删除对 M_RunCode 的调用来移除自定义 M 调用。

将鼠标光标移至相应字段,了解更多信息,自定义每个部分。
例如,在更换刀具时,可以使用 %1 值来表示 CAM 软件提供的刀具 ID。如果你更喜欢触发静态函数而不是传递参数,可以用 SetTool%1 代替 SetTool(%1)。当使用刀具 2 时,将生成 SetTool2 而不是 SetTool(2)。
Note:你可以通过选择工具-选项-CAM-程序事件来更换默认事件。
Tip:你还可以使用后处理器自定义和过滤程序调用(后处理器的 RunCode 功能将处理程序调用或从程序事件中创建的自定义代码输入)。
你可以在机器加工菜单右上方自定义趋近和回退运动。默认情况下,RoboDK会沿法线方向添加100毫米的趋近和回退路径。
Note:默认正常设置位置在工具➔ 选项➔CAM中自定义。
选择 "+"可添加额外的缩放动作。绿色路径将相应更新。可以选择沿特定轴移动、提供坐标、弧形接近等。你还可以通过选择 "+ "按钮来组合多个进场/缩场动作。

点击 "- "按钮可移除特定的趋近或回退动作。
刀具路径偏移允许沿刀具路径更换刀具的首选方向。该选项主要用于让刀具绕TCP(工具中心点)的Z轴旋转。从而实现对工具轴(第 6轴)自由度的控制。根据应用需求,系统提供多种选项。例如,可选择最小的刀具姿态变化,或工具姿态跟随路径。
Note:大多数机器人加工设置中,Z轴沿切削轴线方向朝外延伸。默认情况下,刀具的Z轴将与刀路法向保持一致。
由于使用六轴机器人来执行三轴或五轴CNC加工程序时存在一个额外的自由度需要定义,该自由度通常为工具中心点(TCP)绕Z轴的旋转。这一额外自由度对于避免奇异点、关节限位、碰撞或可达性问题尤为有用。
Tip:将机器人移动到程序中的所需点,或与机器人一起移动到所需方向,然后选择设计。你可以按住Alt 键,拖动 TCP 的蓝色圆箭头,绕工具的 Z 轴旋转。此操作将更新默认设置,使刀具路径中的方向与你所需的方向一致。

默认情况下,工具路径偏置功能会显示一个 rotz(0) 变换(即绕工具Z轴旋转0度)。这意味着你可以额外添加一个绕工具Z轴的旋转角度。通过修改该值,可以设定刀具的首选方向,调整工具中心点(TCP)绕Z轴或其他组合轴的方向。首选方向是机器人在沿刀具路径运动时,会尽量保持的工具姿态。
Tip:选择 "显示优选的工具路径",然后在 "路径对于工具的偏移 "上移动鼠标滚轮,即可快速预览机器人刀具路径。

Tip:参考坐标系部分提供了有关输入位置和方向的其他方法的更多信息。
默认情况下,RoboDK 使用最小的刀具姿态变化算法。这意味着沿刀具路径尽可能保持刀具方向不变。一般来说,该选项适用于铣削操作,因为它能最大限度地减少机器人关节的运动。另外,还有其他算法可供选择,例如工具姿态跟随路径(适用于切割应用,刀片需要沿路径保持相切),或者如果刀具路径需要跟随附着在机器人刀具上(例如,用于分发或抛光应用,也称为远程 TCP 配置),则由机器人抓住物体。
Tip:选择 "显示优选的工具路径 "按钮,可以立即看到方向改变后的结果。
Tip:当光标位于rotz(0) 文本上方时,使用鼠标滚轮可逐步修改方向。
在设定刀具首选方向后,机器人可拥有绕工具Z轴一定范围内的旋转自由度。这一功能使机器人能够通过调整工具角度来规避奇异点和关节限位,并确保所有路径点均可到达。默认情况下,RoboDK允许工具绕TCP轴旋转±180度,并以20度为增量进行调整。
建议根据应用情况对旋转进行限制。例如,可以输入 +/-90 度,将允许的旋转限制为一半。减少该参数还可以缩短获取程序的处理时间。
Tip: 选择显示预估的工具路径,可查看可达点(绿色)和不可达点(红色)。为满足机器人可达性,系统可能对可达点进行旋转调整,使其偏离预设刀具路径。
如果路径中的某些点无法到达,建议旋转参考坐标系或放宽工具Z轴旋转的限制。可通过按住Alt键并拖动坐标系来移动参考框架,使其更好地适配机器人工作空间内的零件。
Note: 当修改参考坐标系或 TCP 时(如果选中自动更新选项),将显示估计刀具路径。这可以指导你找到机器人加工操作的最佳位置。
Tip:步长值越小,工具在穿越奇点时的方向调整就越渐进。另一方面,计算刀具路径可能需要更长的时间。

Note:将绕Z轴的允许旋转角度设置为0度,可根据首选方向完全约束工具。对于机器人工作在远离奇异点或轴限位的简单应用场景,也可将此旋转角度设为0度。该设置尤其适用于大型3D铣削应用,此时工具通常需保持固定方向。
RoboDK 会自动选择起点的首选关节的初始配置。从该点开始,机器人将执行线性运动,因此其关节配置不会发生改变。
下拉菜单将显示启动程序的所有可能方案。如有需要,可选择首选的机器人关节配置,然后选择 "更新 "重新计算程序。
程序界面会以下拉菜单形式显示所有可能的起始关节解。如需调整,可选择偏好的机器人关节配置,并点击更新,重新计算程序。
Tip:该选项允许你创建具有特定配置的程序,如非翻转、肘部向上和前旗。如果需要在轨迹前预绕一个多转关节(如关节 6),这也特别有用。然后,该关节将在路径过程中松开,而不会达到其极限,从而使该轨迹完全一次性完成。

点击"更新"按钮,根据当前设置生成机器人加工程序。若程序可成功创建,将显示绿色勾选标记。随后工作站内会出现一个名为"Machining"的程序。

双击生成的
右击程序,选择生成机器人程序(F6),生成机器人程序。更多信息,请参阅程序。
Note:默认情况下,RoboDK 隐藏程序的指令。右键单击程序并选择显示指令,即可查看指令列表。黄色箭头显示程序是否正在模拟以及正在执行的指令。

你可以将算法设置为保持工具姿态(方向)沿路径恒定。这种行为适用于切割或焊接等应用场景。
在 "选择算法 "下拉菜单中选择 "工具姿态跟随路径"以重新计算优选刀具路径。其余设置与采用恒定刀具方向的机器加工项目相同。

可以在机器人手持对象/工具(如胶枪或抛光头)并执行制造操作(如点胶或抛光)的同时对其进行编程。这种技术适用于需要实时调整路径的场景,例如胶水喷涂或表面抛光等应用。此类机器人编程方式也被称为远程工具中心点(Remote TCP)编程。
在 "选择算法 "下拉菜单中选择 "机器人保持物体",以便在 TCP 参考上正确放置刀具路径。其他设置与具有恒定工具方向的机器加工项目相同。
Important:如果工具(如胶枪或抛光头)的姿态(方向)需要改变,强烈建议将工具路径上的点位设置得彼此靠近。

Video:该范例展示了发那科(Fanuc)机器人分发胶水:https://www.youtube.com/watch?v=YrepmoQtNnA。
更多信息详见Autodesk Fusion插件 。
通过曲线跟踪项目(CFP)可以让机器人沿3D空间完成曲线运动。RoboDK中的曲线可从物体边缘选取,或以点坐标列表形式通过CSV文件导入。曲线跟踪项目适用于机器人焊接、去毛刺、抛光或喷涂等制造工艺。
Tip:曲线可带有法向量,该向量将与刀具Z轴对齐(通常垂直于曲面)。
曲线跟踪项目的操作流程如下:
1.在主菜单栏点开实用程序➔ 曲线跟踪项目,打开曲线跟踪设置。这里的设置大部分与机器加工项目一致,唯一的区别是路径输入的下拉选项默认为选择曲线。
2.点击选择曲线按钮,在屏幕上选择曲线。

Note:通过 RoboDK 提供的各种工具创建或提取曲线。另外,大多数 CAD 软件的 RoboDK 插件会自动创建曲线,并在曲线跟踪项目中选择这些曲线。在这种情况下,你可以配置机器人刀具路径,如机器人加工章节所示。
Tip:曲线有一个法向量,它将与工具 Z 轴(默认情况下通常为表面法线)相匹配。
3.用鼠标左键选择曲线。两次选择同一条曲线将调换运动方向。此外,右键单击之前选中的曲线也可以交换运动方向或取消选中之前选中的曲线。

Note:绿色数字显示了运动的顺序。
Tip:如果曲线靠的太近影响了选择,可以到菜单栏中选择工具➔选项➔显示,找到“选择曲线灵敏度”,调低数值即可。你也可以按一次或多次减 (-) 键来缩小绿色箭头的大小。
在 3D 窗口上单击右键,选择 "完成",或按 Esc 键返回设置菜单。绿色路径将显示机器人相对于物体的运动轨迹。
4.选择 "更新",看看能否用默认设置创建机器人程序。如果程序生成成功,你会看到一个绿色的复选标记。然后,你可以选择“模拟”或双击生成的程序,查看模拟是否开始。
在设置的右上方还有其他选项,例如工具速度以及是否必须对每条曲线应用趋近/回退移动。默认设置如下图所示:

Note:除其他外,"程序事件 "设置还可更改进场和缩回运动时的运动速度。
该程序可利用机器人加工所示的相同功能进一步定义和优化。
在主菜单中选择:工具➔ 创建曲线,就可以从3D对象特征中提取曲线。

RoboDK 窗口左侧将出现一个面板,只要该面板处于活动状态,且 "自动提取曲线"选项已启用,你就可以提取曲线。

Tip:若要从3D对象中提取特征并获得最佳效果,导入零件时应使用STEP或IGES格式的原始文件。
你可以将光标悬停在想要提取曲线的 3D 对象上。此时会出现一条纤细的浅蓝色线条,该线条即代表提取出的曲线。不同点位上的白色箭头表示曲线的法向量,这一方向也是工具(如机器人工具)将从中趋近的方向。

Note:RoboDK 会根据活动曲面自动提取精确描述曲线所需的最少点数。这些点的分辨率受物体CAD 导入设置影响。
你可以通过轻微上下或左右移动鼠标来改变曲线法线(进刀方向)的朝向。默认步进角度为15度,可以通过“创建曲线”面板上的“倾斜步长(度)”调整。
识别出正确的曲线后,无需移动鼠标直接点击它。重复此操作,直到选中要在曲线跟随项目中使用的所有曲线。
Note:RoboDK为普通物体、包含曲线的物体以及仅含曲线的项目(无3D模型或曲面的对象)设置了不同的图标。你可能需要刷新项目的可见性才能看到这一变化。

RoboDK提供多种工具帮助你在提取曲线后仍能进行修改。若只需调整法线方向,可通过"工具➔修改曲线"功能实现。此功能允许你更改任意已创建曲线的法线朝向。
RoboDK 可以从多种来源创建或获取曲线。以下列举的工具示例均可生成适用于曲线跟踪项目的曲线:
a.从导入 RoboDK 的 3D物体中提取特征
c.使用CAD/CAM 插件导入曲线
e.使用使用表面图案生成器应用程序
f.使用RoboDK API 与外部应用程序集成
g.使用手部探头,例如RoboDK TwinTrack
在RoboDK中,选择“实用工具➔导入曲线”,打开CSV或文本文件。导入后,工作站中将新增一个显示曲线对象的项目。

Tip:将 CSV 文件(.csv 格式)拖放到 RoboDK 的主窗口,即可自动将该文件作为曲线导入。

该文件可以是一个文本文件,包含曲线上每个点的3D坐标。可选择以 i、j、k 向量的形式提供工具 Z 轴的方向。所有坐标必须相对于零件的坐标系。
Note:在 RoboDK 中加载STEP 或 IGES 文件时,可自动提取物体边缘(更多信息请参阅STEP/IGES 导入)。
可以选择将物体的现有曲线导出为 CSV 文件(右键单击曲线,然后选择导出曲线),修改后重新导入 RoboDK。

有关如何自定义导入 CSV 或 TXT 文件作为曲线或点的更多信息和范例,请参阅RoboDK API 的范例。
使用 RoboDK,你可以轻松模拟机器人沿点轨迹运动的功能。RoboDK 中的点可以从物体、曲线中提取,或通过CSV文件导入点坐标列表。该功能特别适用于点焊或钻孔等应用场景。以下视频演示了如何设置点焊应用:观看Video。
Note:大多数 CAD 软件的 RoboDK 插件会自动创建点,并在点跟踪项目中选择这些点。在这种情况下,你可以按照机器人加工部分所示配置机器人刀具路径。
Tip:点可带有法向量,该向量将与工具Z轴对齐(通常垂直于表面)。
选择实用程序➔ 点跟踪项目,打开点跟踪设置。这些设置与机器加工项目相同,唯一不同的是路径输入预设为选择点。

点击"选择点"后,选择屏幕上的点(或多个点)。

右键选择点。重复选择同一顶点可切换逼近方向。右键点击某顶点后选择“选择下一个”,可选中后续相连的顶点。

Note:运动顺序以绿色数字显示。
Tip:若点之间距离过近,请选择工具➔选项➔显示,并降低点选灵敏度。
右键点击屏幕并选择“完成”或按Esc键返回设置菜单。绿色路径将显示机器人相对于物体的运动轨迹。
“设置界面的右上角还有一些额外选项,例如运行速度和接近点。默认设置显示在下一张图片中:”

Note:除其他外,"程序事件 "设置还可更改进场和缩回运动时的运动速度。

在主菜单栏选择:实用程序➔导入点,文件格式可以是文本文件,也可以是CSV文件。站点中将显示一个图标

Tip:将文本文件(.txt格式)拖放到RoboDK窗口中,即可自动将其作为点列表导入。

该文件可以是包含曲线上各点3D坐标的文本文件。此外,还可选地提供一个表示工具Z轴方向的i、j、k向量。
Note:参数化物体文件(如 STEP 和 IGES 文件)中的点默认为自动导入(更多信息请参见STEP/IGES导入部分)。
也可以选择将物体的现有曲线转换为点,方法是右键单击曲线,然后选择:提取曲线点。

增材制造(或称3D打印)是指通过数字文件制作3D实体物件的过程。利用工业机械臂配合RoboDK软件,可实现三轴或五轴3D打印。以下视频概述了如何通过RoboDK离线设置3D打印流程:观看Video。
机器人3D打印可通过以下方式之一实现:
●通过RoboDK直接将G代码程序(NC文件)转换为机器人程序,如机器加工项目所示。系统会精确计算每个运动中的材料流速(挤出机指令E),并可作为程序事件集成到生成的程序中。G代码是RoboDK支持的一种NC文件格式,也是许多3D打印机兼容的格式。大多数切片软件可根据STL文件生成G代码。
Note:切片软件负责将3D模型转换为机器可识别的指令(G代码)。这些指令通过设定挤出机路径及流量速率来指导打印。要实现机器人3D打印,需将RoboDK与切片软件配合使用。
Tip:右键单击 RoboDK 中的物体,将其保存为 STL。
●在菜单栏选择实用程序➔ 3D 打印项目,打开3D 打印设置。

Note:这些设置与机器人加工项目相同,唯一不同的是路径输入预设为3D打印对象。点击选择对象,在主屏幕上选择物体并自动获取刀具路径。选择 3D 打印选项,打开 Slic3r。

Important:选择3D打印物体选项时,可默认使用切片器Slic3r将物体转换为刀具路径。或者也可以通过生成 G 代码程序并将其转换为机器人加工项目程序来使用其他切片器,如图所示。

默认情况下,RoboDK 将E指令位移为对名为Extruder的程序的程序调用,并将 E 值作为参数传递。选择程序事件可更改这一行为。

挤出机值 (E) 表示每次移动前需要挤出多少材料。考虑到机器人的速度和各点之间的距离,该值可用于驱动机器人的挤出机进料。
另外,也可以使用后处理器计算挤出机进料,并相应生成适当的代码。下文将提供一个范例。
Note:某些机器人控制器可使机器人运动与挤出机进给自动同步。在这种情况下,你需要在后处理器中将挤出机设置为外轴。
本节介绍如何修改机器人后处理器,以便在执行3D 打印的运动指令前计算挤出机速度。另外,也可以在机器人控制器上通过挤出机程序调用(驱动挤出机的默认指令)进行这些操作。
通过自定义机器人后处理器,可以在将程序发送至机器人之前,更轻松地集成3D打印挤出机。为实现这一目标,我们需要在机器人后置处理器生成程序时进行相关计算并输出定制化代码。
Note:部分后处理器(如ABB RAPID IRC5、KUKA KRC2和Comau后处理器)默认已实现这些建议的修改。
第一步是拦截挤出机调用,并在后处理器的RunCode部分读取新的挤出机值(E值)。以下部分处理为程序生成的所有程序调用:
def RunCode(self, code, is_function_call = False):
if is_function_call:
if code.startswith("Extruder("):
# Intercept the extruder command.
# if the program call is Extruder(123.56)
# we extract the number as a string
# and convert it to a number
self.PRINT_E_NEW = float(code[9:-1])
# Skip the program call generation
return
else:
self.addline(code + "()")
else:
# Output program code
self.addline(code)
挤出机数值(长度/E)在机器人后处理器中被保存为PRINT_E_NEW变量。
我们需要在每个新的线性运动指令处触发名为new_move的函数调用。可以在MoveL命令的开头添加这个调用:
def MoveL(self, pose, joints, conf_RLF=None):
"""Add a linear movement"""
# Handle 3D printing Extruder integration
self.new_move(pose)
...
我们还必须在后处理器的文件头部添加以下变量以计算挤出机增量:
# 3D Printing Extruder Setup Parameters:
PRINT_E_AO = 5 # Analog Output ID to command the extruder flow
PRINT_SPEED_2_SIGNAL = 0.10 # Ratio to convert the speed/flow to an analog output signal
PRINT_FLOW_MAX_SIGNAL = 24 # Maximum signal to provide to the Extruder
PRINT_ACCEL_MMSS = -1 # Acceleration, -1 assumes constant speed if we use rounding/blending
# Internal 3D Printing Parameters
PRINT_POSE_LAST = None # Last pose printed
PRINT_E_LAST = 0 # Last Extruder length
PRINT_E_NEW = None # New Extruder Length
PRINT_LAST_SIGNAL = None # Last extruder signal
最后,我们需要定义一个新的程序,该程序将根据运动间距、机器人速度和机器人加速度生成适当的挤出机进给指令。这需要假设挤出机进给是由特定的模拟输出或自定义程序调用驱动的。
我们需要在 def MoveL 程序定义前添加以下代码。
Important:在RoboDK中为机器人编程时使用四舍五入值有助于保持恒定速度并减少加速度行为的影响。此时,时间可按距离/速度计算得出。
def calculate_time(self, distance, Vmax, Amax=-1):
"""Calculate the time to move a distance with Amax acceleration and Vmax speed"""
if Amax < 0:
# Assume constant speed (appropriate smoothing/rounding parameter must be set)
Ttot = distance/Vmax
else:
# Assume we accelerate and decelerate
tacc = Vmax/Amax;
Xacc = 0.5*Amax*tacc*tacc;
if distance <= 2*Xacc:
# Vmax is not reached
tacc = sqrt(distance/Amax)
Ttot = tacc*2
else:
# Vmax is reached
Xvmax = distance - 2*Xacc
Tvmax = Xvmax/Vmax
Ttot = 2*tacc + Tvmax
return Ttot
def new_move(self, new_pose):
"""Implement the action on the extruder for 3D printing, if applicable"""
if self.PRINT_E_NEW isNone or new_pose is None:
return
# Skip the first move and remember the pose
if self.PRINT_POSE_LAST isNone:
self.PRINT_POSE_LAST = new_pose
return
# Calculate the increase of material for the next movement
add_material = self.PRINT_E_NEW - self.PRINT_E_LAST
self.PRINT_E_LAST = self.PRINT_E_NEW
# Calculate the robot speed and Extruder signal
extruder_signal = 0
if add_material > 0:
distance_mm = norm(subs3(self.PRINT_POSE_LAST.Pos(), new_pose.Pos()))
# Calculate movement time in seconds
time_s = self.calculate_time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)
# Avoid division by 0
if time_s > 0:
# This may look redundant but it allows you to account for accelerations and we can apply small speed adjustments
speed_mms = distance_mm / time_s
# Calculate the extruder speed in RPM*Ratio (PRINT_SPEED_2_SIGNAL)
extruder_signal = speed_mms * self.PRINT_SPEED_2_SIGNAL
# Make sure the signal is within the accepted values
extruder_signal = max(0,min(self.PRINT_FLOW_MAX_SIGNAL, extruder_signal))
# Update the extruder speed when required
if self.PRINT_LAST_SIGNAL isNone or abs(extruder_signal - self.PRINT_LAST_SIGNAL) > 1e-6:
self.PRINT_LAST_SIGNAL = extruder_signal
# Use the built-in setDO function to set an analog output
self.setDO(self.PRINT_E_AO, "%.3f" % extruder_signal)
# Alternatively, provoke a program call and handle the integration with the robot controller
#self.addline('ExtruderSpeed(%.3f)' % extruder_signal)
# Remember the last pose
self.PRINT_POSE_LAST = new_pose