面向智能制造的在线通用虚拟装配系统
2023-01-13张灵维章栩苓魏士松周正东
毛 玲,张灵维,章栩苓,魏士松,2,周正东
1.南京航空航天大学 机械结构力学及控制国家重点实验室,南京 210016
2.上海航天精密机械研究所,上海 201600
在工业制造行业,产品设计过程中往往不可避免因人为失误而导致的设计缺陷,所以,在投入生产前需对产品结构合理性和可装配性进行检测[1-2],以免零件制作完成后进行组装时出现结构不合理、装配干涉等问题[3-5],增加不必要的材料和人力浪费,延长产品制造周期[6-7]。对于简单小巧的机械产品可直接进行样品检测,而对于航空航天装备,大型船舶等复杂精密机械产品[8-9],其零件数量众多,材料成本高昂,需运用装配仿真技术降低产品设计缺陷的风险[10-11]。国内,文献[12]针对断路器装配过程繁琐、逻辑结构复杂的情况,提出一种基于时间Petri网建模的虚拟仿真技术。文献[13]针对大型船舶中管路系统复杂易导致产品返工的问题,提出对动力舱管路系统进行虚拟装配仿真设计。国外,文献[14]提出一种针对涡轮发动机的半沉浸式虚拟装配系统,并对涡轮发动机的虚拟原型和组装顺序进行了测试,验证了其对装配设计,零件设计和操作计划的有效性。以上三种虚拟装配系统皆是针对特定模型设计的虚拟装配方法,无法任意更换模型,不具有通用性。文献[15]遵循“可拆即可装”的路径反演原则,将装配体路径规划问题转化为拆卸路径优化问题,提出了一种基于人机交互的改进A-Star(A*)算法多层次装配路径规划方法。该方法要求操作者手动完成模型拆解,易导致重复作业,效率较低,不能很好地适应复杂装配体设计初期需不断调整试错的需求。
大型机械装备通常由多个设计师协同完成设计[16],而异地设计师之间仅利用语言描述与静态三维展示不能直观地剖析产品的结构设计和装配流程,影响了设计师之间的技术交流与设计交互,极大地阻碍了产品设计效率[17]。国内,在基于Web端实现技术人员协同工作方面已取得一定进展[18]。文献[19]提出一种基于Web技术农机零部件三维建模网络数据库系统,该系统将产品模型参数、设计流程及装配视频存储于数据库中,用户在浏览器端调用数据库数据进行查看浏览。该方法虽然支持远程展示,但是缺乏人机主动交互,不能满足协同设计的需求,且产品参数,装配视频需事先录制存储于数据库中,过程繁琐,效率较低。
本文提出一种面向智能制造领域的在线通用虚拟装配系统。该系统支持自定义三维模型数据,结合装配管理数据库实现对多层次的复杂模型进行可视化装配序列设计,能够满足用户个性化需求,同时模型数据保存在本地,可有效防止数据泄露,安全性高。该系统运用云服务器的高计算性能和渲染性能改善人机交互延迟的问题,通过网络实现在线交互体验,促进设计人员之间的信息共享,满足协同设计的迫切需求,具有通用性强、效率高、灵活性强的特点。
1 材料与方法
1.1 系统架构
系统采用B/S(浏览器/服务器)架构设计,分为用户层、界面层、功能层和数据层,如图1所示。用户层:包括普通用户和管理用户,普通用户在网站前端完成注册登录后可体验网站服务和虚拟装配应用服务。管理用户登录网站后端对网站前端进行日常维护管理。界面层:包括网站前端界面和网站后端界面,网站前端界面面向普通用户,网站后端界面面向管理用户开放。功能层:系统功能模块包括网站服务、虚拟装配应用和管理服务。网站服务模块用于接收用户在客户端上传的装配数据表与用户信息并存储于数据库。虚拟装配应用用于提供在线虚拟装配服务,用户可自主上传装配模型并匹配数据库中对应的装配数据表。管理模块用于对网站进行管理、维护及数据存储查看。数据层:包括网站数据库和应用数据库。网站数据库以表格的形式存储用户的个人信息和日志。应用数据库用于存储用户上传的装配数据表。
图1 系统架构图Fig.1 System architecture diagram
1.2 网站设计
1.2.1 网站前端
网站前端采用Layui开源框架,这款UI框架,支持HTML、CSS及JavaScript等网站开发技术,能够满足用户在客户端传输文件至云端的需求。网站包括首页、项目介绍、团队介绍、服务中心与个人中心五个模块。首页运用图片与文字结合的方式介绍项目的研发背景,同时提供用户注册登录的功能,用户以手机验证码验证的方式进行注册,完成注册后需等待后台管理人员审核开放相应权限。用户分为普通用户和会员用户,其中,服务中心模块只对会员用户开放。项目介绍模块用于对项目的主要内容、功能以及优势进行展示。团队介绍模块用于介绍本项目团队成员的个人信息、成果荣誉以及在项目中担任的主要工作。服务中心模块是网站的核心模块,用于提供用户在线服务体验,虚拟装配应用的访问链接部署于此模块,该模块还支持文件传输,可用于装配数据表的上传。个人中心模块用于提供用户个人信息编辑、密码修改以及查看上传文件的历史记录。
1.2.2 网站后端
网站后端采用RuoYi开源框架,这是一款基于SpringBoot+Vue的后端开发框架。界面简单,功能齐全,能够满足对网站前端的日常维护需求。网站后端主要功能为对网站前端进行管理、更新以及数据存储查看。网站管理包括对用户注册信息进行审核,开放或禁用相应权限。网站更新包括对网站首页、项目介绍模块、团队介绍模块中的文字内容和图片进行编辑,便于后续网站服务拓展。除此之外,后台还可对用户上传文件记录进行查看,可按照日期对信息进行筛选查找。
1.3 虚拟装配应用设计
1.3.1 主场景功能设计
虚拟装配应用基于Unity3D开发平台,利用C#编程语言开发,结合SQLServer数据库、IIS管理器及WebAPI应用程序实现从外部可视化定义装配序列以及在线远程虚拟装配。考虑到系统的完整性以及更好的展示性,分别设计了自由拆解模块,装配演示模块,虚拟装配模块,如图2所示。
图2 虚拟装配应用主场景Fig.2 Virtual assembly application main scene
1.3.2 自由拆解模块
自由拆解模块用于对三维模型进行手动拆解,直观地展示了模型内部结构。该模块在完成本地模型加载后,遍历三维模型为零件添加包围盒便于后续对零件进行抓取移动。拆解算法实现方法如下:
算法1三维模型拆解算法
输入:长按左键后鼠标的移动位置Mp
输出:对应的零件移动位置P
1.监听鼠标按键事件。
2.当鼠标左键按下时,获取鼠标的当前位置,计算其与零件在世界坐标下的相对位置差Op。
3.移动鼠标,通过公式(1)计算此时零件的移动位置P:
4.零件移动至位置P从而实现鼠标拖拽零件移动。
1.3.3 装配演示模块
装配演示模块用于对三维模型进行自动装配演示。该模块在演示前需对三维模型进行随机拆解,然后再按照装配序列进行自动装配。拆解功能实现原理如下:将模型零部件分别向X和Y方向移动Dx和Dy距离,公式如下:
其中,L为零件包围盒的长度,j为从0开始递增的角度值。为保证拆解后的零件保持在视口区域内,需对Dx和Dy的最小值及最大值进行限制。通过模型所在视口区域的四个角坐标得到视口区域的边界值,由于零件坐标位于零件中心,所以直接利用边界值对坐标进行限制可能会出现零件一部分在视口外的情况。最终,零件可移动区域为视口边界值减去零件包围盒长度的一半所得到的区域,如图3所示。
图3 模型移动区域展示图Fig.3 Display diagram of model moving area
1.3.4 虚拟装配模块
(1)可视化装配序列设计
可视化装配序列设计基于装配数据表定义装配序列,数据表中的子零件与虚拟装配应用中的模型零件一映射。装配数据表以简洁明了的设计方式反映零件(子装配体)间的装配序列,通过将多层次的复杂装配拆分成多个单层次的简单子装配,再按照装配序列完成每个子装配,实现对装配流程的简化。以表1为例,整个装配可以拆分成5个子装配,分别为总装配体、子装配体1、子装配体2、子装配体3与子装配体4。以数据表中从右往左,自下而上的顺序完成所有子装配从而实现总装配。其中,每个装配体中以自上而下的顺序定义第一个零件为基准零件。
首先,从数据表最右列开始,以自下而上的顺序获得同一装配体下的子零件并将子零件按序与基准零件装配合成多零件装配体。子装配体4中,子零件11为基准零件,子零件12和子零件11装配为子装配体4。子装配体3中,子零件7为基准零件,子零件10、子零件9、子零件8按装配顺序与子零件7装配合成子装配体3。当最右列子零件完成装配后则向左递进一列,合成的多零件子装配体按照装配规则以自下而上的顺序与其他子零件(子装配体)完成新的子装配体,以此顺序进行装配直到总装配体完成。该装配序列设计方法不仅限于表1,可拓展层级和零件数量。
表1 装配数据表Table 1 Assembly data table
(2)虚拟装配设计实现
由于装配功能依赖基准零件与装配零件的相对几何约束关系来实现,所以在模型随机拆解前需对模型的相对约束信息进行储存。相对约束信息包括基准零件信息、装配零件信息,以及两者的相对位姿差信息。
算法2相对位姿信息存储算法
输入:基准零件位姿信息和装配零件位姿信息
输出:两者的相对位姿差信息
1.获取基准零件位置三元数据P0和角度三元数据A0。
2.获取装配零件位置三元数据P1和角度三元数据A1。
3.利用公式(4)和公式(5)计算相对位置差D和相对角度差W。
4.以零件ID为键,相对位姿差信息为值存储在Dictionary字典类中。
Dictionary字典类利用键-值对形式实现数据的存储和快速查找,满足人机交互时实时、高效地调取装配数据的需求。
零件位姿信息存储时,基准零件存在两种表达形式,本文对其进行区分并分别获取位姿信息进行存储。当基准零件为单个的子零件时,直接获取场景中对应零件的位姿三元数据。当基准零件为多零件的子装配体时,将该子装配体下的基准零件的位姿三元数据作为子装配体的位姿三元数据进行存储。装配零件亦存在这两种表达形式,处理方式与基准零件类似。
装配算法流程如图4所示,模型输入后,程序将根据模型的IDm查找数据库中对应的装配数据表并解析。其中,模型IDm与装配数据表IDE一一对应,IDm为三维模型ID,IDE为装配数据表ID。针对复杂的装配体,本文将装配流程简化为多个有序的子装配流程。在子装配流程中,选择零件(子装配体)进行移动装配,当发生包围盒碰撞[20]时,通过抓取零件IDg判断装配序列是否正确,若正确,则根据IDg获得相应的几何约束信息,其中,IDg为抓取零件的ID。此时松开抓取按钮,零件移动至装配位置,完成装配。然后判断子装配是否结束,若未结束则继续选择零件进行装配直至子装配结束获得子装配体。子装配体将用于下一轮子装配直至完成总装配。
图4 虚拟装配算法流程图Fig.4 Flowchart of virtual assembly algorithm
1.4 数据库通信
虚拟装配应用利用中间层WebAPI应用程序来实现与数据库的通信。WebAPI应用程序部署于IIS服务器,利用SQL语言根据装配数据表IDE查找并读取装配数据信息。该信息被转换为JSON格式并保存在网页端。虚拟装配应用通过WebRequest网络请求方式来满足Http通信的需求以获得网页端的装配数据信息。其中,直接访问会由于安全策略问题阻止虚拟装配应用的跨域访问请求,需为提供Web服务的目录配置安全策略文件,实现允许外域访问。网页端的装配数据信息为JSON格式,应用无法直接读取使用,需对其进行格式解析。SqlDataAdapter作为DataSet和数据库之间的桥接器,通过对数据源使用适当的Transact-SQL语句映射,可将装配数据信息填充进DataSet中,实现在内存中存储装配数据,便于后续对模型间的装配关系进行读取。其中,虚拟装配应用通过统一资源定位符(uniform resource locator,URL)对WebAPI应用程序传递参数,该参数作为数据表IDE用于查找相应的装配数据表。通信流程如图5所示。
图5 虚拟装配应用与数据库的通信流程Fig.5 Communication flow between virtual assembly application and database
2 实验结果
2.1 系统应用实例
本实验以飞机、航空发动机、汽车发动机三种模型为例对系统进行验证。用户登录网站页面,进入服务中心模块进行在线虚拟装配,如图6所示。对于首次装配的模型需上传装配数据表用于定义装配序列,数据表将保存在云服务器端的装配管理数据库中,如图7所示。后续对该模型进行装配时,无需重复上传。
图6 网站展示图Fig.6 Display diagram of website
图7 装配管理数据库展示图Fig.7 Display diagram of assembly relational database
在虚拟装配模块中,点击“下载模型”按钮选择与装配数据表相对应的本地模型进行加载,界面如图8所示。加载完成后点击“装配”按钮,模型将自动拆解,完成拆解后即可进行手动装配操作,三种模型的装配界面如图9所示。移动鼠标抓取零件按照装配序列完成装配。实验结果表明:用户可自主上传装配模型并自定义装配序列,在虚拟环境下能够完成对三维模型的装配操作,该系统具有通用性。
图8 虚拟装配应用加载模型界面Fig.8 Model interface of virtual assembly application loads
图9 虚拟装配应用装配界面Fig.9 Assembles interface of virtual assembly application
2.2 交互性能分析
以飞机整机虚拟装配为例,测试系统在虚拟装配模块下进行在线装配时的交互性能。测试模型为9.2M的飞机三维模型,三角面片数为257 190个,顶点数为625 188个。该测试只取鼠标与模型进行装配交互时间段内的帧数,平均每帧运行间隔时间统计如图10所示。由图10可得:在130 s装配时间中,每帧间隔时间最大为10.9 ms,最小为6.8 ms,平均间隔时间为8.79 ms。人机交互性能良好,画面流畅自然。
图10 平均间隔时间统计图Fig.10 Statistical chart of mean interval time
为了更直观地展示本文虚拟装配系统良好的交互性能,选取文献[9]中的实验结果进行对比分析。为保证分析结果的可靠性和准确性,本文采用文献[9]中的实验模型并选取人机交互时间段进行系统测试。
由表2可得,本文虚拟装配系统每帧间隔时间最大为13.7 ms,平均间隔时间为11.58 ms。与文献[9]中实验结果相比,本文装配系统人机交互更加流畅。相较文献[9]测试的普通计算机,本文运用云端的高计算能力对交互性能进行改善,且文献[9]面向立体交互模式,对性能耗费较大。
表2 交互性能测试结果Table 2 Test results of interactive performance
3 结束语
为了降低产品的研发成本,提高设计效率,本文基于B/S架构设计,为用户提供个性化的在线通用虚拟装配服务。实验结果表明:在三种机械产品模型的检验下,在线虚拟装配系统具有通用性,可满足不同机械产品的装配需求,且在人机交互时段中,每帧平均间隔时间为8.79 ms,人机交互自然流畅,体验效果良好。未来,在现有的基础上将扩展对虚拟装配精度检测的研究,完善和拓展本系统的功能。