0 引言
在产品的设计和开发中利用逆向工程可以极大地缩短产品的开发周期和开发费用,尤其是我国的汽车行业,许多覆盖件模具均是从国外直接进口,这些模具的设计资料比较匮乏。轿车覆盖件改型或国产化,采用逆向工程不失为一种快捷有效的方法。
逆向工程一般可分为四个阶段:(1)零件原形的数字化。通常采用三坐标测量机(CMM)或激光扫描等测量装置来获取零件原形表面点的三维坐标值。 (2)从测量数据中提取零件原形的几何特征。按测量数据的几何属性对其进行分割,采用几何特征匹配与识别的方法来获取零件原形所具有的设计与加工特征。(3)零件原形CAD模型的重建。将分割后的三维数据在相应软件系统中分别做表面模型的拟合,并通过各表面片的求交与拼接获取零件原形表面的CAD模型。(4)重建CAD模型的检验与修正。采用根据获得的CAD模型重新测量和加工出样品的方法来检验重建的CAD模型是否满足精度或其他试验性能指标的要求,对不满足要求者重复以上过程,直至达到零件的设计要求。而其中实物几何特征的识别和提取是整个过程中的重点和难点。
在逆向工程中,因为大部分实物的形状比较复杂,特别是存在大量自由曲面特
征,通常无法用单一整张曲面来拟合所有数据点。这就需要提取曲面特征,将点云分成许多有意义的区域来单独处理,分别用不同的方法拟合出不同的曲面;然后通过求交、裁剪,用过渡曲面将曲面连接起来,最后形成整张光顺的曲面模型。曲面的划分直接影响曲面的构造方法、曲面的拼接、曲面的缝合及实体模型的建立。所构造的曲面能否反映原来实物的特征,很大程度上取决于分片质量的好坏。
在现行使用的曲面构型软件中,数据分片一般都采用交互式方法进行:即由用户通过对原始数据点云 的观察,分析某一数据集合,从中找出各个特征,交互式对其边界进行定义,然后对所得数据片分别采用相应的曲面重构方法完成单个曲面的重构。再通过公共的边界线或过渡曲面将各个构型曲面连接起来。这种方法实现比较直观,目前很多商用软件都采用这种方式。如surfacer。虽然方法直观,简便,却存在很大不足。采用用户交互式的数据区间定义,在实际过程中存在很大的随意性。确定的边界比较模糊,通常先是对数据进行一个大致的划分,然后根据对拟合曲面情况的观察和误差、光顺性的检测结果进行反复的修改、删除甚至重构。这种做法费时,效率比较低,并且修改观察时因人不同产生的结果可能不同,这需要有一定的实际经验和几何构型水平,是一种摸索和尝试的过程。曲面原有特征也得不到很好的保护和体现,所取得效果未必能达到用户的要求。因此,实现原形特征的自动提取来划分数据一直以来是人们追求的目标。
国内外有很多人对实物原型特征识别和曲面的自动分片进行了研究[3-4],但多数算法比较复杂,实现起来比较困难,有些主要针对规则数据点云的,且都没有真正达到分片的自动化。
通过提取散乱数据点的拓扑结构,完成数据点的三角网格化;然后进行数据精简,估算精简后各测点的法矢和曲率,把曲率极值点作为边界特征候选点;最后连边界点组成边界线。该算法被用于上海大众公司SAN模具数字化项目,取得了较好效果。
1 建立三角网格模型
用光学设备测得的数据点云数据量大,数据排列无明显的组织结构,对这样的点我们采用Riemann图建立散乱数据点间的邻接关系[5],然后采用最小内角最大化原理[1]完成数据点的三角网络化。
2 曲面法矢及曲率求解
对于给定的多面体,在某顶点Pi处的法矢量npi,通常用与之相邻的所有平面单位法矢ni的加权组合来计算[1]。
在实际的应用中,权值λi通常有以下几种取法:
实际上,这种算法是最简单的算法。各有关平面对公共顶点法矢的贡献是相等的,类似于在平面情况下的计算公式。其优点是计算非常简单,但没有明显的几何意义。
其中Ai表示相关的三角形的面积,面积越大,该平面法矢在式中对公共顶点法矢的贡献越小。
其中li为有关的边长,可以看出三角平面的两个相关的边越长,该平面法矢在式中对公共顶点法矢的贡献越小。
在此,采用三角形面积作为权因子,用该点周围的若干三角形法矢的加权平均来计算该点法矢。数据点三角网络化后,在点P0周围有m个点Pi(I=1,2,...m)与之相邻接,称为点P0的邻域点集,m个三角形所在的各平面有m个单位法矢n1,n2,…nm。由P0,Pi,Pi+1所组成的三角形的法矢为ni:
用这种方法估算法矢简单适用
。在编制程序时,除可以估算各点法矢外,还允许各点自带法矢,以提高数据处理的灵活性[2]。
在获得邻域点集在P0点的法矢后,就可以对邻域点集进行局部参数化[3]。由于要估算该点的曲率值,所以局部参数化曲面一般采用二次或二次以上的曲面。经实践总结,对空间散乱分布的数据采用局部抛物面的拟合方法比较好。在参数化的过程中,选择P0点为坐标原点,则对它进行局部参数拟合的曲面方程可表示为h(u,v)=au2+buv+cv2,并选取h坐标轴与曲面在P0点的法矢nP0的方向相同,另两个坐标轴向量u,v位于P0点的切平面内。则由三者构成的标架为δ=(u, v, nP0)。它们组成的坐标系是一个仿射系[2]。如u,v 为P0点的主方向,其对应的主曲率为k1,k2(见图1)。
根据法矢nP0、则过矢量点P0的切平面方程为:
由此可得矢量点Pj在平面上的投影坐标为:
完成邻域点集的坐标局部参数化后,便可以应用加权最小二乘原理对邻域点集进行曲面拟合。然后利用高斯-亚当消元法求得该问题的最佳参数估计a*,b*,c*。于是可
得邻域点集的逼近曲面为h(u,v)=a*u2+b*uv+c*v2。由此可推导出该点的逼近主曲率和主方向。
曲面在P0的主方向可由下式给出的方程解出,即:
对应的主方向为:
在获得各点的曲率后,取曲率极值点作为特征点的候选点。
3 边界点的提取
一条曲线上的边界点可分为阶跃边界(高度不连续)、褶皱边界(切矢不连续)和光滑边界(曲率不连续)。
取曲率极值点或零交叉点(对第一种边界线来讲)作为离散曲面的边界点。基本思想如下:
(1)先选取一候选边界点P, 在该点两边沿主方向m1取最近的两邻近点T1,T2,求它们沿m1方向上的曲率KT1,KT2。如果k1大于KT1、KT2则该点为最大曲率极值点。
(2)同理选定主方向m2,在P点两边沿主方向取邻近点T3、T4,求他们沿m2方向上的曲率KT3、KT4,如果k2小于KT3、KT4,则该点为最小曲率极值点。
(3)对所有候选点进行上述操作,就可得到所需的全部边界点。
在数据点的界点提取之后,可对界点进行组织,去除伪界点,采用邻边编码链表算法形成一个有序的实体边界轮廓图[4]。实际反求时,封闭边界的提取可分为两步进行。首先是单边界的提取;其次是对单边界按序追踪,形成封闭边界。该算法可进一步实现边界特征提取的自动程度。但在汽车覆盖件模具的逆向设计中,过渡曲面一般为光滑过渡,曲率变化不十分明显。用这种算法产生的边界轮廓并不能真正完成点云的较准确划分。因此,文中在特征点提取后,采用人机交互的方式,来生成封闭的边界轮廓特征。这样既避免了上面提到的单纯靠人机交互实现分片的缺点,又克服了单纯自动提出过程中对偏差不便调整的弊端。
4 实例和结论
该算法借鉴了文献中所提的方法,并进行了改进。文中所提算法不仅可用于规则数据点的特征点的提取,而且通过对散乱数据点的简化及三角网格化,可对其进行特征点的提取。本算法的优点是结构明晰,实现起来简单,相对单纯人机交互的方式,提高了精度,避免了大量尝试重构过程,相对自动算法提高了算法的灵活性。文中所提算法通过MFC和OpenGL 结合编程在上海大众汽车公司SAN2000前围模具设计中得到应用,取得了很好的效果,图2和图3为SAN2000前围模具采用此方法的实例 。首先采用德国GOM公司生产的ATOS(Advanced Topometric Sensor )非接触式结构光测量仪,取得模具的数据点。借助surfacer软件完成对数据的预处理。然后利用文中的算法计算各数据点的法矢和曲率估算,提取边界特征点,完成数据分片。当然该算法也有比较大的局限性,对光滑过渡特征还不能很好地获得其完整边界,需通过人工交互进行调整。这还有待于在今后的研究中发现更好的方法。
参考文献
[1]姜寿山.Peter Eberhard.多边形和多面体顶点法矢的数值估计.计算机辅助设计与图形学学报,2002,14(8):763-767.
[2]朱心雄.自由曲线曲面造型技术.上海:科学出版社.
[3]Milroy J,Bradley,Vickers G W. Segmentation of a wraparound model using an active contour.ComputerAided Design,1997,29(4):299-320.
[4]M.Yang,E.Lee. Segmentation of measured point data using a parametric quadric surface approximation.ComputerAided Design,1999,31:449-457.
[5]张丽艳.海量测量数据简化技术研究.计算机辅助设计与图形学学报,2001,11(13):1019-1023.