您可以像使用机床(三轴或五轴数控机床)一样使用工业机器人。为了达到与数控机床相同的效果,工业机器人需要使用 RoboDK 等先进的离线编程软件,将机器程序转换为机器人程序。RoboDK 支持将 APT、G 代码 ACL、TAP 或 NCI 等机器程序转换为机器人仿真和机器人程序。
机器人加工包括不同的材料去除应用,如铣削、钻孔、倒角和去毛刺,通常由自动机床(数控机床)完成。
零件尺寸由计算机辅助设计(CAD)软件定义,然后由计算机辅助制造(CAM)软件位移为制造程序(如 G 代码)。然后,可使用 RoboDK 的离线编程工具将制造程序转换为机器人程序。
可以创建附加轴,如转台和/或线性导轨,并与机器人同步,以扩展工作空间。
本节展示了一些涉及机器人加工的示例。其中一些示例包括使用插件来演示如何生成 CAM 刀具路径。不过,您可以在 RoboDK 中加载任何通用的五轴刀具路径,如 APT、NC 或 G 代码文件。
请访问我们帮助文档中的 CAM 附加插件部分,了解更多有关机器人加工项目的示例,如 Mastercam、MecSoft/RhinoCAM、Inventor、FeatureCAM 或 Fusion 360。
本示例将帮助您了解 RoboDK 中机器人加工的基础知识,以及如何将三轴机器人加工作业转换为机器人加工仿真和机器人程序。
视频:如何使用 RoboDK 机器人加工功能进行三轴机器人加工:https://www.youtube.com/watch?v=NH_htrrtSPg。
本例将帮助您了解如何在 RoboDK 中配置机器人加工设置,以及如何将五轴机器人加工作业转换为机器人加工仿真和机器人程序。
该示例还将帮助您在不同的机器加工作业之间创建安全的接近/缩回动作。
视频:如何使用 RoboDK 机器人加工功能进行五轴机器人加工:https://www.youtube.com/watch?v=Pv7LljFTtI0。
本示例展示了如何使用带有 3 个附加外轴的库卡(Kuka)机器人进行机器加工。机器人单元包括一个 6 轴机器人手臂、一个单轴导轨和一个 2 轴转台。
更多信息请参见 RhinoCAM 示例部分。RhinoCAM 与 RoboDK 的集成可自动将 APT 文件从 RhinoCAM 载入 RoboDK。
视频:https://www.youtube.com/watch?v=FMG-CkB4CL4&t=3422。
本示例展示了如何将安川(Motoman)机器人用于激光切割应用。机器人切割刀具路径是使用 Autodesk Fusion 的 RoboDK 插件定义的。
视频:https://www.youtube.com/watch?v=MZcPXktyT8s。
本示例演示了如何使用安川(Motoman)机器人进行机器人加工,以及如何使用用于 Mastercam 的 插件RoboDK。RoboDK 支持自动加载由 Mastercam 生成的 NCI 或 NC 文件。
访问 :FCAMExample3x 获取更多信息。
视频:https://www.youtube.com/watch?v=tArHbCS2HK8。
本示例演示如何使用 ABB 机器人去毛刺。该示例包括取放操作。
视频:https://www.youtube.com/watch?v=HaMICaEjaAk。
本示例展示了如何使用库卡(Kuka)机器人进行抛光。
视频:https://www.youtube.com/watch?v=N4aujsuiqy4。
本节介绍如何离线准备一个简单的 RoboDK 项目,用于机器人加工。机器人加工单元必须至少有一个机器人、一个工具(EOAT)和一个参考坐标系(也称为坐标系、零件参考或基准)。有关在 RoboDK 中建立新工作站的更多信息,请参阅入门部分。
注:更多示例和教程请参阅机器人加工示例部分。
下面的步骤展示了如何使用库卡(Kuka)KR210 机器人和 Teknomotor 铣削主轴准备机器人加工设置(此示例在资源库中以 Sample-New-Project.rdk 的形式提供)。
1-选择一个机器人:
a.选择文件➔ 打开在线资源库。
b.使用筛选器按品牌、负载、... 等条件查找您需要的机器人。
例如,选择库卡(Kuka)KR210 R2700(负载 210 千克,伸展距离 2.7 米)。
c.选择 "下载",机器人就会自动出现在主屏幕上。
2-选择工具:
a.在同一在线资源库中,选择重置可移除筛选器,并按类型筛选➔ 工具。
b.选择 "下载 "以加载主轴工具,如 Teknomotor ATC71-C-LN 主轴。
c.主轴将自动连接到机器人上。
d.关闭在线资源库窗口。
提示:您可以将三维模型作为物体载入RoboDK,并将其转换为工具。通过将物体拖放到工作站树中的机器人上,可以将任何物体转换为工具。更多信息,请点击此处。
3-添加参考坐标系:
a.选择机器人基础坐标系(命名为库卡 KR210 R2700 基础)。
b.选择程序➔ 添加参考坐标系。机器人底座将添加一个新的参考坐标系。
c.双击参照物并输入坐标:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d.输入新名称或选择 F2,将新参考坐标系重命名为 "铣削参考"。
4-添加用于机器人加工的物体(可选):
a.选择文件➔ 打开
b.从 RoboDK 资源库中选择名为 Object Chess Rook.sld 的物体:
C:/RoboDK/Library
c.如果物体没有自动放置在铣削参考点上,则将其拖放到铣削参考点上(在工作站树内)。
注:从机器加工文件创建机器人模拟和机器人程序时,并不需要加载物体。但是,物体可以帮助可视化设置并防止碰撞。
提示: 建议移动参考坐标系而不是物体。一旦机器人加工程序准备就绪,参考坐标系将用于定位工件。
5-双击机器人,查看机器人面板(可选)。机器人面板会显示激活工具和激活参考坐标系。通过选择并更新工具和参考坐标系,我们应该可以在机器人控制器中看到相同的坐标。默认情况下,Teknomotor 主轴的 TCP 位于刀架根部。工具(TCP)会有一定的长度。在本示例中,我们将更新 TCP,以代表工具刀的长度:
a.将工具 X 坐标 (TCP) 更新为 375 毫米。你会看到 TCP 沿轴移动。
b.(可选)您还可以创建第二个工具,并通过添加沿 Z 轴的位移来定义相对于第一个工具的相对 TCP。
c.关闭机器人面板窗口。
提示:有关定义设置以及校准工具和参考坐标系的更多信息,请参阅定义参考坐标系定义工具 (TCP) 和部分。
注:RoboDK 工作站存储在一个文件(RDK 文件)中。无需单独保存机器人文件、工具和物体的副本,因为它们与 RDK 文件一起保存。
请按照以下步骤在 RoboDK 中设置一个新的机器加工项目,该项目给定一个使用 CAM 软件(如 G 代码或 APT)生成的 NC 文件:
1.选择实用工具➔ 机器人机器加工项目(Ctrl+M)。
如图所示,将弹出一个新窗口。
2.在路径输入部分选择 "选择 NC 文件
3.提供 NC 文件,例如以下 APT 机器加工文件:
C:/RoboDK/Library/Example-02.e-Robot Machining Chess Rook.apt
4.右键单击树中的新项目并选择重命名 (F2),将机器人加工项目重命名为 "机器加工设置"。
小贴士直接加载 NC 文件以自动设置项目。可以将文件拖放到 RoboDK 窗口。
注意:您可以选择将窗口停靠在窗口的右侧或左侧。
在菜单左上方选择机器人、参考坐标系和工具,如下图所示。相对于正确的坐标系,刀具路径应显示为绿色。
机器加工刀具路径显示为绿色,路径法线显示为白色向量。取消选中 "可见刀具路径 "可隐藏刀具路径。
提示:可以在工具选项窗口中设置一个工具 (TCP) 相对于另一个 TCP。如果将一个工具作为参考,并根据长度偏移调整其他工具,这将非常有用。
注意: 相对于参考坐标系的物体必须与机器加工刀具路径一致。如果不是这种情况,请将物体参照对齐与机器加工参照,以便在实际设置中定位参照。
您可以选择 "更新",看看能否用默认设置创建机器人加工程序。如果程序生成成功,您会看到一个绿色的复选标记。然后,您可以选择模拟或双击生成的程序,查看模拟是否开始。
如果您看到带有警告信息的红叉,这意味着您的机器加工程序不可行。您可能需要更换刀具方向、优化参数、起始点或工件位置等设置。
以下章节将详细介绍如何自定义机器加工设置。
通过路径输入,您可以选择不同的方式来提供刀具路径。
●选择 NC 文件:如本节所述,作为一个 NC 文件(从 CAM 软件获取)。
●选择曲线:如曲线追踪项目部分所述,作为一条或多条曲线。
在 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)。
注:您可以通过选择工具-选项-CAM-程序事件来更换默认事件。
提示:您还可以使用后处理器自定义和过滤程序调用(后处理器的 RunCode 功能将处理程序调用或从程序事件中创建的自定义代码输入)。
您可以在机器加工菜单右上方自定义进给和缩回运动。默认情况下,RoboDK 沿法线添加 100 毫米的接近和缩回插件。
注:默认正常方法可在工具➔ 选项➔ CAM 菜单中自定义。
选择 "插件 "可添加额外的缩放动作。绿色路径将相应更新。可以选择沿特定轴移动、提供坐标、弧形接近等。您还可以通过选择 "添加 "按钮来组合多个进场/缩场动作。
选择 "移除 "可移除特定的进场或缩场动作。
刀具路径偏移允许沿刀具路径更换刀具的首选方向。该选项主要用于围绕 TCP 的 Z 轴转动工具。这样可以处理刀具轴周围的 6(th)自由度。根据应用及其要求,可提供多个选项。例如,可以选择最小化刀具方向或沿路径跟踪刀具方向。
注: 大多数机器人加工设置的 Z 轴都沿着切割轴,指向外侧。默认情况下,工具的 Z 轴将与刀具路径的法线相匹配。
由于六轴机器人用于跟踪三轴或五轴数控机床制造程序,因此我们还需要定义一个额外的自由度。这个自由度通常是绕 TCP 的 Z 轴旋转。这个额外的自由度对于避免奇异点、关节限制、碰撞或可达性问题特别有用。
提示:将机器人移动到程序中的所需点,或与机器人一起移动到所需方向,然后选择示教。您可以按住 Alt 键,拖动 TCP 的蓝色圆箭头,绕工具的 Z 轴旋转。此操作将更新默认设置,使刀具路径中的方向与您所需的方向一致。
默认情况下,路径到工具偏移显示的是 rotz(0) 变换。这意味着可以围绕工具的 Z 轴添加额外的旋转。可以通过修改该值来建立工具的首选方向,修改围绕 TCP Z 轴的方向或结合其他轴的方向。首选方向是机器人在遵循刀具路径时尽量保持的方向。
提示:选择 "显示首选刀具路径",然后在 "路径到刀具偏移量 "上移动鼠标滚轮,即可快速预览机器人刀具路径。
提示:参考坐标系部分提供了有关输入位置和方向的其他方法的更多信息。
默认情况下,RoboDK 使用最小刀具方向更换算法。这意味着沿刀具路径尽可能保持刀具方向不变。一般来说,该选项适用于铣削操作,因为它能最大限度地减少机器人关节的运动。另外,还有其他算法/方法可供选择,例如刀具方位跟随刀具路径(适用于切割应用,刀片需要沿路径保持相切),或者如果刀具路径需要跟随附着在机器人刀具上(例如,用于分发或抛光应用,也称为远程 TCP 配置),则由机器人夹持物体。
提示:选择 "显示首选刀具路径 "按钮,可以立即看到方向改变后的结果。
提示:当光标位于 rotz(0) 文本上方时,使用鼠标滚轮可逐步修改方向。
给定一个首选的工具方向,机器人可以有一定的自由度绕工具的 Z 轴转动。这样,机器人在解算程序时就能避免机器人奇异点、关节限制,并确保所有点都能到达。默认情况下,RoboDK 允许工具以 20 度为增量,绕 TCP 轴旋转最多 +/-180 度。
建议根据应用情况对旋转进行限制。例如,可以输入 +/-90 度,将允许的旋转限制为一半。减少该参数还可以缩短获取程序的处理时间。
提示: 选择显示估计刀具路径,可查看可达点(绿色)和不可达点(红色)。可到达点可能会相对于首选刀具路径进行旋转,以使机器人可到达目标。
如果路径上的某些点无法到达,建议旋转参考坐标系,或者对工具 Z 旋转更加宽容。按住 Alt 键并拖动坐标系,可以移动参考坐标系,使其更适合机器人工作区内的工件。
注: 当修改参考坐标系或 TCP 时(如果选中自动更新选项),将显示估计刀具路径。这可以指导您找到机器人加工操作的最佳位置。
提示:步长值越小,工具在穿越奇点时的方向调整就越渐进。另一方面,计算刀具路径可能需要更长的时间。
注:将允许的绕 Z 轴旋转设为 0 度,以便根据首选方向对工具进行完全约束。对于机器人工作时远离奇异点或轴限制的简单应用,也可将旋转角度设为 0 度。这对于大型 3D 铣削应用非常有用,因为在这种应用中,工具应基本保持同一方向。
RoboDK 会自动选择更接近首选起始关节(起始点的首选关节)的起始配置。从这一点开始,机器人将进行线性运动,因此机器人配置不会改变。
下拉菜单将显示启动程序的所有可能方案。如有需要,可选择首选的机器人关节配置,然后选择 "更新 "重新计算程序。
提示:该选项允许您创建具有特定配置的程序,如非翻转、肘部向上和前旗。如果需要在轨迹前预绕一个多转关节(如关节 6),这也特别有用。然后,该关节将在路径过程中松开,而不会达到其极限,从而使该轨迹完全一次性完成。
选择 "更新",根据提供的设置生成机器人程序。如果程序可以成功创建,则会显示绿色复选标记。然后,您将在工作站中看到一个名为 "机器加工 "的新程序。
双击生成的程序或选择模拟,开始机器人加工模拟。
右击程序,选择生成机器人程序(F6),生成机器人程序。有关程序生成的更多信息,请参阅程序部分。
注:默认情况下,RoboDK 隐藏程序的指令。右键单击程序并选择显示指令,即可查看指令列表。黄色箭头显示程序是否正在模拟以及正在执行的指令。
您可以设置算法,使工具沿路径的方向保持不变。例如,这种行为可能对切割或焊接应用有用。
在 "选择算法 "下拉菜单中选择 "刀具方向跟随路径",重新计算首选刀具路径。其他设置与具有恒定刀具方向的机器加工项目相同。
当机器人与刀具路径一起夹持物体/刀具路径,同时进行制造操作时,可以对机器人进行程序设计。例如,这对于分发胶水或抛光应用非常有用。这种机器人编程方式也称为远程 TCP。
在 "选择算法 "下拉菜单中选择 "机器人保持物体",以便在 TCP 参考上正确放置刀具路径。其他设置与具有恒定工具方向的机器加工项目相同。
重要提示:强烈建议在更换刀具方向时,刀具路径的各点相互靠近。
视频:该示例展示了使用发那科(Fanuc)机器人分发胶水的应用:https://www.youtube.com/watch?v=YrepmoQtNnA。
更多信息,请参阅 "Autodesk Fusion 的 插件 RoboDK "部分。
您可以曲线追踪项目(CFP)让机器人在三维空间中追踪曲线。RoboDK 中的曲线可以从物体边缘选择,也可以作为 CSV 文件中的点列表导入。曲线追踪项目对于某些制造操作非常有用,例如机器人焊接、去毛刺、抛光或上漆等。
提示曲线可以有一个与工具 Z 轴(通常是表面的法线)相匹配的法向量。
要与 CFP 合作,请遵循以下程序:
1.单击实用程序➔ 曲线追踪项目,打开曲线追踪设置。这些设置与机器加工项目相同,唯一的区别是路径输入预设为选择曲线。
2.点击选择曲线按钮,在屏幕上选择曲线。
注:您可以通过 RoboDK 提供的各种工具创建或提取曲线。另外,大多数 CAD 软件的 RoboDK 插件会自动创建曲线,并在曲线追踪项目中选择这些曲线。在这种情况下,您可以配置机器人刀具路径,如机器人加工部分所示。
小贴士曲线有一个法向量,它将与工具 Z 轴(默认情况下通常为表面法线)相匹配。
3.用鼠标左键选择曲线。两次选择同一条曲线将调换运动方向。此外,右键单击之前选中的曲线也可以交换运动方向或取消选中之前选中的曲线。
注意:运动顺序以绿色数字显示。
提示:选择工具➔选项➔ 显示,如果曲线之间的距离太近,可降低曲线拾取灵敏度。您还可以按一次或多次减 (-) 键来缩小绿色箭头的大小。
在 3D 窗口上单击右键,选择 "完成",或按 Esc 键返回设置菜单。绿色路径将显示机器人相对于物体的运动轨迹。
4.您可以选择 "更新",看看能否用默认设置创建机器人程序。如果程序生成成功,您会看到一个绿色的复选标记。然后,您可以选择模拟或双击生成的程序,查看模拟是否开始。
在设置的右上方还有其他选项,例如工具速度以及是否必须对每条曲线应用接近/缩回移动。默认设置如下图所示:
注:除其他外,"程序事件 "设置还可更改进场和缩回运动时的运动速度。
该程序可利用机器人加工部分所示的相同功能进一步定制和优化。
通过选择工具➔ 创建曲线,可以从导入 RoboDK 的三维物体特征中提取曲线。
RoboDK 窗口左侧将出现一个面板,只要该面板处于活动状态,且 "自动提取曲线 "选项处于启用状态,您就可以提取曲线。
提示:从三维物体中提取特征时,为了达到最佳效果,导入零件时使用的原始文件格式应为 STEP 或 IGES 文件。
您可以将光标悬停在要提取曲线的三维物体上。这时会出现一条浅蓝色的细线,代表曲线。不同点上的白色箭头代表曲线的法线,这也是工具将接近的方向。
注:RoboDK 会根据活动曲面自动提取精确描述曲线所需的最少点数。这些点的分辨率受物体的 CAD 导入设置影响。
您可以通过轻轻垂直或水平移动鼠标来改变曲线法线的方向(接近方向)。默认步长为 15 度,由创建曲线面板上的 "倾斜步长(度)"选项控制。
找到合适的曲线后,单击该曲线,不要移动鼠标。重复精度,直到选中要在曲线追踪项目中使用的所有曲线。
注:RoboDK 对一般物体项、包含曲线的物体项和只包含曲线的物体项(无三维模型或曲面的物体)有不同的图标。您可能需要刷新项目的可见性才能看到这一变化。
RoboDK 包含不同的工具,帮助您在提取曲线后修改曲线。如果您只是想修改法线,可以进入工具➔ 修改曲线。通过此功能,您可以修改任何之前创建的曲线的法线。
RoboDK 可以从多种来源创建或获取曲线。下面列出了一些工具的示例,这些工具将创建一条曲线,可用于曲线追踪项目:
a.从导入 RoboDK 的 3D物体中提取特征。
b.导入CSV 包含曲线的文件。
c.使用CAD/CAM 插件导入曲线。
e.使用表面图案生成器小程序
f.使用RoboDK API 与外部应用程序集成。
g.使用RoboDK TwinTrack 等手持探头
在 RoboDK 中,可以从 CSV 文件或文本文件导入曲线,方法是选择实用工具➔ 导入曲线。工作站中将出现一个新项目,显示作为物体的曲线。
小贴士将 CSV 文件(.csv 格式)拖放到 RoboDK 的主窗口,即可自动将该文件作为曲线导入。
该文件可以是一个文本文件,包含曲线上每个点的三维坐标。可选择以 i、j、k 向量的形式提供工具 Z 轴的方向。所有坐标必须相对于零件的坐标系。
注:在 RoboDK 中加载 STEP 或 IGES 文件时,可自动提取物体边缘(更多信息请参阅 STEP/IGES 导入部分)。
可以选择将物体的现有曲线导出为 CSV 文件(右键单击曲线,然后选择导出曲线),修改后重新导入 RoboDK。
有关如何自定义导入 CSV 或 TXT 文件作为曲线或点的更多信息和示例,请参阅 RoboDK API 的示例部分。
使用 RoboDK,您可以轻松模拟机器人跟踪点。RoboDK 中的点可以从物体、曲线中提取,也可以作为 CSV 文件中的点列表导入。该选项对于点焊或钻孔等应用非常有用。以下视频展示了设置点焊应用的示例:观看视频。
注: 大多数 CAD 软件的 RoboDK 插件会自动创建点,并在点追踪项目中选择这些点。在这种情况下,您可以配置机器人刀具路径,如机器人加工部分所示。
提示点可以有一个与工具 Z 轴(通常是表面的法线)相匹配的法向量。
选择实用程序➔ 点追踪项目,打开点追踪设置。这些设置与机器加工项目相同,唯一不同的是路径输入预设为选择点。
选择 "选择点 "在屏幕上选择点。
用鼠标左键单击选择点。两次选择同一个点将会切换进场方向。此外,右键单击一个点还可以通过选择 "选择下一个 "来选择后面的点。
注意:运动顺序以绿色数字显示。
提示:选择工具➔ 选项➔ 显示,如果点与点之间的距离太近,可降低取点灵敏度。
右击屏幕并选择 "完成",或按 Esc 键返回设置菜单。绿色路径将显示机器人相对于物体的运动轨迹。
设置右上方还有一些其他选项,如工具速度和接近距离。默认设置如下图所示:
注:除其他外,"程序事件 "设置还可更改进场和缩回运动时的运动速度。
选择实用程序➔ Import Points(导入点),可从文本文件或 CSV 文件导入点列表。测站中将出现一个新项目,显示作为物体的点。
提示:将文本文件(.txt 格式)拖放到 RoboDK 窗口,即可将其自动导入为点列表。
该文件可以是一个文本文件,包含曲线上每个点的三维坐标。可以选择以 i、j、k 向量的形式提供工具 Z 轴的方向。
注:参数化物体文件(如 STEP 和 IGES 文件)中的点默认为自动导入(更多信息请参见 STEP/IGES 导入部分)。
也可以选择将物体的现有曲线转换为点,方法是右键单击曲线,然后选择提取曲线点。
增材制造(或 3D 打印)是根据数字文件制造三维实体物体的过程。使用 RoboDK,工业机器人手臂可用作三轴或五轴 3D 打印机。以下视频概述了如何使用 RoboDK 离线设置 3D 打印:观看视频。
使用机器人进行 3D 打印可以通过以下方式之一实现:
●使用 RoboDK 直接将 G 代码程序(NC 文件)转换为机器程序,如机器加工项目所示。每个运动的材料流速(挤出机指令 E)都会得到正确计算,并可作为程序事件集成到生成的程序中。G 代码是 RoboDK 支持的一种 NC 文件类型,也是许多 3D 打印机支持的一种格式。大多数切片软件都能在给定 STL 文件的情况下生成 G 代码。
注:切片机根据 3D 模型创建机器的指令(G 代码)。这些指令定义了具有流速的挤出机刀具路径。需要将 RoboDK 与切片机软件结合使用,才能正确完成机器人 3D 打印。
提示:右键单击 RoboDK 中的物体,将其保存为 STL。
●选择实用工具➔ 3D 打印项目,打开3D 打印设置。
注:这些设置与机器加工项目相同,唯一不同的是路径输入预设为 3 D 打印物体。选择对象,在主屏幕上选择物体并自动获取刀具路径。选择 3D 打印选项,打开 Slic3r。
重要: 选择 3D 打印物体选项时,可默认使用切片器 Slic3r 将物体转换为刀具路径。或者,也可以通过生成 G 代码程序并将其转换为机器人机器人加工项目程序来使用其他切片器,如所示。
默认情况下,RoboDK 将 E 指令位移为对名为 Extruder 的程序的程序调用,并将 E 值作为参数传递。选择程序事件可更改这一行为。
挤出机值 (E) 表示每次移动前需要挤出多少材料。考虑到机器人的速度和各点之间的距离,该值可用于驱动机器人的挤出机进料。
另外,也可以使用后处理器计算挤出机进料,并相应生成适当的代码。下文将提供一个示例。
注:某些机器人控制器可使机器人运动与挤出机进给自动同步。在这种情况下,您需要在后处理器中将挤出机设置为外轴。
本节介绍如何修改机器人后处理器,以便在执行 3D 打印的运动指令前计算挤出机速度。另外,也可以在机器人控制器上通过挤出机程序调用(驱动挤出机的默认指令)进行这些操作。
通过定制机器人后处理器,可以在将程序发送给机器人之前,更轻松地集成用于 3D 打印的挤出机。为了完成这样的任务,我们需要进行一些计算,并在机器人后处理器中生成程序时输出定制代码。
注:某些后处理器,如 ABB RAPID IRC5、库卡(Kuka)KRC2 和柯马(Comau)后处理器默认执行这些建议的修改。
第一步是拦截挤出机调用,并在后处理器的 RunCode 部分内读取新的挤出机值(E 值)。下面的部分将处理为程序生成的所有程序调用:
def RunCode(self, code, is_function_call= False):
if is_function_call:
if code.startswith("Extruder("):
# 拦截挤压机指令。
# 如果程序调用的是 Extruder(123.56)
# 我们将数字提取为字符串
# 并将其转换为数字
self.PRINT_E_NEW= float(code[9:-1])
# 跳过程序调用生成
返回
否则
self.addline(code + "()")
否则
# 输出程序代码
self.addline(code)
挤出机值(length/E)在机器人后处理器中保存为 PRINT_E_NEW 变量。
我们需要在每一条新的线性移动指令中触发名为new_move 的函数调用。我们可以在MoveL 指令的开头添加这一调用插件:
def MoveL(self, pose, joints, conf_RLF= None):
"""添加一个线性移动""
# 处理 3D 打印挤出机集成
self.new_move(pose)
...
我们还必须在后处理器的头部添加以下变量,以计算挤出机增量:
# 3D 打印挤出机设置参数:
PRINT_E_AO= 5 # 模拟输出 ID,用于指挥挤出机流量
PRINT_SPEED_2_SIGNAL= 0.10 # 将速度/流量转换为模拟输出信号的比率
PRINT_FLOW_MAX_SIGNAL= 24 # 向挤出机提供的最大信号
PRINT_ACCEL_MMSS= -1 # 加速度,如果使用四舍五入/混合法,-1 假设为恒速
# 内部 3D 打印参数
PRINT_POSE_LAST= 无 # 最后打印的位姿
PRINT_E_LAST= 0 # 最后挤出机长度
PRINT_E_NEW= 无 # 新挤出机长度
PRINT_LAST_SIGNAL= 无 # 最后一个挤出机信号
最后,我们需要定义一个新的程序,该程序将根据运动间距、机器人速度和机器人加速度生成适当的挤出机进给指令。这需要假设挤出机进给是由特定的模拟输出或自定义程序调用驱动的。
我们需要在 def MoveL 程序定义前添加以下代码。
重要提示: 在 RoboDK 中对机器人进行程序设计时,使用四舍五入值将有助于保持速度恒定,并尽量减少加速度的行为。在这种情况下,时间可按距离/速度计算。
def calculate_time(self, distance, Vmax, Amax=-1):
""计算以最大加速度和最大速度移动一段距离所需的时间""
如果 Amax< 0:
# 假设速度恒定(必须设置适当的平滑/圆整参数)
Ttot= 距离/最大值
否则
# 假设我们加速和减速
tacc= Vmax/Amax;
Xacc= 0.5*Amax*tacc*tacc;
如果距离<= 2*Xacc:
# 未达到最大值
tacc= sqrt(距离/最大值)
Ttot= tacc*2
否则
# 达到最大值
Xvmax= 距离 - 2*Xacc
Tvmax= Xvmax/Vmax
Ttot= 2*tacc+ Tvmax
返回 Ttot
def new_move(self, new_pose):
""在挤出机上执行 3D 打印操作(如适用)""
如果 self.PRINT_E_NEW 为 None 或 new_pose 为 None:
返回
# 跳过第一个动作,记住位姿
如果 self.PRINT_POSE_LAST 为 None:
self.PRINT_POSE_LAST= new_pose
返回
# 计算下一次移动的材料增加量
add_material= self.PRINT_E_NEW - self.PRINT_E_LAST
self.PRINT_E_LAST= self.PRINT_E_NEW
# 计算机器人速度和挤出机信号
挤出机信号= 0
如果 add_material> 0:
distance_mm= norm(subs3(self.PRINT_POSE_LAST.Pos(), new_pose.Pos()))
# 以秒为单位计算移动时间
time_s= self.calculate_time(distance_mm, self.SPEED_MMS, self.PRINT_ACCEL_MMSS)
# 避免除以 0
如果 time_s> 0:
# 这看起来是多余的,但它可以让你考虑加速度,我们可以对速度进行小幅调整
speed_mms= distance_mm / time_s
# 计算挤出机速度,单位为 RPM*Ratio (PRINT_SPEED_2_SIGNAL)
挤出机信号= speed_mms * self.PRINT_SPEED_2_SIGNAL
# 确保信号在可接受的值范围内
extruder_signal= max(0,min(self.PRINT_FLOW_MAX_SIGNAL, extruder_signal))
# 必要时更新挤出机速度
如果 self.PRINT_LAST_SIGNAL 为 None 或 abs(extruder_signal - self.PRINT_LAST_SIGNAL)> 1e-6:
self.PRINT_LAST_SIGNAL= extruder_signal
# 使用内置 setDO 功能设置模拟输出
self.setDO(self.PRINT_E_AO, "%.3f" % extruder_signal)
# 或者,调用程序并处理与机器人控制器的集成
#self.addline('ExtruderSpeed(%.3f)' % extruder_signal)
# 记住最后一个位姿
self.PRINT_POSE_LAST= new_pose