后置处理程序的机器人三维印刷

本节将展示如何修改一个机器人后置处理程序计算挤出机速度在执行之前3 d打印技术的运动指令。另外,这些操作可以在挤出机的机器人控制器程序调用(默认命令驱动挤出机)。

通过定制一个机器人后处理器,可以使3 d打印挤出机的集成更容易在发送程序之前机器人。要完成这样的任务,我们需要做一些计算和输出定制代码程序中生成时机器人后置处理程序。

第一步是拦截机电话和读取新的挤出机的值(E值)在RunCode部分后处理器。以下部分处理所有程序调用生成的程序:

defRunCode(自我,代码,is_function_call=):

如果is_function_call:

如果代码startswith(挤出机():

#拦截机命令。

#如果程序调用挤出机(123.56)

#我们提取数字作为一个字符串

#和将其转换为一个数字

self.PRINT_E_NEW=浮动(代码(9:-1])

#跳过程序调用的一代

返回

其他:

自我addline(代码+“()”)

其他的:

#输出程序代码

自我addline(代码)

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

我们需要触发函数调用命名new_move随着每一个新的线性运动指令。我们可以添加这个叫初MoveL命令:

defMoveL(自我,构成,关节,conf_RLF=没有一个):

添加一个线性运动”“”“

#处理3 d印制机集成

自我new_move(构成)

我们还必须添加以下变量头的后置处理程序计算挤出机增量:

# 3 d印制机设置参数:

PRINT_E_AO=5#挤出机流模拟输出ID命令

PRINT_SPEED_2_SIGNAL=0.10#比率转换速度/流向一个模拟输出信号

PRINT_FLOW_MAX_SIGNAL=24#最大信号提供到挤出机

PRINT_ACCEL_MMSS=- - - - - -11 #加速度,假定恒速如果我们用舍入/混合

#内部3 d打印参数

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):

”““实施行动的挤出机3 d印刷,如果适用“”“

如果自我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_LASTPos(),new_posePos()))

#计算运动时间在秒

time_s=自我calculate_time(distance_mm,自我SPEED_MMS,自我PRINT_ACCEL_MMSS)

#避免除0

如果time_s>0:

#这可能看起来冗余但它允许您占加速度,我们可以应用小速度调整

speed_mms=distance_mm/time_s

#计算挤出机速度RPM *比率(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

Baidu
map