胡 琼,张贵萍,吕 彤
(中南大学 机电工程学院,湖南 长沙410083)
随着世界经济飞速发展,资源紧缺的问题日益明显,探索深海及其蕴育着的丰富资源是当下的发展方向之一[1-3]。关于勘探和开采海洋矿产资源,世界各国的研究和探索都在不断深入和推进。由于深海作业环境为高压、强扰动、无自然光的恶劣环境[4],兼之因海底集矿机行走而搅起的稀软底质使得集矿机周围环境浑浊难以观察。为了更便捷、直观地监测海底集矿机的作业状况,本文基于Visual C ++和视景仿真工具Vega Prime 对深海采矿系统进行可视化仿真。
常见的深海采矿系统主要包括集矿机、输送软管、中间舱、扬矿硬管和采矿船5 个部分[5],如图l 所示。深海集矿机在稀软底质上按照特定的轨迹行走,并从海底沉积物中采集金属矿物结核,处理后将其通过输送软管输送到中间舱,然后通过提升泵将结核经由扬矿硬管输送至海面采矿船,完成深海矿物开采工作。
图1 深海采矿系统示意
试验时,采矿船将深海采矿系统的设备运载至试验区,然后将采矿设备沉入海底并开始作业[6]。由于集矿机作业时周围黑暗浑浊,难以直接观察其行走的位置和状态。因此,如果能对深海集矿机的行走过程进行可视化仿真,实时监测集矿机的行走位置,就可以确保出现意外状况时能及时采取相应的措施,保障采矿作业顺利完成。本文针对集矿机行走过程中不能直接观察这一问题,采用Visual C++2008 和Vega Prime来实现集矿机行走过程的可视化仿真。
要实现集矿机行走过程的可视化,需要做到如下几个方面:
1)用Creator 构建虚拟场景。包括地形生成、采矿系统模型创建以及水下环境的渲染。
2)在Vega Prime 中驱动虚拟场景。通过LynX 图形界面配置相关参数,加载三维模型实现整个虚拟场景的渲染及显示。
3)通过基于MFC 框架的Vega Prime 程序实时显示集矿机的位置。在程序运行时,固定加载含有实时数据的文件,传至驱动控制模块实时显示集矿机模型的运动路径。
4)集矿机行走轨迹绘制。在Vega Prime 主线程开启后,同时开启了DRAW 线程,在该线程中,使用OpenGL 绘制集矿机的运动路线图。
本文所构建的虚拟场景主要基于海底,将不可见的深海环境以及在其中工作的采矿系统显示在用户界面。构建虚拟场景可分为以下3 个部分:①真实地形生成与显示;②采矿系统的三维实体建模;③水下自然环境的模拟。
地形生成[7]是视景仿真系统开发中基础但却必不可少的一步。三维地形建模包含高程信息的数据文件与真实的地形照片,对前者进行网格化处理和内插计算,生成虚拟三维地形;对后者进行计算机图像处理,然后作为地貌纹理贴在虚拟三维地形曲面上,使得生成的模拟地形具有逼真性。对于大规模地形的模拟,常采用LOD(Level of Details)技术,根据视点和模型的距离来改变模型的细致程度。当视点距离模型较近时,模型细节更多,相对地真实感更好;当视点距离模型较远,则简化模型,在不影响实际效果的同时节约计算资源,提高运行效率。虚拟三维地形建模的详细流程如图2 所示。
图2 地形生成流程
Terra Vista 地形建模软件[8]在不影响三维地形逼真度的基础上提高地形建模速度方面具有强大的优势。采用Terra Vista 生成地形需要获取地形DEM(数字高程模型)数据、遥感影像数据以及文化特征数据等源数据,并转换为Terra Vista 支持的格式。其中,DEM 数据通过地形转换算法生成三维地形的三角网模型,如图3 所示。
图3 海底地形三角网模型
然后获取带有地理位置信息的遥感影像数据,映射生成较为形象的三维地形模型,如图4 所示。
图4 虚拟三维地形模型
使用Vega prime 软件进行视景仿真,首先要建立采矿系统的三维实体模型。作为专门应用于实时视景仿真领域的三维建模软件,Multigen Creator[9]功能强大、操作便捷,且能有效解决视景仿真中真实感、准确性与实时性的问题。针对实时视景仿真的特殊要求,Creator 独创的一种数据格式Open Flight 应运而生,该数据格式能够以足够的精度和效率对三维模型进行实时渲染,并生成所需要的实时三维数据库[10]。
本文按照模型与实物1 ∶1的比例,将SolidWorks中建立的三维模型导入Creator。在模型建立中使用Creator 的节点式分层结构对集矿机履带贴图,使集矿机的模型更为逼真。其中,集矿机的建模流程及添加特征纹理后的模型如图5 和图6 所示。
图5 建模流程
图6 集矿机模型
虚拟环境中自然环境的模拟仿真包括天空、大气、光照等等,这些可以通过LynX Prime 图形界面进行相应的参数设置来满足试验需要的环境特征。由于本文研究的是海底环境的试验,还需要对海洋水下环境进行模拟仿真。海洋环境的模拟又分为海面环境和海底环境。
采用Vega Prime 的海洋模块,调节参数生成如图7 所示的海面环境。
图7 海面环境的仿真效果
采矿系统在海底工作,需要为海底环境建模。海底环境的建模较为特殊,需要运用Vega Prime 中的特效模块进行设置调节环境亮度和透明度,再利用雾化功能模块在此区域范围内添加适当的蓝色雾,模拟水下的浑浊,效果如图8 所示。
图8 海底环境的特效处理
使用Vega Prime 软件开发视景仿真项目,有多种开发模式:一是运用LynX Prime 图形界面直接配置场景,用于开发一些小型、互动性不高的项目;二是运用Vega Prime 的API 函数开发一些较为复杂、交互性较高的项目。本文在开发过程中结合了两种模式,先通过LynX Prime 图形界面配置ACF(由LynX Prime界面创建的文件的扩展名)文件,再以Microsoft Visual Studio 作为集成开发环境,使用C++编程,调用Vega Prime 的接口函数驱动场景,既可以减少源代码的编写,又可以在一些交互性较高的场景中实现复杂的功能[11]。
用VC 来开发Vega Prime 视景仿真系统,常采用多线程应用程序编程[12]。 线程可分为UI(User Interface)线程和工作线程[13],其中,UI 线程具有消息循环功能,用来响应用户事件。而工作线程里通常加入Vega Prime 的主线程,来负责运行Vega Prime 的整个程序流程,流程图如图9 所示。
图9 Vega Prime 仿真程序流程
每个部分的功能如下:
1)初始化(initialize),主要对Vega Prime 的各个模块进行初始化,主要包括渲染库、场景图、模块接口等。
2)定义(define),典型的VP 应用框架通过vpApp类来定义,该类内嵌了定义ACF 文件、配置仿真类、仿真主循环、更新以及退出程序。一般来说,用户可以从vpApp 类来创建自己所需要的类。
3)配置(configure),在定义阶段设置的值需要在该步骤中进行配置,比如多线程模式、线程的优先级等。
4)运行(run),帧循环在该函数中运行,并且持续调用begin Frame()和end Frame()函数来实现仿真循环。
5)更新(update),通过在仿真循环中执行update()函数,并且调用vpApp 对象来实现更新。
6)关闭(shut down),用于清除并退出Vega Prime系统,调用各个模块的关闭函数来清除申请的内存空间,终止线程。
以上Vega Prime 的整个工作流程,对应着Vega Prime 的最小结构框架,配合ACF 文件配置可以实现在深海采矿虚拟场景中漫游。
深海采矿试验时,集矿机在海底行走,其位置和姿态一直处于实时变化的状态。在Vega Prime 的可视化场景中实现集矿机的运动,有两种方式,一是LynX Prime 图形界面的路径工具Path Tool,采用这种方式定义集矿机的运动路径,操作灵活便捷,但必须预先定义运动路径,不能满足深海采矿过程中获取实时变化的集矿机位置和姿态的需求。因此本文采用第二种方式,利用Vega Prime 提供的API 函数,读取传感器采集到的相关数据,实时控制集矿机在虚拟场景中的位置和姿态。
很多三维图形应用程序,包括本文应用的Vega Prime 软件的底层接口均是基于OpenGL。OpenGL 本质上是一种三维图形系统与硬件的接口。因此本文应用OpenGL 来绘制集矿机的运动轨迹图。
Vega Prime 中OpenGL 的绘图实现是基于事件订阅公布的机制,核心是系统回调函数。Vega Prime 中是采用事件触发方式,一个事件的回调函数会在事件触发时被自动执行[14]。在Vega Prime 的场景实时渲染中,首先在帧循环中定义一个窗口,然后在该窗口中绘制图像[15]。
本文在使用OpenGL 实现集矿机运动轨迹的实时绘制过程中,由于Vega Prime 调用OpenGL 函数都是在通道中进行的,而通道中帧循环每帧都在重画。所以对于集矿机行走过的所有点,需要将其存储在一个链表中,每一帧都将存储的所有点重新绘制。最后绘制的效果图如图10 所示。
图10 集矿机行走轨迹
深海采矿系统本身复杂而庞大,对未知的海底进行资源勘探和开采往往都充满了不确定性,本文设计的视景仿真系统是海上试验监控系统的一部分,采矿时,集矿机、软管的浮力装置以及各个连接处放置传感器,将传感器采集的参数传输至海面工作站,再通过本文设计和实现的视景仿真系统对其进行三维可视化处理,为深海采矿整体系统的工作提供科学、实时、逼真的显示,帮助海面工作人员分析、判断深海采矿作业系统的工作现状以作出准确的决策。
应用Vega Prime 和MultiGen Creator 视景仿真软件,建立了包括采矿系统、海洋环境以及地形在内的虚拟场景。基于MFC 框架的Vega Prime 应用程序实现了对深海集矿机的行走可视化仿真,实时读取外部的位置数据控制集矿机的行走路径,逼真、精确地显示了集矿机在海底的实时位置和姿态。并将OpenGL 图形库应用于Vega Prime 开发平台,在程序运行过程中实时绘制集矿机的行走轨迹图,直观地监测深海集矿机的行走路径,为采矿系统的水面操控提供更加科学而直观的指导。