基于VR 的空客A320 飞机起落架拆装及维修系统研究*
2023-09-17黄大洋施浩范正扬顾程骏
黄大洋,施浩,范正扬,顾程骏
(上海工程技术大学航空运输学院,上海 201620)
1 研究目的
飞机起落架是用来支撑机身,帮助飞机起飞和着陆的部件,它需要承受巨大的冲击力从而为机体起到缓冲减震的作用,保障乘客的安全,以及在飞机起飞、着陆、滑跑的过程为其提供支撑负荷的装置。飞机起落架的拆装维修是每个航空维修人员的必修课程。传统课程培训受限于场地、环境等影响因素,使得课程培训中教学效率不高。同时初次接触相关课程的受训者在进行实际操作过程中由于技术能力和安全防护的疏忽可能导致安全事故发生。
因此研究本系统的目的是降低航空维修环境的复杂性以提高安全度,同时对航空维修公司及相关院校而言能够减少维修器材损耗以降低成本。受训者只需佩戴VR 设备即可进入一个近乎真实的虚拟世界,通过场景中的物件交互展开学习。使用VR 设备能直观地让受训者动手操作而不是单纯学习书本上的理论知识,无论是从专业性而言,还是从较强的交互性而言,本系统都能满足航空维修公司及院校对于飞机起落架维修的教学需求,在降低成本的同时又能提高教学质量[1]。
2 A320 起落架的测绘与三维模型构建
针对于A320 起落架零部件复杂多样且精度高的特点,在对A320 起落架进行三维建模的过程中,如何精准高效地完成模型构建显得尤为重要。同时要求所构建的三维模型必须具有高精度和高稳定性。本项目从以上因素出发,选择建立基于3Ds Max 的三维模型[2]。
2.1 设备的测绘与制图
三维建模所需要的数据类型分为图像数据和非图像数据两大类,这两类数据对于模型的精度都是至关重要的。其中图像数据包括A320 飞机及其起落架的整体外形、三视图、纹理等;非图像数据包含了A320飞机及其起落架的各种尺寸、用途等。A320 三视图如图1 所示。
图1 A320 三视图
项目团队联系到上海航空公司及其相关工作人员,得到了他们的支持并且获得了空客A320 飞机相关参数以及飞机起落架部件的较高精度测量值数据,团队通过计算机将得到的数据汇总、编辑、分析、校准,用以A320 飞机主体和飞机起落架建模。
由CAD 平面图转化成三维模型通常情况下需要对原有平面图进行数据优化。其中出现原有的CAD 平面图由于尺寸标注无法实现模型整合致使图形无法完美地转化成三维模型的问题,对此进行原有平面图优化设计,结构框架大致定型后与实际尺寸数据的比照校准,为后期构建精准的三维模型提供坚实的保障。起落架主要的支架组件如图2 所示,次级整流罩连杆如图3 所示。
图2 主要的支架组件
图3 次级整流罩连杆
2.2 三维模型搭建
将优化后的设计图导入至3Ds Max 软件中,并且再次检查确认平面图中的线条是否存在模型整合问题,若存此问题,则通过使用连接工具将其连接闭合,使设计图更加完美,在最后交互显示出精确的模型。
在平面设计图的基础上,通过拉伸、挤出等多种方式构建A320 飞机及其起落架零部件的三维模型。其中需要注意的是,建模过程中尽量使用简单指令以减小数据量,避免后期运行时造成严重卡顿的现象;建模完成后将模型塌陷为网格物体以避免将模型导入Unity 3D 后出现不兼容的状况[2]。
图4—图6 为A320 机体及起落架部分零件展示。
图4 A320 机体
图5 A320 起落架反作用连杆
图6 A320 起落架扭力臂
2.3 贴图处理
高精度的建模能够展示出空客A320 飞机的各种细节,但是缺乏美观性。不同的表面属性如凹凸感、漫反射、折射能够给予受训者更真实的体验,因此需要进行贴图处理。在系统中模型贴图是通过运用Photoshop 制作贴图素材并对飞机进行了贴图处理,以达到美化外观,使场景更真实,使操作者通过VR 设备进行虚拟维修操作时更能有身临其境之感,尽最大可能还原了飞机样貌。A320 轮子贴图素材如图7 所示。
图7 A320 轮子贴图素材
3 交互式编程
本系统以Unity 3D 为开发平台,利用steamVR 呈现出几乎贴近现实的虚拟世界,同时使用VR设备HTC VIVE 作为载体以及最终操作终端以实现人机交互功能。维修过程中的人机交互一共具有2 种交互形式:一是通过虚拟对象与虚拟维修零件的触摸式交互,其为直接交互;另一种是虚拟对象通过虚拟维修工具再与维修零件的结合式交互,其为间接交互[3]。因此可将虚拟维修对象的组件按照约束运动和交互特征来定义。约束运动是根据操作者的操作意图来对零部件的约束运动仿真,其包括平动、转动和非受限运动。交互特征是根据交互对象是维修工具还是维修对象以及是对维修部件进行平动还是转动来划分的。本文根据不同的实现形式分别进行了相应的编程[4]。
3.1 模型运动的编程
为实现模型运动时的真实性以及反映正常的运动轨迹,同时实现对于起落架的操控,本系统中运用代码编译的方法来实现,以下列举部分代码:
Using Unity Engine;
Public class c:MonoBehaviour{
Int step=0;
Int i=0;
Int j=0;
//Use this for initialization
Void Start(){}
//Update is called once per frame
Void Update(){
switch(step)
{case0;
{if(i<90)
{transform.Translate(new Vector3
(-0.015f,0,0,015f));
i++;}
else
{step=1;}
break;}
case 1;
{if(j<90)
{transform.Rotate(new Vector3
(0,0,1),1);j++}
else
{step=2}
break;}
case2;
{break;)}
}}[1]
3.2 模型拆装的编程
本系统重要功能是实现对于受训者的维修拆装的教学,因此配备的拆装教学功能需要提高受训者的沉浸感并为其带去流畅合理的虚拟体验。以拆卸教学为例:当完成当前拆卸步骤时,手柄所在位置会自动指向显示出下一个所需拆卸零件的位置。受训者可以自由操控手柄,将零件从提示位置选中并做出相应拆卸动作以完成拆卸。
移动过程实现的代码具体如下:
if
(device.GetPress(SteamVR Contro
1ler.ButtonMask.Trigger))
{
dx2=device.transform.pos.x;
dy2=device.transform.pos.y;
dz2=device.transform.pos.z;
T.transform.position=new
Vcctor3(T.transform.position.x+(
dx2-dx1)*speed,T.transform.posit
ion+(dy2-dy1)*speed,T.transform.
position.z+(dz2-dz1)*speed);
dxl=dx2;dy1=dy2;dz1=dz2;
}[5]
3.3 互动性编程
操作中的互动性体验同时也是一个重要的编程内容,为增强受训者的体验感,系统实现了多方面的操纵交互。假若受训者希望能够全方位观察飞机零部件,则可以自主对零件模型进行旋转、平移等操作。这一功能的实现大大增加了虚拟操作的真实性,便于受训者全方面观察学习和认识飞机零件与零件之间的结合方式。部分代码如下:
if(Target!=null&&Input.GetMouseButton((int)MouseButt on.MouseButton_Right))
{
transform.rotation=Quaternion.Lerp(transform.rotation,m Rotation,Time.deltaTime*Damping);
}
if(Input.GetMouseButton((int)MouseButton.MouseButto n_Left)
{
transform.Translate(Input.GetAxis(“MouseX”),Input.Get Axis(“Mouse Y”),0);
}[6]
4 结论
在传统航空维修培训中,往往会受到场地、设备、成本因素影响,甚至会因为疫情影响无法开展线下培训,这会严重阻碍培训进程。本项目的创新点在于充分运用虚拟现实技术,受训者利用VR 设备随时随地即可开展模拟训练,避免了时间、空间因素带来的干扰。就航空维修公司及相关院校而言,虚拟维修在减少了场地及设备成本的同时降低了耗材费用,真正做到了在降低成本的过程中又能够提高教学质量。通过VR技术,虚拟培训不仅可以促进受训者对产品知识的获取、学习,提高相关从业者的实际动手操作能力。更为突出的是,虚拟培训打破了先前烦琐枯燥的教育培训模式,降低了企业和高校的教育培训成本,从而走出一条低成本、高效率的培训路径。