董玉德 吴文哲 陈 健 吴海江 邹文俊
1.合肥工业大学机械工程学院,合肥,2300092.上海翼锐汽车科技有限公司,上海,201805
随着汽车行业的发展,传统的设计方式逐渐被淘汰,可制造分析作为一种并行工程方法[1]应运而生。可制造分析是指在汽车部件的设计阶段,从设计人员的角度出发,找出产品设计缺陷并解决问题,主要是确定产品设计在结构工艺和加工工艺中的可行性。焊枪头空间间隙的检查是并行工程的一项重要内容。
空间间隙检查的研究核心是特征识别以及距离计算。许多学者对复杂物体的信息提取以及距离计算算法进行了研究。在特征识别和信息提取方面,许加陈等[2]研究了一种基于IGES的钣金零件特征识别方法,该方法着重解决钣金件零件特征的识别;GHADAI等[3]提出了一种提取三维模型中的局部特征用于钻孔可制造性分析的方法,着重解决局部特征的识别;徐同明等[4]研究了如何在CATIA模型中提取B-Rep(boundary representation)信息,该研究主要应用于面向三维机加工的工艺规划系统;马善坤等[5]研究了模型B-Rep信息在特征加工中的应用;顾翠等[6]基于宇航航空产品复杂结构的可制造性分析系统对特征信息进行提取和分类;滕汝英等[7]利用CATIA的二次开发技术CAA(component application architecture)成功识别了航空结构件的特征信息。李巧敏等[8]提出了对汽车覆盖件大规模后处理虚拟显示技术,设计了一套可以快速显示和动态查询应力、应变、厚度等模拟结果的系统。在干涉距离检查方面,韦文龙等[9]在SolidWorks平台进行了动态干涉检查系统的设计;QUINLAN[10]利用层次球包围盒表示空间物体,通过计算叶节点球包围盒之间的距离来获取两个物体的干涉接触点;TESCHNER 等[11]在碰撞检测算法中采用四面体网格模型表示空间物体,当一个四面体中任何一个顶点在另一个四面体中时,表示两个四面体存在干涉。
汽车车身通常由众多钣金件组成,大部分钣金件通过焊接固定,钣金件的焊接质量直接影响车身的整体制造质量[12]。在焊接时若焊枪头与周围钣金件的空间间隙过小,会导致焊点错位,降低焊接的质量,因此在模型设计时需要将位置设计不合理的焊点检测出来并修改。
为解决对空间间隙进行检查时人工操作复杂、效率低下、结果不准确等问题,本文提出了一种基于CATIA二次开发的焊枪头与钣金件空间间隙自动检查方法。
在进行焊枪头空间间隙的自动检查时,需要确定干涉分析的目标对象。本文将焊枪头空间间隙的干涉分析分为三种情况:①对钣金件而言,分析的目标对象为焊点周围可能与焊枪头发生干涉的钣金件的拓扑面(图1a);②对焊点周围的孔来说,分析的目标对象为孔在焊点方向上的拓扑线(图1b);③若焊点周围具有螺母等特征,那么目标对象即是螺母特征中最有可能与焊枪头发生接触的拓扑对象(图1c)。
(a)焊点周围的钣金件
(b)焊点周围的孔
(c)焊点周围具有螺母特征图1 焊枪头空间间隙检查Fig.1 Welding gun head clearance inspection
焊枪头空间间隙的分析过程如图2所示,包括三个步骤:
图2 方案结构框架Fig.2 Programme architecture framework
(1)利用焊点的特征识别算法识别出三维模型中的焊点特征,定位检查区域。
(2)将模型中的钣金件拓扑分解为二维面基本单元,根据拓扑面与焊点的距离分析确定可能会发生干涉的危险平面。
(3)将危险平面与虚拟焊枪头进行安全距离检查,对距离不满足安全阈值的焊点进行标注,使设计人员能够直观地在三维模型中看到不合格的区域。
焊枪空间间隙干涉只会发生在焊接处,因此可以通过模型中的焊点特征来定位可能发生问题的区域,缩小检查范围。
识别三维模型中所有的焊点特征,需要对CATIA模型进行拆解和计算,下面简单介绍装配体产品在CATIA中的结构形式。
CATIA中的装配体文档管理采用多层级结构。图3是以汽车车门为例的装配体树状结构示意图。图中结构树的根节点为装配体总成,是文件的入口节点,每一层的元素既可以是单个零件也可以是装配体产品,从而组成了一种类似于多叉树的结构,而每一个节点又可以理解为一个单独的子多叉树,多层结合起来就形成了一个装配体产品。
图3 装配体文档结构Fig.3 Assemblies file structure
本文对三维模型进行拆解,获取所有最后一级的装配体,从其包含的零件中分解出待检查的实体要素。不同汽车模型采用的焊点造型方法不尽相同,难以根据特征属性直接判别,这给焊点识别算法的设计带来困难。但是另一方面,无论采用何种造型方法,焊点在外形上总是表现为一个球形实体。因此,综合装配体的文档结构和不同造型方法等因素,本文提出的焊点特征识别算法包含以下三种思路:
(1)命名规则判断。在规范的三维模型中,特征通常具有统一的命名规则,例如在图4中,模型中的焊点被统一命名为“Spotwelds”,用户指定当前模型中焊点特征的名称后程序就可以通过检索特征树中对应名称来识别焊点。这种方法速度快、准确度高,但是很多企业的三维模型中焊点并没有统一的命名规则,因此这种方法具有一定的局限性。
图4 具有特定名称的焊点Fig.4 Welding spots with specific names
(2)特征类型判断。从造型方法角度也能够对焊点特征进行识别。造型规范的车身三维模型中,焊点特征应以GSMSphere造型方法生成。在这种情况下,可以在特征树中进行检索,筛选出此种类型的特征,并根据体积大小进一步筛选,最终识别焊点。但事实上三维模型造型不规范的情况普遍存在,因此这种方法识别的准确度较低,识别结果容易发生误判和漏判。
(3)几何参数判断。通过对模型特征进行拓扑分解,先利用CAA的函数接口获取特征的体积和表面积,再利用数学计算的方法获取该特征的体积和表面积,将两种方法获取到的数据进行对比从而识别焊点。此方法虽然更为复杂,但局限性小,通用性强,识别的准确度高,因此本文采用这种方法来识别焊点。分析流程如图5所示。
图5 焊点识别流程Fig.5 Welding spots identification process
2.2.1获取实体特征
焊点的识别过程即是模型中球形特征的识别过程,因此首先要将三维模型分解为实体特征。分解过程如下:
(1)利用CATIProduct接口中的GetAllChildren()方法获取装配体特征树中所有装配体节点列表,通过对列表中装配体子节点个数的判断,筛选出最底层的装配体列表。
(2)最底层装配体中包含了指向聚合在这个装配体中的零件链接信息,实体特征包含于零件文档中。借助CATILinableObject接口能够从链接中检索真正的零件文档。
(3)零件文档包含了CATIProdCont、CATPrtCont、CGMGeom、CATMFBRP四个容器。其中,结构容器CATIPrtCont包含了零件的详细特征,因此要获取零件的实体特征,只需要获取该容器即可。从结构容器中通过GetPart()方法获取零件对象pMyPart。
(4)零件对象pMyPart中包含具体的实体特征,使用CATIPartRequest接口提供的GetAllBodies()方法能够将零件中包含的所有3D视图提取出来。
2.2.2获取焊点特征
获得零件的所有实体特征即获得了待分析的实体要素,之后用焊点算法进行识别:
(1)焊点球形特征的直径一般小于10 mm,用一个600 mm3的体积阈值将体积过大的特征直接排除,进行第一次筛选;
(2)利用CATIMeasurableInContext接口提供的方法获取特征的体积oVolume、表面积oSurfaceArea、重心点oCofGPoint三个数据信息;
(3)将实体特征拓扑为零维点特征,利用下式计算出拓扑点TheVertex与特征重心点oCofGPoint的距离:
若特征为球形,则其零维拓扑结果为分布于球形特征的表面上的多个拓扑点,那么它们与其重心点oCofGPoint的距离应该大于0且都相等。以此为依据进行第二次筛选;
(4)经过步骤(3)的筛选之后仍不能断定特征为球体,例如长方体的拓扑点与重心点的距离均相同。利用下式计算以拓扑点与特征重心点的距离r为半径的球体的体积V和表面积S:
S=4πr2
(5)若V和S与CAA内置接口获取的体积oVolume和表面积oSurfaceArea分别相等,则认为该特征为球体特征,也就是焊点特征。
上文已经获取了模型中所有的焊点特征,接下来就要提取焊点所焊接的钣金件上可能与焊枪头发生干涉的危险平面。在CATIA中,装配体是通过将子装配体与零件进行链接组成的,因此子装配体之间的坐标系不统一。若焊点与钣金件处于不同的装配体中,则在计算距离时需要进行坐标系的转换。
利用下式将焊点坐标系转换至钣金件的坐标系中:
(Xabs,Yabs,Zabs)T=A(X,Y,Z)T+(u1,u2,u3)T
并在对应位置生成焊点的实体,以此实体筛选目标面。其中,A为焊点的旋转变换矩阵;(X,Y,Z)T为焊点球心在原始坐标系下的坐标值;(u1,u2,u3)T为坐标的平移量。
在对每一个焊点进行焊枪空间间隙检查时,要在焊点上方、与焊接平面垂直方向上生成一个虚拟的半球形焊枪头,如图6所示。焊枪头的半径可由用户自定义。
图6 焊枪头空间间隙分析示意图Fig.6 Analysis diagram of space gap of welding gun head
目标钣金件的筛选较焊点更为复杂,因为钣金件的形状不固定,无法通过特征识别获取,而钣金件在数模中往往也不具有特定的名称,也无法通过名称去识别。
此时应注意到,利用包围盒相交检测配合距离计算,能够先获取到可能与焊枪头发生干涉的钣金件。模型的包围盒可由CATBody接口的GetBoundingBox()方法获取,每一个特征实体都可生成一个包围盒。若该层次的装配体由多个零件或多个特征实体组成,则需要将多个子包围盒添加到范围更大的父包围盒中。包围盒示意图见图7,提取的流程如图8所示。
图7 零件包围盒示意图Fig.7 Schematic diagram of part enclosures
图8 零件及装配体包围盒提取流程Fig.8 Part and assembly enclosures extraction process
可能与焊枪头发生干涉的钣金件包围盒应当与焊枪头大小加安全阈值所生成的包围盒相交。模型中的焊点部分焊接两层钣金件,也有的焊接三层钣金件。无论焊点焊接的钣金件层数,利用包围盒相交检测方法都能够获得所有焊接的钣金件。这些钣金件并非都可能与焊枪头发生干涉,若在后续的计算中再进行筛选,将大大拖慢程序的运行速度,因此先对焊接的钣金件进行二维面分解获得二维拓扑面,从面集中定位可能与焊枪头发生干涉的目标面再进行计算。
危险平面是位于焊接平面上侧且与焊枪头距离小于安全阈值的面。由上文可知,焊点焊接的钣金件可拓扑分解为多个面,这些面不一定都与焊枪头发生干涉。比如,焊接平面为钣金件最外侧与焊枪头接触的面,它必定会与焊枪头接触,但不属于空间间隙发生干涉的面,因此,需要在钣金件拓扑出的所有面中提取危险平面。
危险平面的提取分为面包围盒检测、焊点相交检测、投影偏移点位置检测三个步骤:
(1)面包围盒检测是对钣金件的拓扑面生成包围盒,并将焊枪头虚拟圆球的球心坐标Pi(Xi,Yi,Zi)转换到钣金件的坐标系中得到对应坐标Pc(Xc,Yc,Zc)。以Pc为球心,r+na为半径生成包围盒,其中r为焊枪头虚拟圆球的半径,na为距离安全阈值。对两个包围盒进行相交检测,得到所有发生干涉的拓扑面。
(2)焊点相交检测是为了排除两层焊接平面之间的面。将焊点重心点Ph(Xh,Yh,Zh)转入钣金件局部坐标系中得到对应坐标Pw(Xw,Yw,Zw)。以Pw为球心,焊点半径rw为半径生成对应实体。将实体的包围盒与步骤(1)中检测出的发生干涉的拓扑面的包围盒进行相交检测以及距离检测。若面与焊点接触,则说明是两层焊接平面之间的面,不属于危险平面,如图9所示。
图9 钣金件的焊接平面Fig.9 Welding plane of sheet metal parts
(3)投影偏移点位置检测是针对满足前两个过程的面Q,判断其相对于焊枪头是内侧面还是外侧面,如图9所示。获取焊枪头球心Pc(Xc,Yc,Zc)在面Q上的投影点Po(Xo,Yo,Zo)。n(a,b,c)为面Q的法向量,SQ(XQ,YQ,ZQ)为平面Q内一点,则有以下几何关系:PcPo∥n,SQPo⊥n。由点SQ(XQ,YQ,ZQ)以及法向量n确定的平面Q的数学方程为
ax+by+cz=aXQ+bYQ+cZQ
式中,(x,y,z)为平面Q中任意一点的坐标。
直线PcPo的参数方程为
由于直线PcPo平行于法向量n,可得方程:
其中,t为未知参数。由上述公式解得
(1)
可见确定投影坐标即是确定参数t的值,由SQPo⊥n可得方程:
a(Xo-XQ)+b(Yo-YQ)+c(Zo-ZQ)=0
(2)
联立式(1)和式(2)解得
将t的值代入式(1)即可得到投影点Po的坐标。将点Po沿PoPc方向偏移0.5h得到外偏点Poc,其中h为钣金件的厚度。计算外偏点Poc到钣金件的距离可知其在钣金件内部还是外部,如果在钣金件外部,说明面Q是钣金件相对于焊枪头的外侧面,不是目标面;如果在内部,说明面Q是最终得到的目标面。
3.4.1孔特征的干涉分析
首先要获取钣金件中的孔特征,将钣金件进行拓扑,通过对边线特征和面特征的分析,以及向量判断的方法提取孔特征[13]。
如图10所示,如果孔与焊点的距离过小,则在焊接时无法保证焊接区域边界的封闭性,导致焊接强度大幅度降低,并且焊接区域侵占了孔的空间。因此,在模型设计时应当保证孔与焊点中心有一定的安全距离。
图10 焊枪头与焊点周围孔的干涉Fig.10 Interference of the welding gun head with the hole around the weld joint
孔与焊枪头的间隙计算较为简单,利用式(1)计算出焊枪头在焊接平面上的投影点后,计算该投影点与孔中心的距离即可。如果距离小于安全阈值,则为危险孔。
3.4.2螺母特征的干涉分析
以下主要针对四角螺母和六角螺母进行干涉分析。螺母的特征识别步骤如下。
(1)得到特征实体后,与焊点识别算法类似,用CATDynMassProperties3D 接口的 GetVolume()方法计算拓扑体的体积,排除体积较大的特征。
(2)螺母特征一定包含孔特征,检查特征体中是否有孔,若有,则获取孔的中心线,若没有,则排除。
(3)以孔的中心线为法线作平面S,将特征体向面S投影,投影形状应当为方形或六边形。若不满足条件,则该特征排除。
(4)遍历特征体的拓扑面,若法向量与孔中心线垂直的平面的个数为4或6,则确定该特征为焊接螺母。
如图11所示,当焊点周围的螺母与焊点距离过小时,会导致螺母被焊死无法运动、焊枪运动行程不足等问题,从而降低了焊接强度,甚至无法焊接。本文将焊点周围的螺母抽象为其外接圆,从而得到螺母的外接圆柱。利用式(1)得到焊枪中心点Pc在焊接平面上的投影点Pd,连接Pc和Pd得到直线lcd。计算直线lcd与螺母外接圆柱的中心线lnu之间的最小距离Dm,利用下式计算出间隙值Dv并检查是否满足安全阈值:
Dv=Dm-r-Rnu
式中,r为焊枪头虚拟圆球的半径;Rnu为螺母外接圆柱的半径。
图11 焊枪头与焊点周围螺母特征的干涉Fig.11 Interference of the welding gun head with the nut features around the weld joint
确定了距离分析对应的目标面以及焊枪头虚拟球心在目标面上的投影点之后,可计算出两点间的距离D。若D>r+na,说明目标面与焊枪头无干涉风险,反之焊枪头与危险面的距离较小,可能导致焊接强度降低。
为验证本文提出的焊枪头空间间隙自动检查方法的可行性与准确性,以CAA为开发工具、以VisualStudio2012为开发平台对CATIA进行二次开发[14]。首先选定需要进行分析的装配体,然后输入焊枪头的尺寸以及焊枪头与周围钣金件发生干涉的最小安全距离,即可对零件进行检查。图12所示为模型进行分析的前后对比,图13为问题点的局部放大图。命令的运行时间、运行结果、是否遗漏如表1所示,可见本次开发的命令能够在有效时间内准确地对三维模型进行焊枪头空间间隙分析。
(a)模型分析前
(b)模型分析后图12 模型分析前后对比Fig.12 Before and after model analysis
(a)局部放大图1 (b)局部放大图2图13 局部放大图Fig.13 Partial enlarged drawing
表1 命令运行结果分析Tab.1 Command run result analysis
(1)对装配体文档结构进行分析,通过几何参数判断实现了可以适用不同造型方法的焊点特征识别算法。
(2)运用包围盒技术获取焊点所焊接的钣金件特征,并进一步将钣金件拓扑成二维平面,利用焊点相交检测、投影偏移点等算法获取与虚拟焊枪头发生干涉的危险平面。
(3)识别焊点周围的孔和螺母特征,同样利用投影技术计算它们与焊枪之间的距离。最终形成包含钣金件、孔、螺母等多种要素的焊枪空间间隙自动检查系统。