李龙欣, 孙青云, 徐 鹏
(南京林业大学大学机械电子工程学院,江苏 南京 210037)
近年来,随着工业智能化的快速发展,贴面生产线的应用日益广泛。在这一背景下,对贴面生产线设备的教学变得尤为重要[1]。传统机械教学需要进行实际操作,但由于贴面生产线需要高压电驱动且工作环境恶劣,存在安全风险,因此在工厂不适合进行培训。贴面生产线设备价格昂贵,体积庞大,限制了教育机构专门购置和安装这些设备用于学员培训;并且传统课堂培训通常需要较长的教学周期,效率较低,需要大量师资来进行教学[2-3]。
针对传统教学方法存在的问题,本文结合虚拟现实技术提出了一种新型的教学系统。首先,使用建模软件对贴面生产线机械设备进行建模和渲染,以提高场景的真实性,加深用户的代入感。其次针对虚拟现实中的碰撞检测提出一种层次包围盒和改进蚁群相结合的混合碰撞检测算法Sphere-OBB-MACO,缩短碰撞检测时间,提高碰撞检测效率,提高场景的真实性,加深用户的代入感[4]。最后文件导入到Unity3D中,完成场景交互开发,实现了场景漫游和设备交互等多种功能,以增强学员的学习兴趣。这一新的教学系统将有效应对传统教学方式的不足,为贴面生产线机械设备的培训提供了全新的思路[5]。
贴面生产线教学系统主要包含三个部分,分别是学员端、设备端以及虚拟场景。学员通过操作设备在虚拟场景中漫游,根据场景或教师的指导进行各项操作,在虚拟场景中实现设备操作等相关操作,以达到教学的目的。虚拟仿真教学系统结构如图1所示。
图1 虚拟仿真教学系统结构
从图1中可以看到,整套教学系统的关键在于虚拟场景的搭建,要搭建完整的虚拟场景则离不开各类软件平台的使用。贴面生产线教学系统因具备以下两个特点:(1)在教学系统中,模型要适当简化,以便适应计算机环境,要考虑软硬件的集成性和兼容性,以确保系统能够顺利运行。(2)增强系统真实感,虚拟仿真场景必须要结合实际,不可以出现穿模等现象。
开发路线图包括以下步骤:设备调研,根据实际贴面生产线设备进行学习和拍照;贴面生产线设备建模,建模包括辊台、皮带、装卸板机、清洁机、铺纸机、热压机、裁边机、液压机、吸板机、升降台以及厂房的三维模型,使用三维建模软件根据设备参数创建和装配模型,将生产线模型可视化,并渲染和制作动画;使用一种包围盒和改进蚁群相结合的混合碰撞检测算法Sphere-OBB-MACO,提高场景的真实性;系统开发,整合各种资源,创建虚拟现实场景并编写脚本,以使学员与虚拟现实场景进行交互,最后将系统进行打包和发布。这些步骤的开发路线如图2所示。
图2 系统开发路线图
最终选采用SolidWorks进行三维建模,使用3D MAX进行模型渲染,在Unity3D中进行虚拟现实开发,选用MySQL数据库进行系统信息的储存,通过Microsoft Visual Studio编写脚本,将C#作为编程语言,最终选设备作为虚拟系统的输出端。
贴面生产线是本套系统最重要的模型,需要精确还原尺寸,因此使用Solidworks软件根据CAD图纸进行建模,模型建立好后导入3DS MAX中,并在3DS MAX完成对生产线模型的组装,如图3所示。
图3 贴面生产线正视图与俯视图
图4 边塌陷算法
当前所构造模型结构复杂,作为教学系统,学校配置的计算机存储容量和性能处于一般水平,太复杂的模型会导致系统运行速度下降,实时渲染和网络传输卡顿也会影响学生操作。需要对模型进行简化,更改计算方法,提高图形绘制的帧速,以保证计算机流畅运行[6]。结合模型特点,选用QEM算法简化。QEM算法就是采用边塌陷的思想,即将模型上代价最小的边删除掉,随后将边塌陷成新顶点,该边的两个原顶点需要连向此新顶点[7]。该算法要求新顶点到原塌陷边相关的三角形所在平面的距离平方和作为塌陷代价[8]。
塌陷代价计算步骤:
三角形平面,设为Ax+By+Cz+D=0
顶点V到三角形平面的距离为:
d=VPT,V=(x,y,z,1),P=(A,B,C,D)
d2=VPT*VPT=V(PTP)VT
PTP=KP
V(PTP)VT=VKPVT
定义NF(v)为顶点的领域平面,则顶点V移动到U的损失为新点u到旧点V的一个领域三角平面的距离之和:
(1)
则每一对顶点的折叠损失定义为:
E(v1,v2)(u)=Δv1(U)+Δv2(U)=U(M1+M2)
(2)
令E(v1,v2)(u)偏导数为0,求解损失最小的U。
以装卸板机为例,如图5所示,(a)优化前,模型面数为56 212,点数为82 872,(b)优化后,模型面数为49 464,点数为74 493,优化后模型对比优化前的模型,得到的面数点数数量下降,并且优化后模型并未失真且与原模型无差异。
图5 简化前后的装卸板机
在虚拟拆装环境中,零部件的拆卸装配应模拟真实情况。为了防止穿透现象的发生,系统需能即时准确判断各模型是否发生碰撞,在当前研究中,碰撞算法主要分为基于时间域和基于空间域两类。
本研究提出的Sphere-OBB-MACO算法,是将Sphere-OBB包围盒和Sphere包围盒相结合,组成混合层次包围与改进蚁群算法相结合的碰撞检测算法。首先利用层次包围盒技术进行初步检测,排除不相交的模型,随后对蚁群算法进行改进,引入基于信息素扩散模型的蚁群算法,以完成更详细地碰撞检测。
2.3.1 混合层次包围盒树的遍历
包围盒算法是一种碰撞检测方法,它通过使用简单的包围盒来近似代替形状复杂的物体,从而进行高效的碰撞检测。在层次包围盒中,将包围盒与树状结构相结合,通过树的遍历方式对包围盒进行检测。检测过程中,采用树的遍历方法对包围盒进行检查。在检测过程中,先对父节点进行检查,但只有在与父节点相交的情形下才可以继续对子节点进行检查。本算法采用Sphere-OBB包围盒。
Sphere 与 OBB 的相交测试采用分离轴理论,如图6所示,T为 OBB 中心到圆心的距离,L为分离轴,TL为中心距在分离轴上的投影长度,ra为包围盒在分离轴上的投影半径,rb为中心距离在球内的部分在分离轴上的投影,有公式如下:
图6 OBB-Sphere相交测试
TL>ra+rb
(3)
上式若成立则两个包围盒不相交,不成立则相交。
在模型碰撞检测过程中,若两个层次包围盒树的根节点相交,说明模型有可能发生碰撞,需要进行进一步检测,这就需要制定相关遍历下降策略,本文选择深度优先遍历方法,如图7所示。
图7 层次包围盒树遍历
设虚拟场景中两个待检测模型分别为A与B,在进行测试时首先判断根结点是否相交,若相交则继续判断子节点是否相交。设A与B的根结点分别是A0与B0,子结点分别为A1、A2、B1、B2,叶子结点分别为A3、A4、A5、A6、B3、B4、B5、B6。具体执行步骤如下:
(1)对待检测模型分别建立二叉树;
(2)判断A0,B0是否相交,如果相交则继续执行步骤3;
(3)判断B1,B2是否相交,如果是则继续执行步骤4;
(4)找出与A0相交的叶子结点,假设为B3;
(5)如果A中存在叶子节点与B3相交,则A,B碰撞;
(6)如果A0,B0同层结点包围盒都不相交,则结束遍历,A,B不碰撞。
2.3.2 蚁群算法优化
非线性优化问题需要选取一个目标函数作为待优化的适应度函数。对于碰撞检测而言,精确检测描述为面片之间的相交测试,因此选用三维模型的三角形面片的质心作为算法采样的特征点,当质心间距小于某一值时面片之间相交,模型相交[9]。设两个质心坐标为(x1,y1,z1),(x2,y2,z2),质心间距如下式:
(4)
当d≤δ时,判定三维模型之间发生碰撞。
在碰撞检测阶段,对初步检测筛选的可能发生碰撞的几何图元进行特征采样。采样得到的特征点被用作碰撞检测的待检测集合。随后,将待检测的三维模型映射到二维平面,也就是将碰撞检测问题从三维转化为二维离散空间中特征对距离的非线性优化问题[10]。
在初始时刻,将m只蚂蚁随机地放到n座城市,同时,将每只蚂蚁的禁忌表的第一个元素设置为它当前所在的城市[11]。各个路径的信息素在此时相等,设τij(0)=c,随后在不同城市的蚂蚁凭借路径上的信息素量和启发式信息(两城市间的距离)选择下一座城市,t时蚂蚁k从城市i转移到城市j的概率为:
(5)
JK(i)表示蚂蚁下一步选择的城市的集合,φij表示蚂蚁从i到j的期望程度。当蚂蚁完成一次周游后,信息素的表达式如下[12]
τij(t+n)=(1-p)*τij+Δτij
(6)
虽然蚁群算法本身具有很多优点,但是它一般需要较长的搜索时间,并且容易停滞。为了解决这个问题,1996年Dorigo等提出精英蚂蚁系统,对每次结果最好的蚂蚁释放的信息素给予额外的量,加快蚂蚁搜索范围和时间。但是单次迭代产生的优秀解并不一定就是整体最优解,而额外的信息素叠加可能会让结果向局部最优解偏移而不是得到整体最优解[13]。
为了解决精英蚁群算法造成的局部最优解问题,本文对信息素释放规则进行优化,设最优评价值为bt,初始值为0,公式如下:
(7)
其中bt(i)是第i代蚂蚁的局部最优评价,当bt(i)没有达到bt的值时最优解不变仍为bt,当bt(i)达到甚至超过bt时最优解更新,bt(i)成为最优解。
取消每次迭代后对所有蚂蚁路径都进行的信息素叠加,而是对评价优于bt的路径进行信息素叠加,对差于最优解bt的路径信息素进行挥发:
τij(t+n)=(1-p)*τij+ΔR
根据文献参数取值为θ=8,μ=-0.75
2.3.3 算法流程
本文将MACO算法与Sphere-OBB包围盒相结合应用到碰撞检测中,首先采用层次包围盒技术进行初步检测,然后采用蚁群算法进行详细检测。
(1)对三维模型建立层次包围盒并遍历,判断是否发生碰撞;
(2)若碰撞则对两节点之间图元进行特征值采样,组成二维离散搜索空间。若没有碰撞则直接进行(4);
(3)初始化信息素强度τ、种群M、可见度φ、种群位置,设置迭代此处初始值为0;
(4)计算每只蚂蚁的最优解和当前全局最优解;
(5)达到最终要求的条件,输出满足碰撞阈值的最佳个体。
2.3.4 实验及结果分析
实验环境:PC(Windows10 CPU Intel Core i5-9300H CPU@2.40GHz,内存16GB),利用OpenGL图形库和C++在VS2019上实现,仿真模型为贴面生产线设备的三维模型。
(1)对不同特征对情况下的Sphere-OBB-MACO算法进行碰撞检测性能仿真。实验选择5种特征及运动时间最长的两个物体来对Sphere-OBB-MACO算法进行碰撞检测,表1是碰撞检测耗时。
表1 不同特征对的Sphere-OBB-MACO算法检测时长
从表1中可以得知在相同的碰撞检测准确率下,碰撞检测算法的耗时与特征对数量成正比关系,即采样的特征对数量越多,算法耗时越长。
(2)为了验证蚁群规模对于碰撞算法性能的影响,选用不同的蚁群规模,采用Sphere-OBB-MACO算法对贴面生产线设备进行碰撞训练,检测率如图8所示。
图8 不同蚁群规模的碰撞检测率
从图中可以看出不同的蚁群规模对碰撞算法的检测率影响十分大,检测率都保持着先降后升的规律,当特征对为1 000×1 000时,蚁群数量在40时就可以获得最高检测率,当特征对为5 000×5 000时,蚁群数量在60时才能获得最高检测率。综上,本文采取蚁群数量为60。
(3)选用贴面生产线设备进行碰撞检测,特征对为5 000×5 000,蚁群规模m=60,初始的信息素影响因子和期望启发因子α=β=1,最大迭代次数N=100,设定值n=50,分别采用Sphere-OBB(层次包围盒算法)、Sphere-OBB-ACO(结合蚁群算法的随机碰撞检测算法)及Sphere-OBB-MACO(结合改进蚁群的随机碰撞检测算法)三种算法进行对比分析,最终结果如图9所示。
图9 三种算法的检测效率
图10 漫游场景
图11 设备及流程学习
从图9中可以得知三种算法在30 ms后均获得了稳定的结果,其中Sphere-OBB-MACO算法检测率最高,约为0.85,Sphere-OBB最差,约为0.65。
实验结果表明,与传统包围盒算法及传统随机碰撞检测算法相比,本文设计优化的Sphere-OBB-MACO碰撞检测算法更优秀。
为了达到人机交互目的,需要用户界面(UI),UI是系统向学员展示的窗口,为了增强软件独特性并降低学员学习成本,UI的设计至关重要[14]。通过漫游可以实现对贴面生产线的工作流程及机械设备的结构的了解,掌握贴面生产线的规范操作,加深对贴面生产线理论知识的掌握并提高实际动手能力[15-16]。
教学设计分为设备及流程学习和教学成果反馈。
在设备及流程学习中以皮带输送机设备为例进行介绍。皮带输送机由输送带、托辊、电机、滚筒组成,具有结构简单输送量大等优点,广泛应用于家电食品等多个行业。皮带输送机结构多样,有槽型、平型等多种形式,操作流程模块部分系统通过播放语音、文字和图片指导学员学习,学员点击下一步按钮继续进行学习教学内容。
在教学成果反馈中,人员考核模块可以让学员检查自己的学习进度,有针对性地查漏补缺,监督学员的学习。本系统的考核模块主要是以试题的形式进行,每套试题中都包括设备认知学习、操作实践等知识,都是选择题。学员完成一题后点击下一题按钮继续作答。学员在作答完后答案提交到数据库与ans中的答案进行对比,给出得分。
本文以贴面生产线为模型,运用三维建模技术、碰撞检测技术、虚拟现实技术,开发了一套高仿真度的贴面生产线结构认知与拆卸虚拟仿真教学系统,解决了学员在学习过程中体验不佳、学习过程枯燥无味、学习效率低下等问题,提高学员的学习兴趣与积极性,改善教学效果,具有很高的实用价值。