基于Sphere-EBB算法的数控机床虚拟拆装系统设计

2023-02-21 01:55王建立殷民艇石瑞敏
机械设计与制造工程 2023年1期
关键词:手轮碰撞检测数控机床

张 星,董 磊,王建立,殷民艇,石瑞敏

(1.中北大学机械工程学院,山西 太原 030051)(2.长治市潞安合力机械有限责任公司,山西 长治 046012)

随着“工业4.0”和“中国制造2025”战略的提出,数控机床产业作为中国先进制造业的重要支柱产业,呈现出多功能、定制化和智能化的发展趋势。装配作为检验设计和制造合理性的重要环节,在传统制造中消耗了大量的时间和经济成本,故而通过虚拟装配进行仿真测试成为缩短产品研发周期的重要途径。

碰撞检测是虚拟装配中的一项关键技术,如何提高碰撞检测的实时性和精确度成为国内外学者的重要研究课题。Jiménez等[1]首次对机床模型采用包围球方法快速实现碰撞检测,但检测精度过低;Seiler 等[2]采用有向包围盒(oriented bounding box,OBB)进行结构嵌套的方法加快离散CD(collision detection)算法检测速度,但检测精度较低;许荣等[3]采用基于二叉树的OBB算法模拟机床加工过程,提高了碰撞检测的精度;成居宝等[4]提出基于模型的倾斜度选择AABB(axis-aligned bounding box)或OBB,提高了机床碰撞检测的效率;谢新慧等[5]提出了AABB-OBB双层次混合碰撞检测算法,在保证效率的同时,提高了检测精度。

针对数控机床仿真系统的研究,学者们通过各种算法提高了碰撞检测的效率,保证了虚拟装配环境的实时性和沉浸感,然而碰撞检测效率和精度仍有一定的上升空间。本文在前人算法的基础上进行改进,提出一种Sphere-EBB双层次混合碰撞检测算法,并将其应用到数控机床虚拟仿真系统中。

1 碰撞检测算法

1.1 Sphere-EBB算法

1.1.1包围球

包围球简称为 Sphere,其结构简单,拟合性低,碰撞检测速度快。Sphere可以表示为:

R={(x,y,z)|(x-Ox)2+(y-Oy)2+(z-Oz)2

(1)

包围球球心O的坐标为:

(2)

包围球的半径r为:

(3)

式中:R为包围球的区间;x,y,z为变量坐标;xmax,xmin,ymax,ymin,zmax,zmin分别为模型投影到x,y,z轴的最大值和最小值。

Sphere-Sphere 相交原理:若两包围球球心间距离小于其半径之和,则两包围球相交。

1.1.2EBB

EBB与 AABB和 OBB 等包围盒相比,具有更高的拟合性,适合碰撞检测精度高的运动环境,可以用式(4)表示:

(4)

EBB中心坐标:

(5)

椭球形EBB半轴长:

(6)

式中:a,b,c是正实数,分别为椭球三条轴长度的一半,它们决定了椭球的形状。

1.1.3混合层次包围盒算法

在虚拟仿真环境中,各种单一层次的包围盒算法都存在一定的局限性,无法兼具高碰撞精度和高碰撞效率。混合层次包围盒算法通过对树型结构进行优化,将多种不同包围盒的优势结合起来,使其整体性能优于单一层次包围盒[6-7]。本文将EBB树下的根节点替换成Sphere,在保证碰撞检测精度高的前提下,提高了碰撞检测的效率。

1.2 算法实现流程

Sphere-EBB算法分为3个阶段:预处理阶段、初步检测阶段、精确检测阶段[8],其算法流程如图1所示。

图1 算法流程

在预处理阶段,首先将模型输入到虚拟场景中,构建Sphere作为树的根节点进行预检测,若模型的Sphere间没有相交,则判定一定不会碰撞,进行下一帧预检测;若Sphere相交,则进入初步检测阶段。构建EBB作为树型结构的叶节点进行相交测试,若EBB间没有相交,则没有发生碰撞,进入下一帧检测;若EBB相交,进入精确检测阶段,进行三角形基元的相交测试。EBB相交,则模型发生碰撞,在虚拟场景中显示碰撞信息。

2 仿真系统设计

2.1 总体设计

本文以CK6140S数控机床为原型,利用UG软件对数控机床进行三维建模,采用3DMax软件对数控机床的场景和材质进行渲染,使用Unity 3D作为虚拟拆装系统的开发引擎进行功能模块开发,最后通过Visual Studio平台编写C#脚本实现场景的跳转,搭建一套功能完备、沉浸感强的虚拟拆装系统,具体流程如图2所示。

图2 总体设计

2.2 数控机床模型

2.2.1UG建模

数控机床结构复杂,主要由外壳防护罩、主轴系统、进给系统、机床床身、刀架、尾座6部分组成。本文按照先构建基础零件,再逐级装配成上一级部件的方法,在外壳防护罩、主轴系统、进给系统、机床床身、刀架、尾座6大部件建模完成后,最后进行整机装配,如图3所示。这样既可以防止绘制零件时出现缺失,提高装配效率,又可以简化后续装配路径规划。

图3 装配结构树

零件建模时通常先对平面几何形状进行绘制,然后通过拉伸或旋转等命令构建成零件的一个个子物体,最后形成所需零件。但用户在实际拆装过程中并不是对零件的子物体进行拆装,子物体的数量过多会严重影响系统的运行速度。本文针对实际拆装零件需求,调用UG软件中的布尔合并算法对子物体进行合并,对模型进行简化,以减少系统内存消耗。

2.2.2模型渲染与优化

将零件模型导入到3DMax时会生成大量的三角面片,导致模型在Unity 3D中运行时消耗大量计算机内存,影响场景画面的流畅度,降低用户的沉浸感,同时模型导入后部分零件的材质会丢失,因此需要对模型进行优化,去除多余的三角面片,对部分零件进行贴图和材质的添加,增强模型的真实性。渲染后的模型如图4所示。

图4 模型的渲染与优化

2.3 功能模块的实现

2.3.1拆卸动画演示

Unity 3D虽然可以利用系统自身的动画系统Animation[9]制作动画,但其功能单一,使用起来很不方便。Xdreamer插件是一款中文交互编辑器,功能强大,且无需编程。首先根据机械工艺准则和装配信息,生成模型的拆卸序列;其次通过Xdreamer工具库中的transform组件对零件设置初始位置和终止位置,自动生成路径动画;然后通过UGUI功能为演示界面添加拆卸步骤文本框和Button组件;最后通过Xdreamer状态机进行关联。图5所示为具体的演示界面。

图5 Android端演示界面

2.3.2场景漫游

场景漫游功能主要通过Steam VR Plugin资源包来实现[10]。从Steam VR Plugin的资源包中调用预制体CameraRig组件到厂房场景中,该组件由Controller(left)、Controller(right)、Camera(head)3个子物体组成,Camera(head)将场景数据传输到头戴式设备中,两个HTC Vive手柄分别与Controller(left)、Controller(right)进行关联,生成第一人称操作视角;将厂房环境分为可传送层和不可传送层,并在相应地点放置Teleportpoint预制体;将相应的脚本挂载到Controller(left)上,用户就能通过手柄在厂房场景中实现自主漫游,如图6所示。

图6 VR头盔进行场景漫游

2.3.3零件装配与拆卸的碰撞检测

零件的碰撞检测是手动装配与拆卸中的一项关键技术,当用户通过鼠标或手柄对零件进行移动或旋转时,需要对不同零件之间进行碰撞检测并及时反馈碰撞信息,若信息反馈不及时,就容易出现模型穿透现象[11]。以尾架手轮为例,图7(b)所示为EBB算法碰撞检测场景,当手轮运动到指定的装配位置时,系统无碰撞反馈;手轮继续向前运动,当手轮与尾架盖出现部分重叠时,系统才提示已发生碰撞,这是因为手轮在移动或旋转过程中,EBB树遍历过程复杂,造成EBB更新不及时、信息反馈滞后导致的。图7(c)所示为Sphere-EBB混合碰撞检测算法的检测场景,当手轮获得运动命令时,对场景中的零件模型构建Sphere,由于Sphere不需要更新,因此在手轮运动过程中可快速排除一定不相交的零件,只针对发生相交的零件快速构建EBB,同时遍历EBB树获取相交部分的基元信息,对基元信息进行精确检测,确保碰撞信息的准确性。

图7 两种算法的碰撞检测比较

由图7可知,相比EBB碰撞检测算法,采用Sphere-EBB算法对树型结构进行优化,提高了碰撞信息的准确性和碰撞检测的效率。

2.3.4考核评估

考核评估模块是对用户拆装知识掌握程度和实操水平进行系统评估的模块。该模块界面主要由答题表格、工具包、答题与跳过按钮、信息提示4部分构成。以数控机床的主轴系统为例,首先选择拆卸零件和工具,选中的零件和工具高亮显示,然后选择答题按钮,当拆卸操作正确时,系统将自动播放拆卸动画,提示“零件拆卸正确,请进行下一步操作”;当操作不正确时,系统提示“零件拆卸错误,还剩2次答题机会”,可重新选择零件和工具;当错误次数达到3次时,系统直接判定拆卸失败,自动播放相应的拆卸动画;最后系统对考核时间、零件的选取、工具的应用等因素进行综合评估,给出相应成绩和错误步骤,如图8(b)所示,并将数据传输到用户个人信息库。

图8 PC端考核评估模块

3 系统测试与发布

3.1 性能测试

在数控机床虚拟仿真系统发布之前,需要对系统的整体性能进行测试。Profiler是Unity 3D中内置的检测工具[12-13],可以直观反映系统中各个组件与资源所占用内存的情况,如图9所示。

图9 系统内存占用情况

测试结果表明:系统在运行时,场景中不同功能实现逻辑正确合理,交互响应迅速,无卡顿和黑屏现象;UI界面布局科学合理,符合人性化操作习惯;功能实现过程运行流畅,帧数稳定,无眩晕感,满足数控机床的开发需求。

3.2 系统发布

系统测试完毕后打包发布。以PC端为例,点击File进入Building Settings界面对系统的各个子场景进行排序,并设置主场景;然后进入Player Settings进行相关参数设置;最后以EXE格式发布到PC端。

4 结论

本文通过对三维建模技术、碰撞检测技术、人机交互技术等关键技术的研究,开发出一款以Unity 3D为开发引擎、支持多平台硬件设备的数控机床虚拟拆装系统。其主要成果如下:

1)针对虚拟场景中易出现模型穿透的问题,提出Sphere-EBB混合包围盒算法,通过对EBB树型结构进行优化,利用Sphere无需更新的特性,快速排除不相交的模型,提高了碰撞检测的效率;

2)本文开发的数控机床虚拟拆装系统集场景漫游、动画演示、手动装配与拆卸、考核评估等功能于一体,满足实际开发的需求,有利于缩短数控机床产品的研发周期。

猜你喜欢
手轮碰撞检测数控机床
全新预测碰撞检测系统
数控机床电子手轮工作原理及故障分析
阀门手轮应力模拟分析
基于BIM的铁路信号室外设备布置与碰撞检测方法
数控机床的节能应用
高档数控机床数据采集应用
数控机床电气系统的故障诊断与维修
PLC在数控机床中应用
基于生产改造的数控铣床手轮加装策略研究
空间遥操作预测仿真快速图形碰撞检测算法