商 蕾, 王 冰, 杨志勇, 何业兰
(1. 武汉理工大学 a. 能源与动力工程学院; b. 武汉理工大学 计算机科学与技术学院, 武汉 430063;2. 国家水运安全工程技术研究中心, 武汉 430063)
船舶辅机是船舶轮机系统的重要组成部分,船舶辅机复杂多样,不仅理论知识的学习具有一定的难度,拆装更是需要花费较多的时间和精力。目前,“船舶辅机拆装”课程是航海类院校的必修课,也是海事局规定的船员适任证书的评估科目。在传统的教学过程中,对于辅机设备的实操训练集中在拆装实验室。在学生基数大及实验设备少的现状下,学生很难获得足够的训练时间,实际动手能力亟待提高。
本文运用增强现实技术,开发一套基于HoloLens的船舶辅机拆装系统,除了为学生提供不限时长、高沉浸感及轻便的交互式虚拟拆装训练场景外,还为他们创建一个虚实结合和多人协同的操作训练环境。本文从系统框架功能设计、模型搭建优化、人机交互和多人协同等方面详细阐述。
基于HoloLens增强现实技术,船舶辅机拆装系统在使用过程中,不需要电脑、冗杂的数据线、手柄和鼠标等外围设备,用户只需佩戴HoloLens眼镜结合手势就可实现所有的操作。用户进入系统后,先选择辅机设备,再选择学习模式和训练模式进行试验学习[1]。
1) 学习模式利用三维仿真等手段,展示各个船舶辅机设备的工作原理及拆装结构。
2) 训练模式则会模拟真实的拆装环境,根据用户选择的辅机设备加载对应的虚拟模型和工具,用户可进行拆装练习。系统会自动检测用户的每一步操作,判断操作的正确性,当出现操作错误时,系统会根据要求提示正确操作的流程,系统功能见图1。
基于HoloLens增强现实技术的船舶辅机拆装系统技术框架见图2,其中增强现实平台是系统的核心。系统通过HoloLens采集真实环境中的信息和多个用户交互信息后,进行同步空间扫描定位,将交互信息与数据库信息进行匹配,然后通过多人协同在多个HoloLens设备上进行增强现实显示[2]。
模型搭建是系统开发的必要环节,是组成数据库的重要内容,也是实现虚拟拆装的基石,采用3ds Max三维建模软件进行模型搭建。由于本系统虚拟拆装是在HoloLens增强现实环境下进行的,考虑到实际虚拟拆装过程中要进行模型移动和旋转等操作,所以搭建的三维模型不仅要在外形上追求真实,还要尽可能地减少其内部面数和优化其结构。这样才不会使HoloLens的内存和GPU由于模型太复杂而过度消耗,影响人机交互的实时性和系统运行的稳定性。
本系统在模型搭建方面主要研究并解决模型表面纹理及材质的优化和拆装过程建模2个主要问题。
系统中船舶辅机虚拟模型是按照真实环境下的辅机设备尺寸及比例搭建的。由于船舶辅机设备的数量和种类繁多,设备表面也复杂多样,为使辅机模型表面材质和纹理都要尽可能地还原真实船舶辅机设备。本系统在给模型添加材质时采用UV展开操作的方式,将虚拟模型表面展开成一个完整平面,根据虚拟模型表面的形状纹理对平面进行绘制。采用这种方法可通过一张带有纹理的UV贴图就能呈现出整个船舶辅机虚拟模型表面的纹理效果;同时,有些设备表面有一些标志性的结构或不参与交互部件,可在其表面添加带有法向通道的凹凸贴图来呈现,这样便可减少虚拟模型面数,降低GPU的消耗,提高系统运行的实时性和稳定性。一船用泵模型的UV展开图见图3,结果证明采用此方法优化的模型,很大程度减少了系统内存占有量。
场景的光影效果需要多组灯光组件进行光照计算和实时渲染,实时计算和渲染将耗费大量HoloLens GPU性能。所以,在模型布光后,进行光照烘焙,将生成的光照烘焙贴图直接应用于船舶辅机静态设备模型上,这样在使用系统时就不必进行实时光照计算,大大节省GPU性能。
船舶辅机设备复杂多样,为确保拆装系统与真实环境中保持一致,除了要搭建虚拟船舶辅机整体模型,还需对拆装过程进行过程建模。如果拆装过程没有优化,或者过程繁琐、复杂,就会导致在实际虚拟拆装过程中出现层次混乱,拆装逻辑不符合要求的问题。因此,过程建模是本系统研究的核心之一,是实现拆装操作可视化、拆装逻辑合理的重要依据。
为满足真实船舶辅机拆装逻辑要求,拆装过程建模采用层次型模型与关系型模型相结合的方式,该方式既能保证船舶辅机虚拟设备零部件层次结构清晰,又能以节点方式连接各个部件之间父子等级关系,便于管理和调用[3]。
根据交通运输部海事局规定的船舶辅机拆装评估的考试特点,拆装过程包含:
1) 工具选择。拆装过程中使用的工具必须符合规范要求。
2) 拆装顺序。拆装过程应严格按照设备说明书中的要求进行拆装,父子等级关系明确,各部分的拆装逻辑符合要求。
3) 拆装动作。比如拆装船舶油马达的时候,配流轴、端盖和内部活塞都有各自严格的拆装轨迹。
以拆装多作用内曲线柱塞油马达为例,对拆装层次/关系模型方法的树状结构进行说明见图4。树状结构的根节点为进行拆装的船舶辅机设备。
叶子节点上下父子等级关系的细化程度要根据交通运输部海事局对船舶辅机拆装评估的要求来划分,其遵循的规则有
1) 为每一个节点的零部件匹配到专用拆装工具。
2) 为每一个节点的零部件进行顺序编号,如多个节点的拆装不分先后顺序,则统一编号。
3) 为父子等级关系制定好逻辑脚本,确定好拆装先后及顺序。
4) 为每个节点部件的拆装轨迹设定好关键帧动画,使每一个部件的拆装路径都符合要求。
人机交互是系统增强现实应用的核心技术。本系统的人机交互的研究与实现主要分为虚拟模型的选取和交互手势的实现两个部分。
本系统采用射线碰撞检测的方式实现虚拟模型的选取。射线碰撞原理见图5。系统通过HoloLens向用户眼睛凝视方向发射一条射线与虚拟三维模型零部件之间进行碰撞检测。射线与泵的某个虚拟部件交点为P。射线与前后剪切面相交于P1(X1,Y1,Z1)和P2(X2,Y2,Z2)点,通过P1点与P2点的坐标及连线可确定P点的信息。
已知射线上每一个点的坐标都可用该射线单位向量E与模M表示,则P点坐标为
P=P1+E×M
或
P=P2-E×M
(1)
已知碰撞体部件所在模型上的3个基准点A(XA,YA,ZA)、B(XB,YB,ZB)、C(XC,YC,ZC),则这3个基点所构成三角形内的任何一点的坐标都可以由变量κ、ν以及A、B、C三点坐标为
P=A+κ×B-A+ν×(C-A)
(2)
(0<κ、ν<1,κ+ν<1)
则有
P1+E×M=(1-κ-ν)×A+κ×B+ν×C
(3)
从而得出方程组
(4)
由式(4)可计算出κ、ν和模M的值,然后代入式(3)中可得出P点的坐标,对比HoloLens中运用同步定位与建图SLAM(Simultaneous Localization and Mapping)技术自动生成的深度图中虚拟零部件的空间坐标[4-5],即可确定发生碰撞的部件,实现虚拟模型的选取。
交互手势的实现是本系统另一大亮点,选中目标后通过交互手势进行拆装,彻底摆脱了对鼠标及键盘等输入设备的依赖。通常在增强现实交互手势的研究中,根据应用目的和手势状态将交互手势分为静态手势和动态手势两种方式分别进行检测识别[6]。本系统主要采用动态手势检测,将手放置于用户眼前120°×120°的视角里:通过采集人体手部骨骼节点的深度图,得出骨架节点的运动轨迹作为主要的手势识别特征;通过对比骨架节点的起点、终点和移动距离,然后处理计算分类,最终得出手势识别结果[7-8]。两个重要手势分别为
1) Bloom 手势,用于执行返回及退出命令。
2) Air tap 手势,主要是执行点击与确认命令。
为满足复杂设备多人虚拟拆装操作,本文设计并实现基于HoloLens的多人协同。所谓多人协同操作就是系统可满足多个用户同时进行一台虚拟辅机设备的拆装,在拆装过程中,所有用户都可以对虚拟辅机设备进行拆装操作,且所有拆装过程都同步进行。这样既能使虚拟拆装更贴近真实环境下的拆装训练,也能够提升学员之间的互动性。多人协同的数据传递是通过Socket协议实现的,通过Server/Client服务器的接口来搭建服务器端和传递客户端数据[9]。多人协同主要研究并解决了两个主要问题:
1) 多人协同中访问冲突的解决策略。
2) 多人协同中场景虚实结合的一致性。
在进行船舶辅机拆装系统多人协同的操作时,多个学员可能会在同一时刻拆装并控制同一零部件,如果系统不能处理好多个对象访问同一辅机零部件的情况,就有可能导致系统的异常或者崩溃,因此设计一个健全的多人协同访问冲突的解决策略尤为重要。服务器要利用参加协同操作的用户的数据信息进行仿真计算,判断冲突并能有效解决冲突。
在船舶辅机多人协同拆装仿真时,每一个用户的操作对于服务器模拟计算来说权重都是一样的,每次计算都要根据用户最新一帧完整的操作数据进行,仿真计算完成并进行实时可视化呈现,才能不影响各个用户的操作体验。多个用户协同操作时,用户之间会有意识地进行冲突避让,按先后顺序进行操作。服务器模拟仿真计算会在设定的周期内完成运算,一般不会出现访问同一零部件的冲突;但不能避免的访问冲突也会出现,比如当两个用户之间合作进行某一船舶辅机大部件的拆装时,会进行部件的传递,此时部件不可避免地被两个用户同时接触,服务器仿真计算这时会出现数据冲突。因此,要运用一定策略让部件属于被传递的用户,并顺利完成传递操作[10]。
针对用户在船舶辅机拆装实验中的操作特点,研究并设计一种多人协同中访问冲突的解决策略见图6。当服务器根据各个用户的最新一帧完整的操作数据进行仿真计算时,如果过程中出现访问数据冲突,服务器会按照具体的应用特点根据先来后到的规则选择正确的客户端操作为优选操作,服务器筛选数据进行仿真计算,结果再进行访问数据冲突判断,直到冲突消失,最后将仿真计算结果输出,并进行可视化呈现。
本系统多人协同方案是通过多台HoloLens 眼镜协同实现的,在协同操作时,各个参与拆装操作的用户通过手势、语言与眼镜凝视与虚拟辅机模型进行交互,只有用户在自己的HoloLens 眼镜中看到的虚拟模型跟其他用户看到的虚拟模型一致,才是真正的协同操作。因此,系统必须保证虚拟模型在现实场景中的位置和结构的实时一致性和各个零部件约束一致性。比如:用户1进行操作时,协同拆装用户2也可看到整个操作过程,而且用户2看到的虚拟模型状态与用户1看到的状态一样时,继续进行自己的拆装操作;参与协同的其他用户也可实时看到用户2的操作结果[11]。
本系统运用如下的方法实现虚实结合场景的一致性:
1) 建立一个船舶辅机虚拟模型数据库,各个协同用户的HoloLens 设备都有一份本地的虚拟模型状态数据,每当用户拆装虚拟辅机模型的某个零部件时,只要修改各个用户设备的虚拟模型状态数据即可,这些操作都是在操作之前离线进行的。
2) 在操作进行时,网络框架不会传递整个虚拟模型的状态数据,只要传递虚拟模型中被操作的零部件的位置、姿态和约束关系的数据,各个协同拆装用户接受数据并在本地进行数据更新。这样既实现了虚实结合场景的一致性,同时又在很大程度上减少数据网络传输带宽压力,保证模型拆装交互过程的实时同步。
特选取较为复杂的HoloLens 多人协同虚拟拆装进行所搭建系统的功能展示。
将3台HoloLens通过WiFi连接到同一个局域网中(多台设备原理相同)。任意选择其中一台作为主机即服务器端,其他两台则为客户端。主机先进入系统,根据训练科目选择不同的辅机设备,把选中的三维虚拟模型摆放在合适的空间位置,并开始测试。系统运行展示见图7,图7a)所示为主机第一视角拍摄图。接着,另外2台HoloLens进入系统,与主机建立连接,进行多人协同实操训练,效果见图7b)。
图7 船舶辅机拆装系统运行展示
每个用户都可以通过手势选取不同的虚拟拆装工具,如:十字螺丝刀、10 mm内六角扳手、6.5 mm内六角扳手等工具对相应部件进行拆装。拆装训练过程中,用户相互之间可同步看到整个拆装过程,不存在访问冲突。
从实际效果来看,多人协同操作人机交互良好,系统运行流畅。
本文研究并实现了一套基于HoloLens增强现实技术的船舶辅机拆装系统,将AR技术应用于实际的轮机专业教学中。所搭建的系统开发的功能和技术构架,解决了辅机虚拟模型优化、人机交互及基于AR的多人协同操作等技术难点。基于C编程环境和Unity3D三维驱动引擎,完成了系统的研发及测试。用户可通过本系统在现实环境中添加船舶辅机设备三维模型,不用借助任何输入设备,用手势即可完成拆装操作。该系统在轮机专业培养及海事系统大证考试评估等方面有着广阔的发展前景,节省成本且提高效率。另外,所探讨的基于HoloLens的虚实结合技术同样适用于绝大多数机械行业的维修检测工作,将会对机械制造等行业未来的发展产生积极影响。