用于机器人

本节说明如何修改机器人后处理器在执行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