基于特征识别的航天器舱段零件自动编程
2022-01-19席逸凡杨建中朱万强张成磊
席逸凡,杨建中,,高 嵩,朱万强,夏 畅,张成磊
(1.华中科技大学机械科学与工程学院,湖北 武汉 430074)(2.国家数控系统工程技术研究中心,湖北 武汉 430074)
数控编程是数控加工的关键步骤。目前的CAD/CAM软件中,CAD与CAM系统功能相对独立,集成度不高,编程过程中需要先设计相关加工特征,根据特征加工工艺设置相关的工艺参数后生成加工程序,这一过程中对同类型的加工特征需进行大量的重复性操作,导致编程效率不高。
运用特征识别技术被认为是CAD/CAM系统一体化的有效途径[1],一经提出,就受到了大量关注,随着该项技术的不断发展,其识别复杂目标的效果更优,识别效率也越来越高。陶建华等[2]以STEP文件为对象,将模糊推理引入到基于属性邻接图(attributed adjacency graph,AAG)的识别中;赵鹏等[3]采用单元体分解策略,对切削体(毛坯和零件的布尔差集)设定分割面进行分解,再将单元体重组,从而进行识别;汤志鸿等[4]利用属性邻接图进行有效邻面计算,识别出飞机框肋类零件的部分制造特征;左晓娟等[5]将AAG简化为加工面邻接图(manufacturing face adjacency graph,MFAG),以型腔零件作为识别对象,给出了MFAG的分解策略并对其进行识别。对于航天器舱段零件而言,其加工特征复杂且数量众多,数控编程仍然依靠CAM软件选择加工特征,配置工艺参数,编程时间周期长。从现状看,上述特征识别方法并未应用于航天器舱段零件加工。采用特征识别方式自动提取航天器舱体零件复杂的加工特征形状,供CAM软件实现自动编程,对航天器舱段零件编程效率的提升具有较大的意义。
本文以航天器舱段零件为研究对象,以UG7.5作为系统环境支撑,根据AAG图的存储矩阵进行扩展定义,在此基础上设计了特征识别算法识别出零件的加工特征,随后建立了加工操作模板,并实现自动编程。
1 基于图的特征识别方法
1.1 特征形状分析
所谓加工特征,是指材料经切削成型后零件所具有的形状特征,是实体零件所携带的有意义的信息集合。航天器舱段零件由圆柱形毛坯经车铣加工后所得,其特征主要由舱段体端面和内外面嵌入的形状特征两区域所构成。其中端面特征主要为端面圆柱孔,内面特征主要为花边以及网络筋,外面特征包括开口、槽、椭圆孔以及圆孔。其主要特征形状如图1所示。
1.2 属性邻接图(AAG)
属性邻接图是将零件抽象成面与边的模型,其主要以面、边以及边的凹凸性阐述模型各个面的逻辑关系。属性邻接图G的定义如式(1):
G={V,E}
(1)
图1 航天器舱段零件特征种类
式中:V为属性邻接图中的顶点,对应于模型的面;E为模型两面相交而构成的边,对应于模型中两面相交的边。
目前,大部分CAD系统采用B-Rep(boundary-representation)模型表达方法表示零件,B-Rep是以物体边界为基础定义描述几何体的方法[6],直接从B-Rep中进行特征识别较为复杂,因此需对B-Rep中的信息进行适当的处理和排序。本文将B-Rep转化为AAG,作为特征识别的基础工具,其主要流程如图2所示。
图2 AAG构造流程
在UG中,UG OPEN API提供了UF_BREP开头的函数可以直接获取零件B-Rep信息。其中,UF_BREP_ask_topology()接口函数可以将零件面、边、点的拓扑树信息存储于UF_BREP_topology_s结构体中。
1.2.1属性邻接图的构建
在获得零件B-Rep树形结构的基础上,创建AAG,边的凹凸性判断方法可以参考文献[7]。从B-Rep到AAG的构建算法主要如下:
1)创建链表List,并创建结构体Struct,包含面1(face1)、面2(face2)、边(edge)3个元素。
2)自树的根节点Root开始遍历List,遍历过程中若节点Node为面,读取该面属性并标识该面Tag。
3)节点Node为面时,搜索其Loop的孩子节点Child,其Child为各个Edge,遍历List,若List中同一个Struct中face和edge元素同时无该Face与该Edge,则创建Struct并用face1记录此Node中的Face,用edge记录此Node中的Edge,并在List中插入该Struct;若有该Edge且face2未被赋值,则在该Edge所在的Struct中,将该面标识为face2;若有该Face和Edge且face2已经被赋值,则创建新Struct,将原来的face1与edge拷贝,将face2赋值给该Face。
4)若含有多个Child,则创建新的Struct,在新Struct中将该面Face标识为face1,边Edge标识为edge,访问完所有Child,再循环直至访问过所有的面Face。
5)遍历List,并根据面的属性计算边的凹凸性,在Struct中标识,将每个Struct中的face插入为AAG中的Vertex,edge插入为连接AAG中的各个边,结束。
计算机对于图的存储,主要有邻接矩阵、邻接表等方法。邻接矩阵主要以二维数组的方式存储,在内存中占有连续的内存,更易于直接读取数据,而邻接表以链表的方式进行存储,不方便直接读取。本文采用子图匹配算法,考虑到特征识别过程中子图匹配的效率,采用邻接矩阵存储属性邻接图。
定义构成邻接矩阵为n×n二维数组G:
(2)
式中:i与j代表面;G[i,j]代表边的属性值(凸边、凹边或不相交)。
在传统的属性邻接矩阵中,矩阵的值只包含0和1,易产生二义性[8],以此矩阵表达图形时其信息不够完整,故考虑定义邻接矩阵中的各值,以增加矩阵含义。
1.2.2扩展的属性邻接矩阵
在传统属性邻接矩阵n×n的二维数组G基础上定义扩展的属性邻接图M,同样用n×n的二维数组表示如下:
1)对于每个元素M[i,j]而言,如果i=j,则定义M[i,j]不同的数值代表不同的面,具体见表1。
表1 i=j时节点值对应的面类型
2)对于每个元素M[i,j]而言,在i≠j的情况下,如果面i与面j不相交,则M[i,j]=0;如果面i与面j相交,则M[i,j]的值可根据需要定义。本文以二位数表示边的属性,在二位数的个位上以0,1分别代表面i与面j相交边的凹凸性,在二位数的十位上以1,2,3等代表直线边、圆弧边、椭圆边等,具体见表2。
根据上述定义,以图3(a)所示带有侧壁开口的零件特征图为例,可以构建出如图3(b)所示的零件特征结构AAG,并以图3(c)中的拓展属性邻接矩阵进行存储。
表2 i≠j时节点值对应的边类型
图3 零件AAG图与扩展属性邻接矩阵
1.3 特征识别
建立零件的扩展属性邻接图后,特征识别过程实为特征子图匹配过程,因此需要先建立好各个特征的子邻接矩阵。在整体舱段零件中,建立如表3所示的特征矩阵库。
表3 特征扩展属性邻接矩阵
在上述规则下,提出如下算法。
1)在1.2节中方法建立扩展属性邻接矩阵的基础上,定义k的值,若k为1,则代表是该类型的面,若k为其他数,则代表非该类型的面。以式(3)计算出k值:
(3)
式中:Mii为扩展属性邻接矩阵对角线上的元素;d为不同类型面所对应的值,本文例中只取d=-1,-2,-3。针对其他特征可继续拓展。
设立数组v[p]用来标识所有面是否被访问:
(4)
式中:p表示拓展属性邻接表中所有面的编号。
2)识别椭圆孔:当k=1且d=-3时,记录此刻i值,标记该面为椭圆孔特征并输出,将V中该面的值设为1。
3)识别侧壁面:当k=1且d=-2时,记录此刻i值,在属性邻接矩阵中,遍历i所在列的数据值,若无Mij=20且存在Mij=21时i值所对应的Mij为-1,标记该i面tag为侧壁面,将V中该面的值设为1。
4)识别端面:遍历侧壁面所在的列,若存在Mij=21且i值所对应的Mii=-1,且该面与两侧壁面相连,并所有与该面相邻面所在的Mii=-2,则将该i侧壁面tag更改为端面,将V中该面的值设为1。
5)提取侧壁面特征子矩阵:遍历侧壁面所在的列,若Mij≠0且v[p]≠1,在当前i值下,将V中该面的值设为1,并搜索所有与该i值相邻的面,将V中该面的值设为1。递归搜索该相邻面的邻面,直至所有邻面均被访问,终止循环。提取出该几个面相交的值Mij,建立特征子矩阵。继续上述操作,直至j值到列末。
6)提取端面特征子矩阵:在端面所在的列中,同步骤5),提取建立特征子矩阵。
7)将5)和6)提取得到的特征子矩阵与特征库中的特征矩阵进行比较,若特征子矩阵满足特征库中特征矩阵,则输出该特征。满足条件为:两矩阵阶数必须相同,对应行元素值必须相同,对应行的位置可不相同。
2 自动编程
2.1 工艺知识库的建立
本文提出用工艺知识库存储各个加工特征的工艺数据,用于特征识别后对加工工艺的查询。该工艺知识库包含以下模块:
1)航天器舱段零件常见加工特征;
2)不同加工特征的工艺操作以及工艺参数初始值;
3)各类工艺参数间的制约关系;
4)各类加工操作的模板。
各模块的功能示意如图4所示。
图4 工艺知识库模块关系图
每个加工特征都有相应的加工工艺知识,本文以MySQL数据库存储工艺知识。考虑从加工特征到各个加工步骤再到其加工方法的映射关系为树形结构,因此采用Closure Table进行其结构的存储。主要方法为:
1)创建表ProcessKnowledge,用于存储数据信息。数据序号为Eid,各类的名称设定为Ename,各类的数据设定为Data;
CREATE TABLE ProcessKnowledge (
Eid INT,
Ename VARCHAR(100),
Data VARCHAR(100)
)
表ProcessKnowledge的具体内容见表4。
表4 加工数据信息存储表ProcessKnowledge(例)
2)创建表Relations,用于存储数据之间的关系,其中RootID用于表示其根节点,Depth表示其深度,IsLeaf表示其是否是叶节点,NodeID表示其FeatureID。
CREATE TABLE Relations(
RootID INT,
Depth INT,
IsLeaf TINYINT,
NodeID INT
)
表5为表Relations的示例。
表5 加工数据关系表Relations(例)
以此方法建立加工工艺库,如需读取侧壁槽精加工的数据,只需查询RootID为精加工且深度为1的叶节点。
2.2 自动编程模板
结构、形态、功能等相似性的加工特征一般具有相同的加工方法,因此采用设计模板思路对同一类加工特征调用同一个加工模板的方式来实现自动编程。模板的内容主要包含加工几何体、驱动方法以及工艺参数,而基于特征识别的编程模板可将识别出的特征自动导入模板中去,自动编程模板主要是针对工艺参数的设计。
1)刀具库的设计。
加工模板需满足同一类加工特征不同尺寸的加工,因此每一类特征的加工模板需要建立好满足所有加工要求的刀具。在刀具库中设置加工刀具的直径、圆角、有效刀长、材质等,用于记录刀具的详细信息,方便在模板中使用。
2)加工工艺参数的设计。
不同加工步骤对加工精度的要求不同,因此设定的加工工艺参数也不同。企业中常用刀具有D10、D8、D6、D4等,一般加工工艺参数根据刀具的规格尺寸选取。不同尺寸刀具加工工艺参数见表6。
表6 不同尺寸刀具工艺参数表
由此,经过特征识别、调用工艺知识库即可通过映射关系得到对应的加工方法,再选择刀具获取相应的工艺参数,最终得到相应的加工刀具模板,从而实现自动编程。
3 应用实例
基于本文提出的特征识别方法,以VS2010作为开发环境、Qt以及NX 7.5提供的库文件,开发了整体舱段零件自动编程系统。该系统以Qt搭建系统界面,运行于NX 7.5的平台上,包括加工特征选取、特征显示以及加工工艺参数编辑模块,可识别航天器舱段零件端面圆柱孔、侧面槽、侧面开口、侧面圆柱孔、侧面椭圆孔5种不同的特征。通过编辑界面右侧的工艺参数,生成自动编程模板,最终生成刀具路径轨迹。系统的运行界面如图5所示。
图5 航天器舱段零件自动编程系统
如图6所示,识别出的加工特征于软件界面的左侧特征列表中显示,加工特征的工艺参数于软件界面右侧工艺参数列表中,读取的数据存入刀具路径模板。如图6所示,在NX加工模式下的几何视图中,可生成各种特征加工工艺模板,从而实现数控编程的自动化。
针对航天器舱段零件的加工,采用本文所提出的特征识别算法可有效识别出航天器舱段零件中侧壁槽、圆孔、椭圆孔、侧壁开口等加工特征。根据特征识别算法和工艺库数据自动生成的加工程序在Vericut中用AC双转台结构五轴加工中心进行仿真,其仿真结果如图7所示。
4 结束语
本文以特征识别的方式识别航天器舱段零件的各类典型特征,建立了工艺知识库以及加工模板,实现了整体舱段零件的自动编程。在深入研究特征识别算法的基础上,选用了基于图的特征识别方法,通过将此方法嵌入UG 7.5平台中,实现了从CAD系统导入模型直接获取加工特征信息的功能,减少人工的交互操作,为基于特征识别实现自动编程从而提高编程效率提供了可借鉴的方法。
图6 刀具路径模板
图7 仿真结果