数控管切割机三维仿真加工若干问题的研究
2012-07-09任清川何赛松
任清川, 何赛松, 徐 雷
(四川大学制造科学与工程学院,四川 成都 610065)
数控管切割机现在已经大量应用在机械、建筑、石油、化工等领域,与传统的先放样板、再绘制相贯线切割的手工切割管材相比,它在加工精度、加工时间、生产效率以及自动化程度上已经取得了很大的进步。但数控管切割机结构复杂,操作困难,技术员需要有机床操作经验,才能设计出切割工艺[1]。如果都采用实际机床来练习操作,容易产生误操作,损坏机床,因此,在实际切割前进行三维动态加工仿真显得十分必要。
一般的数控管加工机床结构很复杂,如图1所示。而OpenGL作为常用的三维开发图形库却只能提供几种简单规则的3D物体模型,难于显示清楚管切割机床的复杂三维结构。因此,我们需要通过其他建模工具来辅助建立机床三维实体模型数据库[2]。3DS Max作为Autodesk公司开发的三维动画渲染和制作软件,在数控机床的仿真中能做出逼真的三维模型。为此,我们先在3Ds max中建立复杂的数控管切割机3D模型,然后在OpenGL中通过参数驱动导入该3D静态模型,模拟出整个管切割过程。
图1 数控管切割机示意图(实际机床坐标系)
本文首先对 3DS文件的数据组织形式做了简单分析,并研究了导入的静态3DS模型如何在参数驱动下进行相应的运动。相对于传统的根据碰撞检测技术再现相贯线形状的计算复杂和运算量大,提出了新的相贯线的计算方法,简化了计算过程,提高了计算效率,最终实现了五轴四联动管切割机的动态加工仿真。
1 3DS模型文件读入
3DS文件是基于"块"存储的,每个块均包含了一些信息,如顶点、纹理、材质等数据[3]。每个块都包含一个ID和下一个块的偏移量:块的高位是ID,是一个用前2个字节保存的整型数,作用是确定该块的含义;块的低位是块的偏移量,是一个用后4个字节保存的长整型数。所有的 3DS文件读取都是从有且只有的这一个主块开始,还包含有其他子块,存储了所有的 3DS模型数据。根据其特点,我们采用递归的方式来读取3DS文件。3DS文件的内部数据结构见参考文献[4]。
3DS文件是按嵌套的块结构进行存储的,因此可将其按块进行划分,把划分的块 ID定义成宏,包括基本块、主块、对象块、材质块、面块等[2],部分宏定义如下所示:
读取的方式是从模型文件中读取每一个块头,根据块 ID来判断块保存的信息,然后进行相应的处理。在块处理过程中,如果包含有子块,也是通过相同的方式,读取一个子块的块头,判断块信息,再进行相应的数据提取和存放处理。程序读入了每个对象块的顶点块、面块、纹理块等数据,然后将它们的信息保存到预先定义的数据结构中,把一个复杂的三维模型转化成了简单的点、面信息。OpenGL提供的处理函数可以很有效进行处理这些简单的点、面信息,在OpenGL创建的三维空间里,我们可以通过这些数据信息,将3D Studio Max中三维模型再现在自己的三维场景里[5]。
2 割炬轨迹的控制
2.1 OpenGL中机床模型的搭建
OpenGL搭建的机床模型,与实际机床之间在形状、尺寸等方面是完全统一的。而两者的坐标系在标示上有一定的差异。实际机床的Y轴与仿真坐标系的X轴是重合的;实际机床的Z1轴、Z2轴、θ轴均在仿真坐标系的XOY平面内,且Z1轴、Z2轴的方向与仿真坐标系中的Y轴方向是一致的;实际机床的γ轴是绕其Y轴旋转,而仿真坐标系的γ轴是绕其X轴旋转的。
3D Studio Max中建立的机床各个运动部件的静态三维模型,都是以各自的设计基准点分别设计的,在OpenGL中需要将他们按照实际的机床结构装配在一起,并且各个运动部件必须能根据运动参数的变换而进行相应的运动。此时需要对三维模型转化成的点、面信息进行数学运算处理才能实现整个机床的装配和运动,现在以典型的割炬为例,如图2所示。数控管切割机床割炬的运动控制,是整个数控系统的核心,通过控制割炬的沿X轴和Y轴平移,并且在XOY平面绕θ轴进行摆动,配合切割管自身的旋转运动,才可以切割出管件的相贯线和坡口。
图2 割炬切割示意图(OpenGL仿真坐标系)
割炬静态模型的设计基准点 A坐标为(0,0,0),组成割炬所有点的坐标,都是相对于这一点的,导入OpenGL时,需要注意OpenGL和3DS MAX坐标系统的不一致,需将导入的坐标数据绕X轴旋转90度,才能在OpenGL中正确显示。
2.2 割炬模型的参数驱动
设导入的3D静态割炬模型上任意一点的坐标值为(X,Y,Z),在加工位置时,设计基准点A坐标变为(ΔX,ΔY,ΔZ),割炬的实际切割角为α。这时,将导入的割炬的所有点的坐标先绕Z轴旋转α,即
再将(x',y',z')沿X轴方向偏移ΔX,沿Y轴方向偏移ΔY,沿 Z轴方向偏移ΔZ,将割炬全部的点坐标做同样的处理,即可使静态割炬模型移动和旋转到加工位置。
3 相贯线的改进算法
通过机床的仿真加工,我们可以清楚的了解整个切割过程,切割完成后显示出切割出的管件形状,可以直观地验证切割参数是否设定合理,计算数据是否正确等问题。在仿真加工中,相贯线的形成需要我们计算割炬与管件的碰撞点坐标,碰撞检测技术是在这方面较常用的技术。
3.1 传统的基于碰撞检测求相贯线的方法
目前常见的碰撞检测算法可分为3类:空间分解法、包围盒法和射线与三角面相交测试法,其中包围盒法较为常用[6]。传统的相贯线求法是采用“包围盒法”结合“射线与三角面相交测试法”,而主要的方法就是割炬的射线与管的圆柱面的相交测试,与通过检测出割炬与管的碰撞点,再将这些点平滑地连接起来,就得到切割出的相贯线,该算法描述如下:
2)该方法在相交测试计算前应首先判断割炬射线与管圆柱是否有碰撞相交,利用AABB包围盒法建立一个包围切割管的平行于坐标轴的最小六面体,在通过割炬的射线与6面的相交判断来测试割炬轴线与切割管是否有交点[8]。
3)判断有碰撞后,求出管件的内外壁方程,联立管件的内外壁方程与直线方程求解,可以导出计算结果。外壁方程为X0+L),内壁方程均为 Y2+ Z2= ( R - b )2(X0< X <X0+L),其中X0为圆柱管在X轴方向的起始位置,L为管件的长度,R为管外半径,b为管壁厚。但构成最后的相贯线需要大量的点坐标,我们采用割炬轴线方程绕X轴逐渐旋转,求出在不同位置的割炬轴线与管件内外壁的交点,得出构建相贯线所需要的点,由于空间中直线于圆柱管的交点可能有两个,需要对数据进行再分析,去掉与实际情况不相符的数据。最后就得到相贯线上的点坐标。
3.2 改进的相贯线的求解方法
利用射线与圆柱面相交的方法涉及到射线方向向量和面方程等的求解,同时需要大量碰撞检测的验证,从计算的复杂程度和难度都需要我们研究出一种简单易行的方法。所以我们根据实际情况,对传统的基于碰撞检测的技术做了改进,主要思路是把射线与圆柱面的相交向射线与母线的相交方向转移。该改进算法过程如下:
1)在计算前,需要调整涉及到后续运算的各个运动部件。在装配整个机床时,根据计算机图像学知识,使被切割管的轴线与OpenGL环境的X轴轴线重合,并且使切割管可以绕X轴做旋转运动(实现数控机床的 γ轴运动),割炬的切割点在 XOY平面内上下平移和左右平移(分别实现数控机床的Z1轴、Z2轴运动和Y轴运动),割炬围绕通过切割点并平行于 Z轴的直线摆动(实现数控机床的θ轴运动)。
2)我们同样需要求出在当前加工位置割炬的直线方程,如图3。假设机床在当前加工位置时,γ轴的值为γ0,Y轴的值为Y0,Z1轴的值Z10,Z2轴的值为Z20,实际切割角α的值为α0,割炬的值为G。因为割炬的轴线是在XOY平面内,所以设其方程为y = kx + b。其中直线的斜率k= tan( α +90),当 α 为 0时,直线的斜率k =∞;由当前机床加工位置,可以计算出割炬当前加工点 A的坐标的 x0= Y0,y0=R+G×cosα0,则 b = y0- kx0。
3)被切割管与割炬轴线的交点,必然在圆柱管内外壁在 XOY平面内的母线上,然后联立割炬轴线的直线方程与管件内外壁母线,就能求出了当前加工位置时割炬切割出的内外壁相贯线的点坐标。当机床的各轴运动到下一个加工位置时,同理也可求出割炬切割出的内外壁相贯线的点坐标,以此类推,即可求出所有切割点坐标(所有的切割点数等于细分点数)。
图3 改进的相贯线求解方法
4)由于在所有 γ角度求出的点均在 XOY平面,为了实现它的三维显示效果,需要把对应的γ角度的点通过三维旋转矩阵的运算来绕X轴旋转相应的γ角度,再将所有的点平滑地连接在一起,从而就得到了完整的两条内外壁相贯线。
3.3 两种方法的对比实验
为了验证新方法在实时性和效率方面的情况,我们做了一个对比实验来验证新相贯线的求解方法。表1是两种处理方法对几种典型模型的实际处理时间对比,可以看出,细分点数越大,新方法的改进效果就越明显。对于一般的细分点数(360),新方法的平均计算速度是原有方法的2倍至3倍,而对于较大的细分点数,计算速度提高的效果更加明显。
表1 两种方法的比较
4 加工管件的显示
我们通过计算出的内外相贯线数据建模(采用贴三角片的方法),可以对新模型的准确性进行很好的验证[9]。三维模型如图4所示。
图4 加工区域结果显示
5 结 论
为了满足数控管切割机床在实际生产加工中对三维仿真加工的需求,本文采用导入机床3Ds静态模型,并在OpenGL中对静态模型进行参数驱动的方法,实现了机床的三维仿真加工运动。同时相对于根据碰撞检测技术求解切割后管材的相贯线形状的方法,提出了改进算法,该算法通过了快速性、准确性等的实验验证,研究成果已用于五轴四联动数控管切割机的研制当中。
[1] 王国栋,阎祥安,肖聚亮,等. 管端相贯线坡口切割割炬位姿控制[J]. 天津大学学报,2005,38(8):684-688.
[2] 赵文广,李仲学,李翠平. 面向工程可视化仿真的VC++,OpenGL与3DS集成技术[J]. 北京科技大学学报,2001,23(6): 563-565.
[3] 尹士伟,张光年,郭新宇. 一种控制3DS模型的新方法的研究与实现[J]. 图像处理,2007,23(9):307-308.
[4] 胡平平,刘建明,王晶杰. OpenGL显示3DS模型若干问题的研究[J]. 工程图学学报,2010,31(4):189-193.
[5] 殷素峰,高雪强,杨胜强. 在 OpenGL环境下开发3DS文件浏览器[J]. 工程图学学报,2005,26(6):22-25.
[6] 袁丽娜,赵贵斌. 碰撞检测技术及在桥梁视景仿真中的应用[J]. 工程图学学报,2010,31(3): 21-26.
[7] [美]Samuel R B. 3D计算机图形学(OpenGL版)[M].唐龙等译. 北京: 清华大学出版社,2006: 239-248.
[8] 王晓荣,王 萌,李春贵. 基于 AABB 包围盒的碰撞检测算法的研究[J]. 计算机工程与科学,2010,32(4): 59-61.
[9] [美]Dave S,Mason W,Jackie N,et al. OpenGL 编程指南(第 5版)[M]. 徐 波等译. 北京: 机械工业出版社,2006: 13-16,266-296.