面向数控加工系统的3D打印切片算法与分区扫描策略
2019-08-19来旭辉魏正英
来旭辉,魏正英
面向数控加工系统的3D打印切片算法与分区扫描策略
来旭辉,魏正英※
(西安交通大学机械制造系统工程国家重点试验室,西安 710049)
为实现大型农机零部件的快速修复与更换,该文针对3D打印协同数控成形大型零件中的折线拐点金属过堆积、工件翘曲变形、层厚难以实时调整等问题,提出数控系统与电子束成形相结合的3D打印切片算法与分区扫描策略。为提高切片速度,实现成形过程中的层厚实时调整,采用反向光线追踪算法对三维模型渲染切片,通过MS(marching squares)算法提取二值图像的坐标序列,快速获取指定层的轮廓坐标;为避免成形过程中电子枪运行速度不均匀引起的金属过堆积现象,选用B样条基函数对轮廓数据进行曲线插值,结合数控系统的曲线插补命令,实现恒定线速度成形。针对大型零件在成形过程中的变形问题,采用六边形分区与平行线变角度扫描技术,根据各分区图案的形心欧式距离规划扫描顺序,实现变形控制。结果表明:采用非均匀有理B样条曲线和直线分段插值后,拟合曲线对原始多重曲面截线的逼近误差范围与切片数据相比减少了30%。选用网格数量为1 483 132的STL(stereolithography)模型进行效率测试,该算法切片用时90 s,与商用软件Magics15.01切片相比用时减少了34.6%,与开源软件Cura15.06切片相比用时减少了31.4%,研究结果可为大型零件成形过程中的层厚动态调整及变形控制等提供新的思路。
数控系统;电子束;3D打印;切片;曲线插值;分区;扫描顺序
0 引 言
3D打印技术在以激光或电子束为热源的选区熔化领域取得了飞速的发展[1-7],可实现小尺度零件的精密成形,但在大尺度零件成形过程中,随着平面层填充面积的增加,扫描线两端温度梯度急剧变大[8-16],当逐层累积的热应力超过成形材料的屈服强度时,将引起极大的局部翘曲变形,导致当前的工艺参数不再适用,而且大的变形不利于后处理精加工中的定位与切削。为快速成形出与原始零件形体一致的大型毛坯,利用数控加工的高精度和电子束成形的高效率,结合面向数控加工系统的3D打印切片算法与分区扫描策略,可根据层厚反馈信息实时调整切片厚度,形成闭环控制,解决大型农机装备的关键零件快速修复与更换问题。
国内外学者在3D打印切片算法和分区策略等方面做出了大量的研究。Minetto等[17]采用一组等间距或自适应间距的扫描平面,对STL文件中的三角网格进行归类,通过哈希表建立轮廓数据间的拓扑关系,这种方式在面片排序过程浪费大量时间,在层厚实时调整方面稳定性不高;Pandey等[18]根据阶梯效应和成形件表面粗糙度要求,推导出了切片厚度递推公式,实现自适应分层,成形过程中根据层厚变化调整工艺参数,但需要建立庞大的工艺参数库;Song等[19]采用MS算法和二分法对隐式曲面直接切片,通过改变采样点的数量控制切片效率与精度,虽然避免隐式曲面和STL文件相互转化带来的精度损失,但计算时间与传统STL模型转换的方案相比,并无明显提高;Manmadhachary等[20]通过FFT(fast fourier transformation)方法平滑CT图像中的轮廓数据,采用三角网格剖分算法重建并修补三维网格提高模型表面质量,之后采用传统切片方式进行二次切片,该算法在下颌骨模型打印中取得了较好的精度。Zrnic等[21-22]通过热间接结构耦合模拟研究3种扫描方式下不同扫描角度对零件变形的影响,发现15°旋转扫描策略产生的应力最小,而各种扫描策略对熔池尺寸的影响不大;邓诗诗等[23-27]对比了 s 形扫描和分区扫描方式下层内残余应力的累积情况,验证了分区策略对减小零件边界拉应力的有效性,但验证模型尺度较小,不具有普适性。以上算法主要是对模型进行离线处理,难以根据闭环控制的反馈信息动态调整各项数据。采用数值模拟的手段进行分区和扫描策略优化的方式,主要局限于对填充线角度变化的模拟,在宏观尺度或区块扫描顺序模拟方面难以开展大规模计算,因此还需通过试验的手段开展深入研究。
本文在前人研究的基础上,针对大型零件成形中拐点金属过堆积问题,提出了层内变角度填充的成形策略,采用NURBS(non-uniform rational b-splines)基函数拟合轮廓数据保证成形线速度恒定,将熔积体余高波动控制在1 mm之内;针对单道扫描线过长引起的翘曲变形问题,提出分区扫描策略,根据各分区的形心,按距离最远原则规划成形顺序;针对大型零件在成形过程中的层厚动态调整问题,提出基于反向光线追踪算法的三维模型切片算法,在2个平面层打印间隙,动态计算切片与分区填充数据,实现成形过程的闭环控制。
1 基于反向光线追踪的切片算法
以电子束为热源的3D打印技术与弧焊成形类似,但其能量输入更高,成形过程中急冷急热过程更加明显。在实际加工中零件的厚度往往低于三维模型的切片高度,需要在后续加工开始之前,快速计算出下一成形层的填充方式或重新提取指定高度处的轮廓数据。因此可以根据视野中各像素点处三角网格的可见性,采用GPU(graphics processing unit)渲染加速和并行计算技术,快速提取指定高度处的截面二值图像。在2个平面层的成形间隙,根据加工厚度的反馈信息,快速调整实际切片厚度,补偿材料收缩引起的尺寸误差。
1.1 切片模型
本文采用STL(stereolithography)格式的三维模型进行3D打印切片。STL文件是通过三角网格逼近三维曲面,存储时所有网格的顶点沿其法线方向逆时针排列,各网格之间在STL文件中无序分布。为提高切片效率,避免拓补关系建立带来的时间等待,采用GPU对网格直接切片,其核心是根据不同像素处网格法向量方向标记像素颜色,因此需要判断网格法线与切片方向相同还是相反。设从像素点发出指向视点的方向为正方向,当网格法向量与正方向相同,即3个顶点按照逆时针顺序存储,网格为正向网格;反之则为反向网格,如图1所示。
注:A,B,C为三角网格的3个顶点,图中箭头表示三角网格的法线方向
Fig1 Triangulation strategy of three-dimensional model
1.2 三角网格可见性判断
为了提高计算效率,本文采用反向光线追踪算法裁剪STL模型中的不可见片元,仅将可见片元提交给GPU进行计算。STL模型的三角网格遍历过程不考虑光线的折射和反射,当光线与片元相交,对应像素点渲染为白色,反之为黑色。
STL模型中的三角网格与空间中任意坐标点间的位置关系用式(1)表示,当()值为负则三角网格与光线不相交,反之则相交。
从摄像机位置发出的射线()为
式中为光线距离,c为视点位置坐标,为射线的方向向量。空间中任意三角网格的平面方程为
式中1和2为三角网格顶点坐标,为该三角网格的法向量。联立式(2)式(3)解得带入式(1)判断从视点发出指向像素点的射线与三维网格是否相交。若交点的高度与切片高度相同,则该网格为可见片元,否则为不可见片元。
1.3 截面二值图像动态获取
根据每个像素点处三角网格的可见性判断结果,采用模板缓冲技术将可见网格渲染为白色,不可见网格及反射空间渲染为黑色,依次遍历视野中的所有像素点,输出三维模型的截面二值图像。具体步骤如下:
1)加载STL文件,获取三维模型的包围盒信息(长宽高),根据模型的长度和宽度初始化视野范围,同时启用模板缓存的写入功能;
2)指定切片高度,将模板缓冲区以无符号整形数据0填充,表示整个视野的片元都不需要绘制;
如图1所示,本文算法流程主要包括三个部分,首先计算待分类数据和已知数据之间的相似性,其次根据相似性生成待分类数据的K近邻集合,最后根据K近邻中学生的答题结果预测待分类学生的答题结果。
3)选用从视点发出的有向线段与视野中所有体素做相交判断,当有向线段与正向网格相交时模板缓冲区的值+1,表示该像素需要绘制;当与反向网格相交时模板缓冲区的值-1;
4)遍历结束后渲染缓冲区中值为1或2的片元,丢弃值为0的片元。
图2a为原始的多重曲面模型,根据上述算法输出的某一截面二值图如图2b所示。
注:1为黑白颜色边界处的任一矩形区域,大小为4×5(像素)。
2 二值图像轮廓提取与NURBS(non-uniform rational b-splines)拟合优化
2.1 Marching square(MS)二维轮廓提取
采用MS(marching square)等值线提取算法从二值图像的左上方按照顺时针方向读入像素信息,每次读取1个像素位置和颜色值,取右侧、下侧以及左下侧3个相邻位置的像素值组成一个由4个像素组成的小区块,区块中4个像素的颜色状态一共可以分为24=16种情况,如图3所示。二值图像中白色表示实体区域,像素点对应的三角网格为可见网格,用空心圆点表示。黑色表示空腔区域,像素点对应的三角网格为不可见网格,用实心圆点表示。黑白颜色的分界线即需要提取的切片轮廓线位置。
a. 向右搜索a. Search rightb. 向上搜索b. Search up c. 向右搜索c. Search rightd. 向右搜索d. Search right
以图2b中点1所在位置为例,其二值图像轮廓提取过程如图3所示。具体步骤为:1)由二值图像的位置坐标和颜色值确定搜索矩阵,同时初始化轮廓矩阵为空;2)取出4个像素点,当颜色均为白色时,按照从左向右由上至下的顺序继续搜索;3)当4个点像素值中首次出现黑色时,将其标记为搜索起点,并将所有第一次出现的黑色像素位置坐标存入轮廓矩阵;4)对照MS搜索方向表(如图3所示)向下一搜索方向移动一个像素宽度,如图4a、4b所示;5)重复执行第2),3),4)步,当回到搜索起点时,完成一个封闭轮廓的提取,按照从左向右、由上至下的顺序寻找新的搜索起点;6)根据模型包围盒长度与像素宽度的比值,将轮廓矩阵转化为二维坐标。
2.2 切片轮廓NURBS(non-uniform rational b-splines)拟合
STL切片产生的轮廓由大量微段直线组成,相邻小线段间存在夹角。实际成形中电子枪在拐点处减小运动速度以改变方向,导致单位时间送入熔池的丝材质量增加,随着折线夹角的减小拐点处材料过堆积现象越来越严重,如图5所示。通过试验发现,当直线夹角大于140°时,拐点处材料过堆积现象基本消失。因此本文以140°作为临界角度,当相邻2条线段夹角小于140°,则数据点属于曲线部分,反之属于直线部分。曲线部分采用NURBS基函数拟合,结合数控系统中BSPLINE命令的恒定线速度插补功能,通过控制点和权因子平滑连接分散的坐标点,以减少切片轮廓中的直线和曲线数量,进而减少电机的启停次数,避免拐点处材料过堆积。
注:黑色方框表示黑色像素点;白色方框表示白色像素点;空心圆点表示可见网格;实心圆点表示不可见网格。
注:图中标记处为折线拐点处的材料过堆积区域。
3 轮廓分区与扫描填充策略
大型零件成形过程中,温度梯度在大段扫描线两端尤为明显。电子束成形件是包括加工余量的毛坯件,往往需要后续精加工处理,过大的变形可能会导致整个零件报废,因此传统的直线扫描方式难以适用于大型零件成形。Y S Lee等[28-31]的研究表明,通过分区和扫描顺序规划可以降低温度梯度减小应力集中,进而控制零件变形在合理范围内。为减少扫描线长度降低温度梯度,本文根据模型特征的调整轮廓填充方式和分区扫描策略。
3.1 分区多边形的平面镶嵌
沿着切片轮廓最小外接矩形的短边镶嵌填充图案可以极大减少填充图案数量。设某轮廓数据的初始包络矩形为{[0_min,0_min],[0_max,0_max]},目标函数的最小值即为最小包络矩形。
注:d为六边形边长;L1和L2分别为包络矩形的短边和长边;A~J分别为六边形的顶点;包络矩形内的图案为待填充图案。