朱淑梅,刘 威,朱俊俊,周 琛,孙文鑫
(苏州科技大学 机械工程学院,苏州 215000)
点云模型粗加工刀轨高效生成方法研究
朱淑梅,刘 威,朱俊俊,周 琛,孙文鑫
(苏州科技大学 机械工程学院,苏州 215000)
为了提高点云粗加工刀轨生成效率,提出一种基于栅格划分的刀轨计算方法和基于距离法的行切刀轨连接方法,利用栅格数据量较小、组织简便的优点,将点云划分到栅格、再运用分层切削法计算粗加工刀轨,避免了海量数据点运算量大的问题;为减少抬刀次数、简化刀轨连接,提出一种直接根据刀轨之间距离关系连接相邻刀轨的算法,避免了识别、组织切削区域或构建中间数据结构,实现了刀轨的高效连接。最后对算例生成刀轨并进行加工仿真,验证了方法的可行性。
粗加工;层切法;刀轨生成;刀轨连接
目前在汽车、航空等工业领域中,很多时候主流CAD软件很难满足复杂外形的设计要求,需要使用油泥、粘土等材料制成手工模型,然后运用逆向手段获取实物模型外形上的海量数据点,即点云模型。点云应用于数控加工是逆向加工最重要的手段,粗加工可以快速地切除工件毛坯上的大部分多余材料,为精加工保留适当的加工余量,大量的加工时间消耗在粗加工过程中,因此研究出高效的点云粗加工刀轨生成算法,对提高粗加工质量和效率具有重要的实际意义。
点云粗加工刀轨生成主要有Z-map法和多面体法。Lin[1,2]等首先提出对点云构造Z-map模型,通过将点云投影到在XY平面上构造的矩形网格,求出每个网格节点的z坐标,以此将散乱的点云转换为规则的网格点,再计算分层切削平面与数据点的交点,获取加工区域并生成刀位轨迹。杨建中[3]等通过构造Z-map模型获取切削层上的二值图像,提出边界追踪算法和边界描述树来确定切削区域,但获得高精度的边界就需要提高网格密度。Yau[4]等引入了“面元(surfel)”的概念,将点云转换为连续的曲面,根据刀具类型和尺寸生成类似于Z-map结构的规则点云,进行刀轨规划时考虑了加工误差的影响。李学艺[5,6]等提出用多面体模型来描述测量数据点,基于二维等值平面图的拓扑结构,求出各层的有效加工区域。张伟[7]等运用神经网络对点云构建三角形网格并偏置获得多面体模型,根据切削平面上二维等值平面图的拓扑结构确定各切削层的有效加工区域。韩有昂[8]等提出采用移动最小二乘法将测量数据直接生成粗、精加工刀具路径的算法。刀轨连接方面,刘炉山[9]和刘司伟[10]利用分层平面截取点云获得截面点集,组环判断加工区域并进行等距规划出刀轨。原恩桃[11]等计算出切削层上边界轮廓获取加工区域,构造边界数据结构获取加工区域。吴世雄[12]等利用Marching Cubes算法构建层切网计算刀具路径。盛沛颐[13]和贺显良[14]都提出了一种基于单调链技术的行切刀轨生成算法,划分出切削区域后生成刀轨并进行相连,以减少跳刀次数。李骏[15]等将复杂型腔的加工区域划分为若干单调子区域并在其中生成刀具轨迹,减少了抬刀次数,但只适用于凸轮廓。层切法规划行切粗加工刀轨,由于其切削效率高、刀轨规划相对简单,应用十分广泛,但通常需要获取加工区域边界并进行区域的识别、组织[1~7],刀轨连接时需要构建层切网、单调链等中间数据结构[9~15],算法结构复杂,当加工区域边界复杂、数量多时,工作量较大。
为了提高粗加工刀轨生成效率同时保证加工精度,本文提出基于栅格的刀轨计算方法和基于距离法的行切刀轨连接方法,与Z-map模型相比,栅格构造和使用更加简便且包含所有数据点,将点云划分到栅格再对栅格计算刀轨可大幅减少计算量,提出一种直接根据刀轨距离关系的连接方法,实现将一次走刀能走过的所有刀轨相连,以此降低抬刀次数,无需进行切削区域和中间数据结构的识别、构造,最大程度简化中间步骤。
获取所有数据点x、y、z坐标的最大最小值xmax、ymax、zmax、xmin、ymin、zmin,以此创建一个与坐标轴平行的长方体包围盒。为了保证粗加工余量小于阈值,立方体栅格边长mcell应不大于余量阈值,栅格在X、Y、Z方向上的个数可由式(1)求出。为栅格构造三维数组Cell[Xnum][Ynum][Znum],式(2)可求出任意数据点p(px,py,pz)所在的栅格序号,计算出所有数据点所在的栅格,最后获取每个栅格所包含的数据点。
点云划分到栅格后,构造int型二维数组M[Xnum][Ynum]保存Z方向上非空栅格的最大序列号。设切削、行距方向分别为X、Y,对于第k个切削平面z=zk上的第i行刀轨,其y坐标为yi=y1+(i-1)W,其中y1为首行刀轨y坐标,W(W≤2R)为行距,R为平底刀半径,则此行刀轨计算流程如下:
1)获取切削平面上非空栅格。由式(3)计算出切削平面所在的Z栅格序号Zk,新建BOOL型二维数组Nk[Xnum][Ynum]记录切削平面上栅格是否包含数据点,由式(4)完成赋值,其中
2)获取一行刀轨切削范围内的栅格集合。刀具上下切削边界的y坐标分别为式(2)计算出对应的栅格Y序号获取所有的栅格,按照栅格序号XY方向上连续的关系将这些栅格划分为互不相连的K个子集Cell1,Cell2,…,CellK。
3)对每个栅格子集计算出左右刀位点。以首个子集Cell1为例,如图1所示,获取每一行栅格中X序号最小的栅格,对序号大于Yi的栅格获取其下顶点,序号小于Yi的栅格获取其上顶点,按照式(5)对每个栅格取一个顶点代入式(6)计算出左刀位点的x坐标;同理,可获取每一行X序号最大的栅格,按照式(7)和式(8)计算出右刀位点的x坐标。可对所有子集完成左右刀位点的计算,并依次保存到刀位点链表CL_List中,最后分别在链表首尾增加边界刀位点
图1 对栅格子集Cell1计算刀位点示意图
4)判断刀位点是否干涉,获取有效刀轨。对链表CL_List内的刀位点进行有效性判断,逐对比较和的x坐标大小,若如图2所示,分别与栅格子集Cellj+1和Cellj发生干涉,这对刀位点无效并将其删除。完成所有刀位点有效性判断后,对剩余的所有刀位点依次两两相连,即获得了第i行切削刀轨。
按照以上流程可计算出所有切削层上的行切刀轨。
图2 刀位点干涉示意图
上节生成的行切刀轨之间相互分离,为了减少抬刀次数,需要对每个切削平面上的刀轨进行连接。目前许多刀轨连接方法[9~15]都要提取切削平面上的切削区域环和轮廓、构建层切网或构造单调链来进行刀轨连接,为了避免获取模型的区域边界或构建单调链等中间步骤、大幅简化算法结构,本节提出一种基于刀轨距离关系的刀轨连接方法。以第i行刀位点链表CL_List、坐标升序搜索为例,首先对当前刀轨通过y坐标升序搜索下一行未连接且切削区域相连的刀轨,若下一行无满足条件的刀轨,则转为y坐标降序的方式,最后将刀轨端点连接起来获得一次走刀的完整刀轨。为了避免距离过大的刀轨端点连接发生过切,设置距离阈值dmax,dmax取值越大抬刀次数越少,但越容易发生过切,经测试一般取4R≤dmax≤8R较为合适,算法详细流程如下:
1)新建刀位点链表Path_List以保存一次走刀的所有刀位点。对所有刀轨,按y坐标和x坐标升序搜索刀轨,若所有刀轨都已连接,则转到5);否则将搜索到的首个未连接刀轨记为已连接,设置当前搜索方式为y坐标升序,以左端点为初始连接端点并保存到链表Path_List中,转到2)。
3)若相邻行无刀轨或都为已连接的刀轨,转到5);若相邻行刀轨存在未连接的刀轨,将这些刀轨的首尾点x坐标分别记为{xSm}、{xEm},其中m≥0;若区间[xSm,xEm]与当前刀轨的x坐标区间[xi,j,xi,j+1]无交集,如图3 (a)所示,计算点集{xSm}和{xEm}中与搜索点CLi,j+1距离最近点和最短距离dmin。若dmin<2R,说明CLi,j+1与的切削区域有重叠,将作为待连接点,转到4);若dmin≥2R,则不进行连接,转到5);若相邻行刀轨的x坐标区间[xSm,xEm]与当前刀轨区间[xi,j,xi,j+1]有k(k≥1))段交集,如图3(b)所示,若搜索点为刀轨的右端点,在中找出与搜索点x坐标xi,j+1距离最近的点和最短距离小于等于距离阈值作为待连接点,转到4);若不是待连接点,在{xSm}中找出与搜索点x坐标xm,j+1距离最近的点和最短距离为待连接点,转到4),否则相邻行无可连接点,转到5)。类似地,若搜索点为刀轨的左端点,则以先{xSm}后{xEm}的顺序按照此方式进行搜索待连接点。
图3 刀轨连接示意图
4)待连接点就是需要连接的刀轨端点,将搜索点标记(Searching)移动到待连接点上作为连接端点,并将其添加到链表Path_List中,将此段刀轨作为当前刀轨,转到2)。
5)若当前搜索方式为y坐标升序,则改为y坐标降序并搜索出所有相邻行刀轨,转到2);若当前搜索方式为y坐标降序,则转到6)。
6)将链表Path_List中保存的刀位点依次相连,即获得一次走刀的完整刀轨,此次刀轨连接结束。转到1),即可开始下一次的刀轨连接直至所有刀轨都连接,算法流程如图4所示。
图4 流程图
所提出的方法已在Visual C++ 6.0和Opencascade6.2.0平台上完成了软件的开发,为了验证其可行性,以图5中的覆盖件点云为例规划粗加工刀轨。点云包含305,267个点,包围盒尺寸为315×235×70,加工参数为:刀具直径5、行距4、切削余量阈值1、刀轨连接阈值40,单位为mm,共分为20个切削层,每层切削深度相同。图6给出了算法求出的第1、3、9切削层上的刀轨,对所有刀轨利用Vericut软件进行加工仿真,效果如图6(d)所示。
图5 覆盖件点云
图6 加工刀轨生成与仿真
点云包含海量数据点,直接对数据点计算粗加工刀轨计算量大,为此本文提出将点云划分到栅格中、对栅格采用层切法计算行切刀轨,以此减小计算量;为了避免刀轨连接时识别、构造切削区域和中间数据结构这一中间过程,提出直接判断刀轨之间距离关系进行相邻刀轨连接,最大程度简化中间步骤、降低抬刀次数。本文提出的算法可实现点云粗加工刀轨高效生成,在未来的研究中,可进一步研究抬刀、下刀距离(即空行程)最小化算法,以减少非加工刀轨距离、缩短加工时间,获得更加高效的刀轨。
[1] Lin AC, Liu HT. Automatic generation of NC cutter path from massive data points[J].Computer Aided Design,1998,30(1):77-90.
[2] Lin AC, Lin SY.Computer-aided mold engraving: from point-data smoothing, NC machining, to accuracy checking[J].Journal of Materials Processing Technology,1999,86(3):101-114.
[3] 杨建中,王启富,黄正东,陈刚.组合曲面的粗加工刀轨算法[J].计算机辅助设计与图形学学报,2006,18(2):295-301.
[4] Yau HT, Hsu CY. Generating NC tool paths from random scanned data using point-based models[J].The International Journal of Advanced Manufacturing Technology,2009,41(9-10):897-907.
[5] 李学艺,姜虹,王小椿,李润方.雕塑曲面数控粗加工刀位规划[J].西安交通大学学报,2003,37(11):1175-1178.
[6] 李学艺,王小椿,陈松,李润方.离散数据复杂曲面的粗加工[J].计算机辅助设计与图形学学报,2003,15(3):338-342.
[7] 张伟,卢锡龙.基于散乱数据的粗加工刀具路径生成[J].机械设计与研究,2014,30(1):85-88.
[8] 韩有昂,张英杰.基于移动最小二乘法测量数据的数控刀轨生成[J].计算机集成制造系统,2011,17(3):638-642.
【】【】
[9] 刘炉山.基于数字化样件的虚拟测量及数据处理技术[D].南京:南京航空航天大学,2003.
[10] 刘司伟,张丽艳.基于散乱测量数据点的三轴数控粗加工刀位轨迹生成算法[J].机械设计与研究,2004,(3):6-10.
[11] 原恩桃,邵兵,张晓峰.细分曲面粗加工刀轨生成算法[J].机械设计与制造,2013,(4):144-146.
[12] 吴世雄,王文,陈子辰.测点数据生成刀具路径研究[J].计算机辅助设计与图形学学报,2005,17(8):1704-1709.
[13] 盛沛颐,陈钢,张新访.基于单调链的平面型腔行切加工轨迹生成算法[J].华中科技大学学报,2002,30(4):10-12.
[14] 贺显良,谢明红.基于单调链的行切刀具路径生成算法[J].计算机辅助工程,2008,17(1):52-55.
[15] 李骏,樊留群,赵建华,陈阁,胡立文.基于区域划分的刀轨生成算法的研究[J].组合机床与自动化加工技术,2014,(5):123-126.
Research on efficient tool path generation method of rough machining point cloud
ZHU Shu-mei, LIU Wei, ZHU Jun-jun, ZHOU Chen, SUN Wen-xin
TP391.73
:A
1009-0134(2017)07-0032-04
2017-05-16
江苏省高校自然科学研究面上项目(14KJB460027),苏州科技大学科研基金(青年项目),江苏省大学生创新重点项目(2017103320092),苏州科技大学大学生创新项目
朱淑梅(1985 -),女,江苏兴化人,本科,研究方向为CAD/CAM和数控加工。