机器人

增材制造(或3D打印)是从数字文件中制作三维立体对象的过程。工业机器人手臂可与RoboDK一起用作3轴或53D打印机。以下视频概述了如何使用RoboDK脱机设置3D打印:看视频

可以通过以下方式之一使用机器人进行3D打印:

   使用RoboDKG代码程序(NC文件)直接转换为机器人程序,如机器人加工项目。每次移动都会适当考虑物料流速(挤出机指令E),并且可以将其作为程序事件集成到生成的程序中。G代码是RoboDK支持的一种NC文件,也是许多3D打印机支持的一种格式。给定一个STL文件,大多数切片器软件都可以生成G代码。

注意:切片器根据3D模型创建机器指令(G代码)。这些说明使用流速定义了挤出机的刀具路径。需要将RoboDK与切片器软件结合使用,以使用机器人正确完成3D打印。

提示: 右键单击RoboDK中的对象以将其另存为STL

   选择实用程序3D打印项目打开3D打印设置。这些设置与机器人加工项目,唯一的区别是路径输入已预设为3D打印对象。选择选择对象以在主屏幕上选择对象并自动获取刀具路径。选择3D打印选项以打开Slic3r

Robot Machining - 图片 32

重要:选择3D打印对象选项时,切片器Slic3r默认情况下可用于将对象转换为刀具路径。或者,可以通过生成G代码程序并将其转换为机器人程序来使用其他切片器,如机器人加工项目

Robot Machining - 图片 33

默认情况下,RoboDKE指令作为程序调用转换为名为Extruder的程序,并将E值作为参数传递。选择程序事件以更改此行为。

Robot Machining - 图片 34

挤出机值(E)表示每次移动前需要挤出多少物料。考虑到机械手的速度和点之间的距离,该值可用于驱动机械手的挤出机进料。

或者,可以使用后处理器计算挤出机进料并相应地生成适当的代码。以下部分提供了一个示例。

注意:一些机器人控制器可以自动使机器人运动与挤出机进料同步。在这种情况下,您需要将挤出机设置为后处理器中的外轴。

用于机器人3D打印的后处理器#Print3Dpost

本节说明如何修改机器人后处理器在执行3D打印的移动指令之前计算挤出机速度。或者,可以通过调用Extruder程序(驱动挤出机的默认命令)在机器人控制器上进行这些操作。

通过自定义机器人后处理器,可以在将程序发送到机器人之前更轻松地集成用于3D打印的挤出机。为了完成这样的任务,当在机器人后处理器中生成程序时,我们需要做一些计算并输出定制的代码。

注意:默认情况下,某些后处理器,例如ABB RAPID IRC5KUKA KRC2Comau后处理器会实现这些建议的修改。

第一步是拦截Extruder调用,并在后处理器的RunCode部分中读取新的Extruder值(E值)。以下部分处理为程序生成的所有程序调用:

 定义 运行码 is_function_call = ):

 如果 is_function_call

 如果 以。。开始挤出机():

 #拦截挤出机命令。

 #如果程序调用为Extruder123.56

 #我们将数字提取为字符串

 #并将其转换为数字

 自我。PRINT_E_NEW =浮动[9-1]

 #跳过程序调用的生成

 返回

 其他:

 附加线代码+ ()

 其他

 #输出程序代码

 附加线

挤出机值(长度/ E)被保存为机器人后处理器中的PRINT_E_NEW变量。

我们需要使用每个新的线性运动指令来触发名为new_move的函数调用。我们可以在MoveL命令的开头添加此调用:

 定义 移动 姿势 关节 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程序定义之前添加以下代码。

重要: 用一个 四舍五入值RoboDK中对机器人编程时,将有助于保持恒定的速度并最小化加速行为。在这种情况下,时间可以计算为距离/速度。

 

 定义 计算时间 距离 最大值 最大值=-1):

 “”“Amax加速度和Vmax速度计算移动距离的时间”“”“

 如果 最大值 < 0

 #假设速度恒定(必须设置适当的平滑/舍入参数)

 托特 = 距离/最大值

 其他

 #假设我们加速和减速

 tacc = 最大值/最大值;

 Xacc = 0.5*最大值*tacc*tacc;

 如果 距离 <= 2*Xacc

 #未达到Vmax

 tacc = sqrt距离/最大值

 托特 = tacc*2

 其他

 #达到Vmax

 最大速度 =距离 -- 2*Xacc

 最大电视 =最大速度/最大值

 托特 = 2*tacc + 最大电视

 返回 托特

 

 定义 new_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

 

 #计算机器人速度和挤出机信号

 挤出机信号 = 0

 如果 add_material > 0

 distance_mm = 规范subs3PRINT_POSE_LAST位置(), new_pose位置()))

 #计算运动时间,以秒为单位

 time_s = 计算时间distance_mm SPEED_MMS PRINT_ACCEL_MMSS

 

 #避免被0

 如果 time_s >0

 #这可能看起来很多余,但是它可以让您考虑加速度,并且我们可以应用较小的速度调整

 speed_mms = distance_mm / time_s

 

 #以RPM * RatioPRINT_SPEED_2_SIGNAL)计算挤出机速度

 挤出机信号 = speed_mms *PRINT_SPEED_2_SIGNAL

 

 #确保信号在可接受的范围内

 挤出机信号 = 最高0PRINT_FLOW_MAX_SIGNAL 挤出机信号))

 

 #根据需要更新挤出机速度

 如果 PRINT_LAST_SIGNAL 没有 要么 腹肌挤出机信号 -- PRINT_LAST_SIGNAL > 1e-6

 PRINT_LAST_SIGNAL = 挤出机信号

 #使用内置的setDO功能设置模拟输出

 setDOPRINT_E_AO .3f” 挤出机信号

 #或者,引发程序调用并处理与机器人控制器的集成

 self.addline'ExtruderSpeed(%。3f'extruder_signal

 

 #记住最后一个姿势

 PRINT_POSE_LAST = new_pose