你可以像使用机床一样使用工业机器人(3轴或5轴CNC)。为了达到与CNC机床相同的效果,工业机器人需要先进的离线编程软件,如RoboDK,将机器程序转换为机器人程序。RoboDK支持将APT、G-code ACL、TAP或NCI等机器程序转换为机器人模拟和机器人程序。
机器人加工包括不同的材料去除应用,如铣削、钻孔、倒角和去毛刺,通常由自动化机床(CNC)执行。
使用计算机辅助设计(CAD)软件定义零件尺寸,然后通过计算机辅助制造(CAM)软件转换成制造程序(如g代码)。然后,可以使用RoboDK的离线编程工具将制造程序转换为机器人程序。
附加轴,如转盘和/或线性轨道可以创建而且同步用机器人扩展工作空间。
本节展示了一些涉及机器人加工的例子。其中一些示例包括使用插件来显示如何生成凸轮工具路径。但是,您可以在RoboDK中加载任何通用的5轴工具路径,如APT, NC或G-code文件。
访问我们文档的CAM外接程序部分,了解更多关于机器人加工项目的示例,例如一种数控编程,MecSoft / RhinoCAM,发明家,FeatureCAM或Fusion360.
本例将帮助您了解RoboDK中机器人加工的基础知识,以及如何将三轴机器人加工作业转换为机器人加工模拟和机器人程序。
本例将帮助您了解如何在RoboDK中配置机器人加工设置,以及如何将5轴机器人加工作业转换为机器人加工模拟和机器人程序。
本例还将帮助您在不同的加工作业之间创建安全的进/退动作。
这个例子展示了如何使用库卡机器人与3个额外的外轴机器人加工。该单元包括一个6轴机械臂,一个单轴导轨和一个2轴转盘。
有关详情,请参阅RhinoCAM示例部分.RhinoCAM与RoboDK集成,自动将APT文件从RhinoCAM加载到RoboDK。
这个例子展示了如何使用Yaskawa/Motoman机器人进行激光切割应用。定义了机器人切削刀具路径RoboDK插件Autodesk Fusion.
这个例子展示了如何使用Yaskawa/Motoman机器人进行机器人加工和RoboDKMastercam插件.RoboDK支持自动加载Mastercam生成的NCI或NC文件。
参观Mastercam示例部分获取更多信息。
这个例子展示了如何使用ABB机器人去毛刺。这个例子包含了一个取放操作。
这个例子展示了如何使用库卡机器人进行抛光。
本节将展示如何离线准备一个简单的RoboDK项目用于机器人加工。机器人加工单元必须至少有一个机器人、一个工具(EOAT)和一个参考系(也称为坐标系、零件参考或基准)。更多关于在RoboDK中建立一个新站的信息开始部分。
下面的步骤展示了如何使用KUKA KR210机器人和Teknomotor铣削主轴准备机器人加工设置(此示例可在库中作为Sample-New-Project.rdk)。
1 -选择一个机器人:
一个。选择文件➔开放网上图书馆.
b。使用过滤器找到你的机器人品牌,有效载荷,…
例如,选择库卡kr210 r2700(210公斤有效载荷,2.7米射程)。
c。选择下载机器人应该会自动出现在主屏幕上。
2 -选择一个工具:
一个。从相同的在线库中,选择Reset以删除筛选器和筛选by类型➔工具.
b。选择下载加载主轴工具,如Teknomotor ATC71-C-LN主轴。
c。主轴将自动连接到机器人上。
d。关闭在线图书馆窗口。
3 -添加一个参考系:
一个。选择机器人基础框架(命名为库卡KR210 R2700基地).
b。选择程序➔添加参考系.一个新的参考系将被添加到机器人基座上。
c。双击参考并输入坐标:
XYZABC = [1500,1000,500,0,0,0] (mm-deg)
d。将新的参考系重命名为铣削参考输入新名称或选择F2。
4 -添加你将用于机器人加工的对象(可选):
一个。选择文件➔开放
b。选择一个名为对象象棋卢克来自RoboDK库:
C: / RoboDK /库
c。将对象拖放到铣削引用中,如果它没有被自动放置在那里(在站树中)
5-双击机器人查看机器人面板(可选)。机器人面板显示活动工具和活动参考系。通过选择和更新工具和参考系,我们应该在机器人控制器中看到相同的坐标。默认情况下,Teknomotor主轴在工具架的根部有TCP。工具(TCP)将具有一定的长度。在这个例子中,我们将更新TCP来表示刀具刀具的长度:
一个。更新工具X坐标(TCP)为375毫米。您将看到TCP沿轴移动。
b。(可选)您还可以创建第二个工具,并通过沿着Z轴添加一个转换来定义相对于第一个工具的TCP。
c。关闭机器人面板窗口。
按照以下步骤在RoboDK中设置一个新的机器人加工项目,给定一个使用CAM软件生成的NC文件(如G-code或APT):
1.选择公用事业公司➔机器人加工项目(Ctrl + M)。
将弹出一个新窗口,如图所示。
2.选择选择NC文件在路径输入部分
3.提供NC文件,如以下APT加工文件:
C: / RoboDK /图书馆/ Example-02。电子机器人加工象棋卢克
4.将机器人加工项目重命名为加工设置右键单击树中的新项目并选择重命名(F2).
在菜单的左上角选择机器人、参考框架和工具,如下图所示。在正确的坐标系统中,工具路径应该以绿色显示。
加工路径以绿色显示,路径法线以白色矢量显示。取消选中“可见工具路径”以隐藏工具路径。
您可以选择更新看看是否可以用默认设置创建一个机器人加工程序。如果程序成功生成,您将看到一个绿色的复选标记。然后你可以选择模拟或者双击生成的程序以查看模拟开始。
如果您看到带有警告信息的红色十字,则意味着您的机器人加工程序是不可行的。您可能必须更改一些设置,如工具方向、优化参数、起点或零件的位置。
以下部分提供了关于如何自定义机器人加工设置的更多信息。
路径输入允许您选择不同的方式来提供工具路径。
●选择NC文件:作为一个NC文件(从CAM软件获取),如本节所述。
●选择曲线:作为一条或多条曲线,如曲线跟踪项目部分。
这是可能的进口曲线作为RoboDK中的坐标列表。
●选择分:一个或多个点,如点跟踪项目部分。
这是可能的进口分作为RoboDK中的坐标列表。
●3D打印对象:作为3D打印的对象。切片器用于将几何图形转换为工具路径
选择项目活动显示在生成机器人程序时需要考虑的特殊事件。这包括触发刀具变化,以RPM为单位设置主轴速度或在程序开始或程序结束时触发特定程序。
您可以指定舍入值在程序事件中。这将在程序开始时自动创建舍入指令,并有助于使机器人加工程序更流畅,防止机器人抖动。例如,在ABB机器人上,这将以毫米为单位设置ZoneData值,在发那科机器人上,这将以百分比为单位设置CNT值,在万能机器人控制器上,它将以毫米为单位设置混合值。
如果你使用的是G-code或者NCI文件,自定义的M代码将在M_RunCode函数调用时被默认触发(M代码作为参数传递)。你可以通过删除对M_RunCode的调用来删除自定义M调用。
将鼠标光标移动到相应的字段上,以查看自定义每个部分的详细信息。
例如,当更改工具时,您可以使用%1值来表示CAM软件提供的工具ID。如果你更喜欢触发静态函数而不是传递参数,你可以替换SetTool (% 1)通过SetTool % 1.当使用工具2时,这将生成SetTool2而不是SetTool(2)。
您可以从机器人加工菜单的右上方定制您的方法和收回运动。默认情况下,RoboDK添加了100毫米的接近和收回运动沿正常。
选择添加增加一个额外的缩回运动。绿色路径会相应更新。可以选择沿着特定的轴移动,提供坐标,采用弧形方法等。,您还可以组合多个接近/缩回动作添加按钮。
选择删除收缩:移开一个特定的方向或收缩运动
刀具偏移的路径允许沿着刀具路径改变刀具的首选方向。此选项主要用于将工具围绕TCP的Z轴旋转。这允许处理6th围绕工具轴的自由度。根据应用程序及其需求,提供了几个选项。例如,您可以选择最小化工具方向或沿着路径遵循工具方向。
由于6轴机器人用于遵循3轴或5轴CNC制造程序,我们有一个额外的自由度来定义。这个自由度通常是围绕TCP的Z轴旋转。这种额外的自由度对于避免奇点、关节限制、碰撞或可达性问题特别有用。
默认情况下,工具偏移量的路径显示为rotz (0)转换。这意味着您可以添加一个额外的旋转,围绕工具的Z轴。可以修改此值以建立工具的首选方向,修改TCP的Z轴或与其他轴结合的方向。首选方向是机器人在沿着刀具路径走时试图保持的方向。
默认情况下,RoboDK使用最小的工具方向变化算法。这意味着刀具的方向沿刀具路径保持尽可能恒定。一般来说,这种选择适用于铣削操作,因为它最大限度地减少了机器人关节的运动。或者,还可以使用其他算法/方法,例如刀具方向遵循刀具路径(适用于切割应用,其中刀片需要沿路径保持切线),或手持物体的机器人如果需要遵循附加到机器人工具的工具路径(例如,用于点胶或抛光应用程序,也称为远程TCP配置)。
给定首选刀具方向,机器人可以有一定的自由度绕刀具Z轴旋转。这允许机器人解决程序,避免机器人奇点,关节限制,并确保所有点都是可达的。默认情况下,RoboDK允许工具围绕TCP轴旋转+/-180度,增量为20度。
建议根据应用程序限制这种旋转。例如,可以输入+/-90度来限制允许的旋转一半。减少该参数也将减少获取程序的处理时间。
如果路径的一些点是不可达的,建议旋转参考系或更允许与工具Z旋转。指针可以移动参考系Alt键并拖动坐标系统,以更好地适应机器人工作空间中的部分。
RoboDK自动选择最接近首选启动关节的启动配置(起始点为优选关节).从这一点开始,机器人将遵循线性运动,所以机器人的配置不会改变。
下拉菜单将显示启动程序的所有可能解决方案。如果需要,选择首选的机器人关节配置,并选择更新重新计算程序。
选择更新根据所提供的设置生成机器人程序。如果程序创建成功,则显示绿色复选框。然后,您将在电台中看到一个名为加工.
双击生成的编程或选择模拟开始机器人加工仿真。
右键单击程序并选择生成机器人程序(F6)生成机器人程序。中有关程序生成的更多信息程序部分。
您可以设置算法以保持工具沿路径的方向不变。这种行为可能对切割或焊接应用很有用。
选择工具方向如下路径在选择算法下拉菜单,重新计算首选工具路径。其他设置与有加工项目有一个固定的工具方向。
当制造操作发生时,机器人与刀具一起保持物体/刀具路径时,可以对机器人进行编程。这是有用的胶水点胶或抛光应用程序,例如。这种类型的机器人编程也称为远程TCP。
选择机器人拿着物体在选择算法下拉菜单以正确地将工具路径放置在TCP引用上。其他设置与有加工项目有一个固定的工具方向。
更多信息可在RoboDKAutodesk Fusion插件部分。
使用RoboDK可以使机器人在3D空间中跟随曲线。RoboDK中的曲线可以从物体的边缘或进口作为CSV文件中的点列表。例如,该选项对于机器人焊接应用非常有用。
选择公用事业公司➔曲线跟踪项目打开曲线遵循设置。这些设置与a相同机器人加工项目,唯一的区别是路输入被预设为选择曲线.
选择选择曲线在屏幕上选择曲线。
用鼠标左键单击选择曲线。两次选择相同的曲线将切换运动方向。此外,右键单击先前选择的曲线可以切换感觉或取消选择先前选择的曲线。
右键单击屏幕并选择完成或按“Esc”键返回设置菜单。绿色路径将显示机器人相对于物体的运动。
在设置的右上方还有一些额外的选项,比如工具速度,以及是否必须对每条曲线应用接近/后退移动。默认设置如下图所示:
RoboDK中可以选择CSV文件或文本文件导入曲线公用事业公司➔进口曲线.站中将出现一个新项目,将曲线显示为一个对象。
该文件可以是一个文本文件,其中包含曲线上每个点的3D坐标。可选地,工具Z轴的方向可以提供为i,j,k矢量。所有坐标必须相对于零件的坐标系。
还可以将对象已有的曲线导出为CSV文件(右键单击曲线,选择“导出曲线”),在RoboDK中修改后重新导入。
有关如何自定义导入CSV或TXT文件作为曲线或点的更多信息和示例,请参阅RoboDK API的示例部分.
你可以很容易地模拟一个机器人跟随点RoboDK。RoboDK中的点可以从物体、曲线或进口作为CSV文件中的点列表。该选项适用于点焊或钻孔等应用。下面的视频展示了一个例子来设置点焊应用程序:观看视频.
选择公用事业公司➔点跟踪项目要打开点,请遵循设置。这些设置与a相同机器人加工项目,唯一的区别是路输入被预设为选择分.
选择选择分在屏幕上选择一个或多个点。
用鼠标左键单击选择点。选择同一点两次将切换接近方向。此外,右键单击一个点可以通过选择选择后面的点选择next.
右键单击屏幕并选择完成或按“Esc”键返回设置菜单。绿色路径将显示机器人相对于物体的运动。
一些附加选项可在设置的右上角,如工具速度和接近距离。默认设置如下图所示:
通过选择,可以从文本文件或CSV文件中导入分数列表公用事业公司➔进口分.站中将出现一个新项目,将这些点显示为一个对象。
该文件可以是一个文本文件,其中包含曲线上每个点的3D坐标。可选地,工具Z轴的方向可以提供为i,j,k矢量。
可选地,通过右键单击曲线,然后选择,可以将对象的现有曲线转换为点提取曲线点.
增材制造(或3D打印)是从数字文件制造三维固体物体的过程。工业机械臂可以使用RoboDK作为3轴或5轴3D打印机。下面的视频概述了如何使用RoboDK离线设置3D打印:观看视频.
用机器人进行3D打印可以通过以下方式之一实现:
●使用RoboDK直接将G-code程序(NC文件)转换为机器人程序,如机器人加工项目.物料流动速率(挤出机指令E)是正确计算每个运动,它可以集成到生成的程序作为项目活动.G-code是RoboDK支持的一种NC文件,也是许多3D打印机支持的一种格式。大多数切片器软件可以生成给定STL文件的g代码。
●选择公用事业公司➔3D打印项目打开3D打印设置。
默认情况下,RoboDK将E指令转换为一个程序调用到一个名为挤出机并将E值作为参数传递。选择项目活动改变这种行为。
挤出机值(E)表示每次运动前需要挤出多少材料。考虑到机器人的速度和点之间的距离,该值可用于从机器人驱动挤出机进料。
或者,可以使用后处理器计算挤出机进料并相应地生成适当的代码。举例如下。
介绍修改机器人的操作步骤后置处理程序在执行3D打印的运动指令之前,计算挤出机速度。或者,这些操作可以在机器人控制器上使用挤出机程序调用(驱动挤出机的默认命令)进行。
通过定制机器人后处理器,在将程序发送给机器人之前,可以更容易地集成3D打印挤出机。为了完成这一任务,我们需要在机器人后处理器中生成程序时进行一些计算并输出定制代码。
第一步是拦截Extruder调用,并在后处理器的RunCode部分中读取新的Extruder值(E值)。以下部分处理为一个程序生成的所有程序调用:
defRunCode(自我,代码,is_function_call=假):
如果is_function_call:
如果代码.startswith(挤出机():
#截取挤出机命令。
#如果程序调用是Extruder(123.56)
#我们将数字提取为字符串
#并将其转换为数字
自我。PRINT_E_NEW=浮动(代码[9: -1])
#跳过程序调用生成
返回
其他:
自我.addline(代码+“()”)
其他的:
#输出程序代码
自我.addline(代码)
Extruder值(length/E)保存为机器人后处理器中的PRINT_E_NEW变量。
我们需要触发一个名为new_move伴随着每一个新的线性运动指令。我们可以在MoveL命令的开头添加这个调用:
defMoveL(自我,构成,关节,conf_RLF=没有一个):
""" "添加一个线性运动""" "
#处理3D打印挤出机集成
自我.new_move(构成)
...
我们还必须在后处理器的头中添加以下变量来计算挤出机增量:
# 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程序定义之前添加以下代码。
defcalculate_time(自我,距离,Vmax,Amax= -1):
计算以Amax加速度和Vmax速度移动一段距离所需的时间"""
如果Amax<0:
假设速度恒定(必须设置适当的平滑/舍入参数)
Ttot=距离/Vmax
其他的:
#假设我们加速和减速
tacc=Vmax/Amax;
Xacc=0.5*Amax*tacc*tacc;
如果距离< =2*Xacc:
# Vmax未达到
tacc=√6(距离/Amax)
Ttot=tacc*2
其他的:
# Vmax已达到
Xvmax=距离-2*Xacc
Tvmax=Xvmax/Vmax
Ttot=2*tacc+Tvmax
返回Ttot
defnew_move(自我,new_pose):
如果适用,在3D打印挤出机上实施动作""" "
如果自我.PRINT_E_NEW是没有一个或new_pose是没有一个:
返回
跳过第一个动作,记住这个姿势
如果自我.PRINT_POSE_LAST是没有一个:
自我.PRINT_POSE_LAST=new_pose
返回
#计算下一个动作的材料增加量
add_material=自我.PRINT_E_NEW-自我.PRINT_E_LAST
自我.PRINT_E_LAST=自我.PRINT_E_NEW
计算机器人速度和挤出机信号
extruder_signal=0
如果add_material>0:
distance_mm=规范(subs3(自我.PRINT_POSE_LAST.Pos(),new_pose.Pos()))
#以秒为单位计算移动时间
time_s=自我.calculate_time(distance_mm,自我.SPEED_MMS,自我.PRINT_ACCEL_MMSS)
#避免除0
如果time_s>0:
#这可能看起来多余,但它可以让你考虑到加速度,我们可以应用小的速度调整
speed_mms=distance_mm/time_s
#以RPM*Ratio计算挤出机速度(PRINT_SPEED_2_SIGNAL)
extruder_signal=speed_mms*自我.PRINT_SPEED_2_SIGNAL
#确保信号在可接受值范围内
extruder_signal=马克斯(0,最小值(自我.PRINT_FLOW_MAX_SIGNAL,extruder_signal))
需要时更新挤出机速度
如果自我.PRINT_LAST_SIGNAL是没有一个或腹肌(extruder_signal-自我.PRINT_LAST_SIGNAL)>1 e-6:
自我.PRINT_LAST_SIGNAL=extruder_signal
#使用内置的setDO函数设置模拟输出
自我.setDO(自我.PRINT_E_AO,“% .3f”%extruder_signal)
#或者,触发一个程序调用并处理与机器人控制器的集成
#self.addline('ExtruderSpeed(%.3f)' % extruder_signal)
记住最后一个姿势
自我.PRINT_POSE_LAST=new_pose