赵新华,段广仁,兰贺,孙尧
(1.哈尔滨工业大学航天学院,黑龙江哈尔滨150001;2.哈尔滨工程大学自动化学院,黑龙江哈尔滨150001)
目前,对于超空泡航行体控制问题的研究主要有2种方法[1-3]:射弹实验和数值模拟.这2种方法都存在一定的不足,数值模拟方法以理论研究为基础,根据计算得到超空泡航行体的各个状态参量,其研究结果多以仿真曲线或者统计数据的形式出现,相对抽象.而射弹实验的方法是通过样弹实体,在水洞或水池中进行射弹试验,该方法能够直观地观察控制效果及航行体运动形态,但是风险高、成本高、可重复性差.因此,完全依赖实验的手段获得超空泡航行体的动力学特性及控制规律是不现实的.开发一种既能数值计算控制结果又能将结果直观显示的虚拟现实系统仿真软件具有重要的意义.
本文采用虚拟现实技术开展了超空泡航行体控制效果的可视化仿真研究,并开发了相应的仿真软件平台.基于OpenGL的标准3-D图形接口,将在3Dmax中绘制的三维航行体模型,加载到OpenGL中;在超空泡航行体动力学模型的基础上,设计多种控制方案并编制了相应的控制模块.通过友好的用户界面,操作人员可以自主选择控制方案,更改控制参数,并绘制仿真曲线;利用虚拟现实技术对海洋、海底环境进行渲染,对航行体的航行姿态及空泡状态进行绘制,通过按键控制,实时观测航行体尾部与空泡位置的相对变化以及航行体尾部烟雾的变化等.
开发一个基于OpenGL的虚拟现实系统.系统中,将超空泡的数学模型及控制算法应用于控制对象,在计算机平台上重复模拟实验,检验并分析实验结果,协助完成控制方案的设计、验证及筛选.可以缩短研发周期,节省实验及研发经费.并对航行体的运行环境进行渲染,使视觉效果更加真实.这样的系统具有现场化、可视化、安全性、经济性、可控性及无破坏性等优点.
通过参考国内外大量超空泡控制问题的研究文献及基于OpenGL的虚拟现实仿真技术的文献资料,针对仿真平台的开发目的,该虚拟现实仿真系统应满足下面的需求:
1)友好的用户操作界面.
2)仿真平台提供视觉感良好、真实生动的水下环境,包括海底的显示、海面的显示及海洋环境的显示等,可供研究其他水下潜器之用,省去了渲染环境所耗费的时间.
3)超空泡航行体周围空泡的形成过程及最终的稳定形态应按照经过试验验证的公式进行仿真,而不是简单的动画效果.
4)为仿真平台中的超空泡航行体建立动力学模型,设计控制方案,在屏幕上观察控制效果,筛选正确的控制方案.在控制算法的选择处留有接口,以便添加其他控制算法,实现软件平台的可扩展性.
根据超空泡航行体的实际物理外观,在3Dmax中绘制三维模型,经MilkShape软件转换成可以加载到OpenGL中的Ms3d格式,并放入工程目录下.在屏幕上显示加载模型,并对其进行建模、控制方案的设计、周围环境的渲染及空泡的动态生成等操作,其基本组成框架如图1所示.
图1 系统组成Fig.1 Block diagramof the system
平台中超空泡航行体模型是实际模型的近似,由圆锥段和圆柱段组成.圆锥段的长度为Lcon,圆柱段的长度为Lcyl.圆柱段的长度为圆锥段长度的2倍,整个航行体的长度为L=Lcon+Lcyl,圆柱截面的半径为R,空化器的半径为Rn.
参考坐标系原点为空化器的压力中心,x轴沿着航行体的对称轴指向前方,w为航行体垂直速度,V为航前向速度,z轴与航行体平面垂直,俯仰角由θ表示,q为俯仰角速度.超空泡航行体的动力学模型为
式(1)中参数的含义详见参考文献[4].
利用空泡截面独立扩张原理,并根据国内外大量的实验数据得到未受扰动的空泡经验计算
公式[5]:
式中:RC为空泡中截面半径,σ =0.03,Cx0=0.82,x1=2Rn,L 是超空泡的长度,y是距离空化器x处的空泡半径.经MATLAB仿真,空泡形状如图2所示.可见,无扰动空泡形状为两端开口的对称椭圆.
图2 空泡外形仿真Fig.2 Simulation of the cavity shape
但在实际航行过程中,空化器攻角、航行体重力、空泡自身浮力等均对空泡形状产生影响,导致空泡变形.引入空泡轴向高度变量hf,描述攻角导致空泡形态变化,如图3所示.
图3 攻角引起的空泡外形变化Fig.3 Deformation of the cavity for angle of attack
应用摄动研究方法,得出hf为[6]
式中:Cy=2Fy/ρV2πR2n,Fy为作用在空化器上的升力[7],=2x/L.
当航行速度较低时,空泡轴线会在重力的作用下向上偏移,当航行速度较高时,可以忽略重力对空泡形态影响,计算出不对称空泡的上下边界:式中:yc1、yc2分别为非对称空泡的上、下边界,xc为重心位置,α为攻角,R(x)为空泡半径.空泡受到浮力作用,使中心线向上偏转,有经验公式如下:
式中:
式中:x为航行体中心线上的某点,Ok为x横截面处闭合的空泡容积,R(x)为空泡半径.
基于超空泡航行体的动力学模型,设计了6种控制方案,分别为状态反馈控制、反馈线性化控制、滑模控制、最优控制、突变控制及开环控制等.运用VC++编程显示二维动态控制效果.
操作人员通过用户友好界面,装订航行体结构参数,主要流体动力参数,选择控制方案,对控制器参数进行装订,最后动态观测航行体运动姿态,比较控制效果.软件的运行逻辑如图4所示.
程序运行时,先在屏幕上确定出航行体重心的位置,以其为基准,按照航行体各部分的比例关系,确定其头部、尾部、尾翼等位置,使用画图函数,画出航行体.解算航行体的运动方程及相应控制算法,并设定定时器,动态显示航行体的运动形态.
图4 软件逻辑数据流Fig.4 The software logic data stream
以状态反馈控制及滑模控制为例,对超空泡航行体的控制方案进行对比.状态反馈控制及滑模控制的仿真结果如图5及6所示.
从图中可以看出,超空泡航行体的航行状态在状态反馈控制方案下,响应较快、稳定时间长、状态响应较平稳.可见状态反馈控制的控制效果较好.与此类似,其余4种控制方案的控制效果也可以通过相同的方法比较得出.
图5 状态反馈控制效果的界面示意Fig.5 Diagramof interface for state feedback control
图6 滑模控制效果的界面示意Fig.6 Diagramof interface for slidemode control
根据超空泡航行体的实际物理外观,在3Dmax中绘制三维航行体模型,经MilkShape软件转换成可以加载到OpenGL中的Ms3d格式,并放入工程目录下.在屏幕上显示加载的模型,并对其进行运动建模及控制方案的实施、周围环境的渲染及空泡动态生成等操作,仿真系统的驱动过程如图7所示.
图7 系统仿真驱动过程Fig.7 Systemsimulation diagramof driving process
为展现超空泡航行体真实的运行场景,需要对海洋和海底环境进行渲染.由于该视景仿真系统,对海洋及海底的真实度要求不高,所以均采用纹理映射技术[8].先设置实现航行体飞越大面积海底环境的矩阵,然后对这些矩阵进行纹理贴图,纹理的选取应满足对视觉效果的要求.
此外,对海面波浪进行模拟,使视觉效果更加逼真.通过实现一个正弦波方式运动的图像,模拟海面波浪.
为使视觉效果更加逼真,在海底添加了障碍物.障碍物的绘制采用了OpenGL中二次曲面的绘制方法.通过绘制球体、三角柱、四角柱等几何体的组合体,实现对障碍物的绘制.绘制步骤如图8所示.该系统中,根据视点坐标及目标移动的规律设置障碍物的位置和大小.障碍物的数据在记事本文件中设置并读取.
图8 OpenGL中二次曲面的绘制步骤Fig.8 mapping steps of quadric surface in OpenGL
由于OpenGL中没有绘制三维模型的函数,如用OpenGL中的基本图元绘制,不仅实现困难,并且渲染时间长,模型真实度欠缺.所以,经常使用三维绘图软件绘制模型,加载到OpenGL中,再对其进行控制等一系列操作[9].
本系统中使用3Dmax软件绘制航行体模型,包括尾翼及空化器.绘制过程中,用到了多边形圆滑、材质贴图、布尔运算等功能.最后,将绘制好的模型保存为“.max”格式,为方便将它载入 OpenGL中,使用Ms3d软件将该文件转换为Ms3d格式.图8为3Dmax中航行体模型的实现.
图9 3Dmax中航行体模型的实现Fig.9 Vehiclemodel implementation in 3Dmax
在OpenGL中实现Ms3d模型的加载要经过读入文件和调用OpenGL图形库2个步骤.将Ms3d格式文件添加到OpenGL工程目录下,但是文件格式并不能成功加载一个模型,必须定义一个保存数据的结构,然后把数据读入这个结构.结构定义在model.h中,分别定义顶点结构、三角形结构、网格结构和材质属性.
超空泡航行体在水下运行时,当速度超过一定的范围,就会在周围产生空泡,根据式(2)及第2节给出的模型尺寸与其周围形成的空泡尺寸的比例,在屏幕上显示同样比例的航行体及其周围产生的空泡.在z=0平面上,以空化器上下边缘为基准,上下各取100个点,画出空泡的轮廓,再由这100个点绘制出三维空泡.如图10所示.
图10 空泡的绘制过程Fig.10 Diagramof drawing process of cavity
利用三角形拼接空泡的外形,即在OpenGL的函数glBegin(GL_TRIANGLES)及glEnd()之间加入glVertex3f()函数,函数参数为以坐标方式描述的三角形顶点数据.
采用OpenGL完成的超空泡的三维视景显示,超空泡的形成过程如图11所示.
图11 超空泡形成过程示意Fig.11 Diagramof the supercavity developing
航行体尾部烟雾的实现要借助于OpenGL粒子系统.粒子系统采用的设计思想是由大量的具有一定形状和大小、速度和运动方向、生命周期和属性的微小粒子作为基本元素,绘制各种不规则的模糊对象,如动态不规则的雨、雪、烟雾及火焰等自然场景[10-11].
实现航行体尾部烟雾效果时,首先需要定义粒子基本参量的数据结构,对粒子的初始属性进行初始的设置时会用到这些数据.包括粒子的位置坐标、生命周期、粒子运动速度的大小及方向等参数.仿真效果见图12所示.
图12 尾部烟雾的效果Fig.12 Effect chart of the tail smoke
超空泡航行体运动过程中俯仰角不断变化,为动态显示这一过程,应用OpenGL中的旋转函数gl-Rotatef().该函数的作用是将物体绕原点到点(x,y,z)的连线逆时针旋转angle角度,x,y,z值非零即1,为局部坐标系.由于航行体俯仰角的变化可以理解为航行体绕其前端的旋转过程,旋转的角度即为由动态方程解算出来的俯仰角.因此,直接应用该函数实现上述功能还不够,需要先将航行体平移,平移的坐标为航行体所绕行的位置处的坐标,然后进行旋转操作后,再将航行体平移至原来的位置.局部坐标系下,航行体的坐标原点已经设定在位置(aereo.x,aereo.y,aereo.z)处,由于这里需要将航行体绕行部位设置为航行体头部,头部位置处的屏幕坐标为(aereo.x-13,aereo.y,aereo.z),需要经过如下处理:
glTranslatef(aereo.x-13,aereo.y,aereo.z);
glRotatef(angle,0.0f,0.0f,1.0f);
glTranslatef(13,0.0,0.0);
此时,将已有的数据信息转换成代码,便可以解算出俯仰角数组,将其作为参数传入函数glRotatef().为对航行过程进行实时模拟,使用VC++时钟,时钟响应的时间间隔设置太大,会造成水下高速运行体的运行产生跳跃感.经过实验测试,本系统设置20 ms,可以真实反映出航行体的实时俯仰角变化情况及其与空泡的接触情况,如图13所示.
图13 航行体动态运行效果Fig.13 Effect chart of themoving vehicle
仿真系统中,通过键盘操作,实现了视角变换的功能.
程序中,添加WM_KEYDOWN消息响应函数,系统便可捕捉用户的键盘操作.然后通OpenGL中的视点变换函数gluLookAt()即可实现视角的变换功能.如图14所示,可以清晰的观察到航行体的尾部与空泡的接触情况,即滑行力的变化情况.
图14 仿真系统视角变换效果Fig.14 Effect chart of changing visual angle
本文在已有超空泡航行体动力学模型的基础上,设计控制方案,利用虚拟现实技术对控制效果进行三维视景仿真研究.完成了对超空泡航行体运行环境的视景仿真,包括海面波浪、海底环境、海底障碍物、三维航行体模型、空泡的形成过程、尾部烟雾的形成、控制效果的动态演示、视角变换等.对该软件平台的测试表明,可以完成超空泡航行体控制方案的选择与控制效果分析,空泡形态变化、航行体运动姿态变化三维视景仿真等任务.
本文建立的航行体物理模型为实际超空泡模型的简化模型,逼真程度较高.控制方案参数修改灵活,航行体动态效果模拟较准确,能够为科研人员在超空泡航行体控制问题的研究中,提供方便快捷的有效途径,获得直观、清晰的认识.
[1]SAVCHENKO Y N.Control of supercavitation flowand stability of supercavitatingmotion of bodies[C]//VKISpecial Course on Supercavitating Flows.Brussel,Belgium,2001:313-329.
[2]杨莉,张庆明.超空泡技术的应用现状和发展趋势[J].战术导弹技术,2006(5):6-10.YANG Li,ZHANG Qingming.Current application and perspectives on supercavitation technology research[J].Tactical Missile Technology,2006(5):6-10.
[3]曹伟,魏英杰,王聪,等.超空泡技术现状、问题与应用[J].力学进展,2006,36(4):571-579.CAOWei,WEI Yingjie,WANG Cong,et al.Current status,problems and applications of supercavitation technology[J].Advances in Mechanics,2006,36(4):571-579.
[4]DZIELSKIJ,KURDILA A J.A benchmark control problemfor supercavitating vehicles and an initial investigation of solutions[J].Journal of Vibration and Control,2003,6(9):791-804.
[5]ANUKUL G.Robust control of supercavitating vehicles in the presence of dynamic and uncertain cavity[D].Orlando:University of Florida,2005:79-86.
[6]马宏男.高速水下航行体半实物实时仿真系统研究[D].哈尔滨:哈尔滨工程大学,2010:53-60.MA Hongnan.Semi-physical real-time simulation systemresearch of super highspeed underwater vehicle[D].Harbin:Harbin Engineering University,2010:53-60.
[7]赵新华,孙尧,莫宏伟,等.水下超高速航行体纵向运动的控制方法研究[J].工程力学,2009,26(2):242-246.ZHAO Xinhua,SUN Yao,MO Hongwei,et al.Longitudinalmotion control of underwater high-speed vehicle[J].Engineering Mechanics,2009,26(2):242-246.
[8]宋志明,康凤举,阎晋屯,等.海洋环境视景仿真方法研究[J].计算机仿真,2004,21(6):131-134.SONG Zhiming,KANG Fengju,YAN Jintun,et al.Research on themethods of ocean scene simulation[J].Computer Simulation,2004,21(6):131-134.
[9]殷明均,郑一露.基于MilkShape 3D的建模设计应用[J].电脑知识与技术,2009,5(17):4543-4546.YINMingjun,ZHENGYilu.Modeling and realization of threedimensional object based on MilkShape 3D[J].Computer Knowledge and Technology,2009,5(17):4543-4546.
[10]徐利明,姜昱明.基于粒子系统与OpenGL的实时雨雪模拟[J].计算机仿真,2005,22(7):242-245.XU Liming,JIANG Yuming.Realtime simulation of rain and snowbased on particle systemand OpenGL[J].Computer Simulation,2005,22(7):242-245.
[11]胡春,田金文,明德烈.多机协同的分布式海上攻防视景仿真[J].华中科技大学学报:自然科学版,2008,36(2):62-66.HU Chun,TIAN Jinwen,MING Delie.Collaborative distributed ocean attack-defense scene simulation[J].Journal of Huazhong University of Science and Technology:Nature Science Edition,2008,36(2):62-66.