宋义知,何 利,郝 博
(1.沈阳理工大学 机械工程学院, 辽宁 沈阳 110159;2.辽宁机电职业技术学院, 辽宁 丹东 118009)
基于STL数据处理的钣金检验特征识别
宋义知1,何利1,郝博2
(1.沈阳理工大学 机械工程学院, 辽宁 沈阳 110159;2.辽宁机电职业技术学院, 辽宁 丹东 118009)
摘要:针对CATIA对航空钣金零件的设计数模,应用CATIA二次开发工具,直接提取钣金零件的STL点云数据.基于CATIA平台,采用VC(++)6.0工具和CATIA的API函数,对提取的STL点云建立拓扑关系.基于高斯曲率进行曲面特征识别,提取钣金件的特征,并对检验方法进行规划,在实际的运用中提高了钣金零件的加工设计效率,使得产品开发周期缩短近30%,降低了加工成本,节约了能源和人力,实现了加工的高效性和精确性.
关键词:STL点云数据;拓扑关系;航空钣金;高斯曲率;检验特征
钣金零件广泛应用于汽车、飞机、电子、轻工等行业,尤其是在大型飞机中,钣金零件数以万计[1]. CATIA是法国达索系统(Dassault Systemes)公司开发的,具有界面友好、功能强大、易于操作等特点的三维CAD/CAM软件,多用于大型复杂的产品设计[2].目前,对CATIA二次开发应用较多的是CAA(Component Application Architecture)技术.这种方法采用了标准接口技术,具备更好的模块独立性和可扩展性,使得程序设计更加容易且趋于标准化,可进行系统所有功能的开发工作[3].
传统的钣金检验方法对工人的工作经验以及技能要求很高,而且很容易出现错误.通过对钣金件的STL(Standard Triangulation Language)点云数据的直接提取,去除冗余信息,建立拓扑关系,得到钣金零件的特征信息及相应的检验规则,使得检验人员能够根据检验规则对相应的钣金特征进行检验,又可提高检验效率和检验的通用性.基于STL点云文件的数据分析为钣金零件的检验特征识别提供了一种可能.
1STL点云数据文件
STL文件格式[4]是一个后缀名为“.stl”的文本文件,是广泛应用于制造行业针对三维模型的一种存储格式,目前已成为机械制造行业不同三维软件间的接口标准之一.STL文件格式简单、读取方便, 通过CATIA界面的二次开发,可自动提取钣金零件的STL点云数据,对点云数据进行处理,得到钣金零件的特征.STL文件包含了三维零件表面三角网格后的所有三角面片的信息,每一个三角面片,都包含了面片单位法向量的坐标值,以及三角面片3个顶点的坐标值.然而,这个文件是对三维零件模型表面的一种近似,因此不同的精度要求会有不同的三角面片划分方法.CATIA应用软件内嵌了转化为STL文件格式的工具,并对零件表面离散化进行了一定程度的优化,基本上可以提供符合要求的最简STL文件.STL文件的结构模型如图1所示.某钣金零件的STL点云文件的三角网格如图2所示.
图1 STL文件的结构模型
图2 某钣金零件的STL点云文件的三角网格
2冗余信息去除及拓扑关系建立
在理想情况下,不进行任何比较,一次存储便能够得到所查记录,建立一种储存位置和它的关键字之间的对应关系,使得关键字跟数据的存储位置有唯一的对应.在查找时,根据这个对应关系HX就可以找到给定值F的像HX(F),进而结构中存在和关键字F相等的记录,则必定在HX(F)的存储空间上,所以不需要查找便可以直接取得所查记录.对应关系HX即为哈希函数,据此思想建立的表即为哈希表[5].STL文件包含了零件表面三角网格化后的所有信息,但是,最大问题在于,它只包含每个面片的法线及3个顶点的坐标信息,没有三角面片之间的关系,也没有零件的任何拓扑信息或几何信息,同时STL的每个顶点大都被重用了6次以至于数据的冗余信息太大[6].STL文件中存在大量冗余顶点,这些冗余顶点会破坏面片间的拓扑关系,影响后续的模型处理[7].因此,对于STL文件的数据处理主要分为两个方面:一是,合并重复出现的顶点,以便减少冗余信息,设计一种数据结构将STL文件中重复出现的顶点只保存一次;二是,建立拓扑关系,即建立通过一个面片可以找到3个顶点坐标以及相邻面片的拓扑关系.
2.1建立拓扑关系
利用哈希表和哈希函数建立拓扑关系,其基本的思路是从STL点云的三角形网格中读取每个顶点,查找并去除重复顶点,建立一个不包含重复点的点表,同时建立只存储每个三角形顶点在点表中索引值的面表.
首先建立一个点表.点表是一个顺序表,顺序表中每个元素包含两个域,第一个域存储了每个顶点的坐标信息,第二个域是指向链表的指针域,链表中存储了该顶点指向的所有三角面片的索引.所建立的三角网格的顺序点表如图3所示.
图3 三角网格的顺序点表
其次建立顶点表.顶点表为以哈希函数计算的顶点的哈希地址作为下标的顺序表.其每个行所对应的链表中包含顶点所在点表中的地址索引和指向具有相同哈希地址的不同点指针的两个域.顶点哈希表的结构如图4所示.
图4 顶点哈希表的结构
最后建立面表.面中的每个元素含有3个域.其中2个域存储着面片法向量和3个顶点的索引,第三个域中存放着相邻面片的索引.本研究建立的三角网格索引面表的结构如图5所示.
图5 三角网格索引面表的结构
所建立哈希表的部分函数如下:
Status SearchHash(HashTable H,KeyType K,int *p,int *c)
{
*p=Hash(K); /* 求得哈希地址 */
while(H.elem[*p].key!=NULLKEY&&!EQ(K,H.elem[*p].key))
{ /* 该位置中填有记录.并且关键字不相等 */
(*c)++; /* c用以计冲突次数,其初值置零,供建表插入时参考.*/
if(*c collision(p,*c);/*求得下一探查地址p*/ else break; } if EQ(K,H.elem[*p].key) /* 元素在表中位置,并返回SUCCESS;否则,以p指示插入位置,并返回UNSUCCESS */ return SUCCESS; /* 查找成功,p返回待查数据元素位置 */ else return UNSUCCESS;/*查找不成功(H.elem[p].key==NULLKEY),p返回的是插入位置*/ } 2.2建立哈希函数及拓扑算法 三角网格冗余信息的去除以及STL文件数据处理的关键在于实现顶点的快速查找.其原理就是以顶点的坐标作为关键字,通过哈希函数计算出顶点在表中的位置.这里根据保留余数法建立哈希函数,取关键字被某个不大于哈希表表长M的数L除后所得的余数,作为哈希地址. 哈希函数为: HX(F)=FmodL (1) 对应的哈希表长M为: M=q×3÷10+2 (2) 关键字F为: F=|u.x|×10^4÷23+|u.y|×10^4÷19+ |u.z|×10^4÷17 (3) 式中:u为顶点坐标;u.x是顶点对于x轴的分量;u.y是顶点对于y轴的分量;u.z是顶点对于z轴的分量;q为STL点云文件的顶点个数. 根据哈希函数计算出哈希地址,作为索引值,可以建立点与面、法向量与面、面与面、点与边,边与边之间的邻接关系,进一步建立由一点联系到边及相邻边,由边联系到面及相邻面的拓扑联系,从而把STL点云数据的三角网格在空间的相互拓扑关系建立起来,STL点云数据即可被显示和特征识别.根据对STL点云数据建立拓扑关系的要求,在一定规范的输入文件下,在有限时间内高效地完成拓扑关系的建立,并验证该算法的空间复杂度和时间复杂度是否符合实际的操作要求. STL点云数据的拓扑关系建立算法如下:建立三角网格顺序点表、索引面表及顶点哈希表;之后根据哈希函数计算出一片三角网格的3个顶点的哈希地址,并把所计算的哈希地址及相关信息写入三角网格的索引面表;然后判断3个顶点是否为新点,并进行相关操作;最后依次把STL点云数据文件的三角网格面片信息读取完毕.STL点云数据拓扑关系算法的建立流程如图6所示. 图6 建立拓扑关系算法的流程 3区域分割和特征识别 STL文件是由很多三角网格组成的几何模型数据.对于平面或特征变化较小的区域,采用较大的三角面片来表示;对于特征密集区域或曲面区域,则需要采用大量的小三角面片来近似表示.特征存在位置分布着大量的顶点,而一般特征又都是均匀分布的,可以借助这些顶点的特性进行区域分类. 某点附近局部曲面的类型可以根据该点对应的高斯曲率和该点的平均曲率来确定.曲面上某点的高斯曲率是指该点处两个主曲率的乘积,反映了曲面的弯曲程度.曲面弯曲程度的变化会导致高斯曲率的变化.两个曲面交界处的高斯曲率会发生突变.因此,可根据高斯曲率的改变情况来判断曲面的变化情况以及曲面的特征种类.曲面上某点的平均曲率是指通过曲面点的所有曲线在该点曲率中极大值与极小值的平均值.它是一个平面弯曲的测量标准,描述了一个曲面嵌入周围空间的曲率.在三维空间的曲面中平均曲率的正负与曲面的法向量有关,而法向量与曲面的凹凸情况密切相关.利用曲面的平均曲率可以对曲面的性质进行判断.通过顶点高斯曲率和平均曲率的特点分析,对钣金零件STL点云的三角网格进行位置分割,可以识别钣金零件所包含的曲面类型.对于STL点云的三角网格顶点分析,可进行其顶点附近的曲面分类:“峰”,即点是一个凸点;“阱”,即点是一个凹点;“谷”,即点的部分方向是凹的,在一个方向上是平面;“脊”,即点的部分方向是凸的,在一个方向上是平面. 本研究在STL点云数据模型中,以图7为例,对曲面上P点的高斯曲率和平均曲率进行了分析[8]. 图7 以P为顶点的三角面片分析 P点的高斯曲率为: (4) 式中:θi为某个以P作为顶点的三角面片所对应的内角;Ai为对应三角面片的面积;N为以P作为顶点的三角面片数量. 对应P点的平均曲率为: (5) 若K=0且H=0,则该点附近为平面; 若K>0且H>0,则该点附近的曲面为“峰”,即点是一个凸点; 若K>0且H<0,则该点附近的曲面为“阱”,即点是一个凹点; 若K=0且H<0,则该点附近的曲面为“谷”,即点的部分方向是凹的,在一个方向上是平面; 若K=0且H>0,则该点附近的曲面为“脊”,即点的部分方向是凸的,在一个方向上是平面; 但在K>0且H=0的情况下,会相互矛盾,即这种情况不存在. 之后,数据的处理类似于平面时种子面的处理.其处理过程如下:①确定种子面;②延伸扩展种子面(相邻的没有被分配的,且其顶点和种子面又是同种类型的,则可以用于扩展种子面.这种扩展直至没有相同类型的邻接面为止);③区域合并(将两个类型相同且相邻的区域进行合并;可将公共边不包含尖锐特征的边,且公共边平滑的或者相切的区域合并). 在实际应用中,钣金零件最常见的特征有弯边特征和肋孔特征等.弯边特征由两个平面区域和一个柱面区域连接而成,且连接处分别与两个面相切.该弯边的特征由其柱面区域的特征类型决定.柱面区域的三角面片都是“峰”特征面,而连接区域为“脊”特征面.因此,选取种子面进行区域合并,最终可以把柱面区域及相邻平面的面片都合并进来,原因就是相合并的这些面性质相同且其两个面片之间的公共边不是特征区域的边界,而是公共边平滑的规则曲面与平面区域的连接. 4特征识别实例 CATIA为用户开发提供了API(Application Programming Interface)函数库和READ(Rapid Application Development Environment)快速应用开发环境,支持在Visual C++环境下基于面向组件的开发模式,具有很强大的交互、集成和用户特征定义功能,能够无缝嵌入CATIA V5当中.航空钣金零件三维数模的建立大多数是在CATIA 中完成的.这里主要在二次开发基础上提取零件的STL点云数据文件,并在CAA的二次开发环境下对提取的STL点云数据文件进行特征识别.在CATIA中生成的钣金零件的STL点云文件,是一个相对优化的三角网格模型.航空钣金零件的STL点云文件在CATIA中的文件生成以及特征的识别提取,涉及大量的数据处理,并在后台运行.其流程如图8所示. 图8 钣金零件的STL文件特征识别流程 对CATIA进行二次开发,即在CATIA的界面下调用API函数库,建立一个与用户相交互的处理界面.其部分程序如下: CATDlgDialog((CATApplicationFrame::Get ApplicationFrame())->GetMainWindow(), //CAA2 WIZARD CONSTRUCTOR DECLARATION SECTION “CCCC”,CATDlgGridLayout //CAA2 WIZARD CONSTRUCTOR INITIALIZATION SECTION _Frame001 = NULL; _Frame003 = NULL; _MultiList004 = NULL; _Label005 = NULL; _Label006 = NULL; _Frame002 = NULL; _PushButton007 = NULL; _PushButton008 = NULL; _PushButton009 = NULL; _PushButton010 = NULL; //_Frame001->SetTitle(“基于STL点云的特征提取项目”); //_Frame002->SetTitle(“点云预览”); //_Label005->SetTitle(“处理机制”); //_Label006->SetTitle(“数据信息”); //_PushButton007->SetTitle(“STL三角网格划分”); //_PushButton008->SetTitle(“STL点云数据处理”); 在CATIA中建立的用户交互式界面如图9所示.通过二次开发界面提取的钣金零件STL点云文件的数据如下: solid CATIA STL facet normal 9.999506e-001 -9.942916e-003 0.000000e+000 outer loop vertex -2.000000e+001 2.449213e-015 2.000000e+001vertex -2.000000e+001 2.449213e-015 0.000000e+000 vertex -1.999605e+001 3.976437e-001 2.000000e+001 endloop endfacet facet normal 9.999506e-001 -9.942916e-003 0.000000e+000 outer loop vertex -1.999605e+001 3.976437e-001 2.000000e+001 vertex -2.000000e+001 2.449213e-015 0.000000e+000 vertex -1.999605e+001 3.976437e-001 0.000000e+000 endloop endfacet facet normal 9.995553e-001 -2.981916e-002 0.000000e+000 endloop …… endsolid CATIA STL 应用哈希表和哈希函数去除STL文件冗余信息并建立拓扑关系,对CATIA 生成的钣金零件STL 点云文件进行区域分割和特征识别,最终呈现在CATIA二次开发界面中,完成了在CATIA开发模式下航空钣金零件的特征识别,以及在CATIA界面中的实现(图10). 采用传统方法对飞机钣金零件的检验,对员工经验要求很高,而且无法保证检验的精度和效率.在机械制造行业中,钣金零件数量繁多,要想真正提高钣金零件的检验速度以及精度,必须从根本上改进钣金零件检验的方法.采用数字化方式,对常用的航空钣金零件三维模型软件CATIA进行二次开发,可以提取并识别钣金零件的待检验特征,在实际的应用操作中提高了钣金零件加工设计的效率,使得产品开发周期缩短近30%,降低了加工成本,节约了能源和人力,实现了加工的高效性和精确性. 5结束语 图10 基于STL数据处理的航空钣金零件特征识别的运行界面 在CATIA二次开发的界面下对航空钣金零件的STL点云数据文件进行提取,以哈希函数、哈希表为基础,去除冗余信息,建立拓扑关系,对STL点云数据进行处理.根据STL三角网格的区域分割特征提取算法,在二次开发的CATIA界面中实现了对STL点云的特征提取和识别.快速提取钣金零件的检验特征是飞机钣金检验规划系统的基础.先进的钣金检验方法可以提高整个系统的工作质量与检验效率. 参考文献: [1]郝博,施华,何利.飞机钣金检验规划及数模的检验信息提取[J]. 四川兵工学报,2012,33(10):110-112. [2]苏红军,王永金.基于CAA的CATIA V5二次开发方法的研究[J].机械,2008,35(S1):41-43. [3]许元付,郝博.基于CAA的机械零件参数化设计[J].成组技术与生产现代化,2013,30(1):45-48. [4]张红玲.STL格式实体真实感图形显示工具[J].电脑学习,2000(4):31-32. [5]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2007. [6]王增波.STL格式文件的快速拓扑重建算法[J].计算机应用,2014,34(9):2720-2724. [7]卫炜,周来水,张丽艳.海量STL文件的快速读取与显示[J].机械科学与技术,2006,25(6):935-938. [8]Hoffman R,Jain A K.Segmentation and classification of range images[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,1987,9(5):608-620. Sheet Metal Inspection Feature Recognition Based on STL Data Processing SONG Yi-zhi1,HE Li1,HAO Bo2 (1.School of Mechanical Engineering, Shenyang Ligong University ,Shenyang 110159,China;2. Liaoning Mechatronics College, Dandong 118009, China) Abstract:In view of the CATIA design mathematical model of aircraft sheet metal parts,this paper directly extracts sheet metal parts of the STL point cloud data using CATIA secondary development tools CAA.Besides, based on CATIA platform, using VC(++) 6.0 tool and CATIA API function to extract the STL point cloud based on the fast algorithm, this paper also established topological relationship and topologica lrely on surface feature recognition based on Gaussian curvature and extracts the features of sheet metal parts, and planning of inspection method. Furthmore, this paper used the actual operation to improve the efficiency of the process design of sheet metal parts, makes the product development cycle shorten nearly 30%, reduced the processing cost, saving energy and manpower, to achieve the efficiency and accuracy of processing. Key words:STL point cloud data; the topological relationship; aircraft sheet metal; Gaussian curvature; inspection characteristics doi:10.3969/j.issn.1006-3269.2016.01.009 中图分类号:TP391 文献标识码:A 作者简介:宋义知(1991-),男,山东梁山人,硕士研究生,研究方向为机械工程. 基金项目:国家自然科学基金资助项目(61170146) 收稿日期:2015-07-02 文章编号:1006-3269(2016)01-0046-07