基于多触点定位和状态校验的虚拟装配技术

2022-01-26 09:38吴学毅文德志
包装工程 2022年1期
关键词:碰撞检测表达式校验

吴学毅,文德志

基于多触点定位和状态校验的虚拟装配技术

吴学毅,文德志

(西安理工大学 印刷包装与数字媒体学院,西安 710048)

提供一种具有通用性的虚拟装配零部件设计方法,能够实现多位置、多旋转状态判定的装配方式与灵活的装配序列规划。首先使用多个定位触点进行碰撞检测来确定零件的位置和旋转状态,然后使用二进制整数作为零件状态码表达零件间的装配依赖关系,最后通过二进制运算表达式的校验算法限制零件状态码的取值决定零件是否可以装配,从而达到装配序列的约束规划。在装配方式上使得所有零件具有通用的设计方案,针对特殊零件只需要设置特殊定位触点,在装配序列规划上实现了多种灵活的装配顺序设计,装配逻辑关系表达更加清晰。通过多触点定位和状态校验可以实现具有很好通用性和扩展性的虚拟装配技术。

多触点定位;状态校验;碰撞检测;虚拟装配

随着虚拟现实技术的诞生,虚拟装配技术逐渐成为工业制造领域一个不可或缺的部分。

有研究表明,虚拟训练和真实训练没有太大的显著差异,可以减少对教学资源的严重依赖,最终降低实际装配过程中由于经验不足而造成的安全隐患[1]。虚拟装配是将现实装配过程在计算机中进行模拟仿真,利用计算机仿真和虚拟现实技术,通过建模仿真来实现装配过程[2],是虚拟设计与制造的一个组成部分[3]。迄今为止,虚拟装配技术已经发展得相当成熟,以VRP为基础的许多虚拟装配仿真系统[4—5]都实现了通过鼠标、键盘操作在虚拟场景中漫游及控制装配流程动画的播放[6—7],通过与CAD等专业机械建模软件结合[8—11]制作高精度的零件模型,最终在计算机上演示装配过程,也可以结合不同的虚拟现实设备实现半沉浸式的虚拟装配系统[12],但大多数在交互方式上沉浸感较低。随着虚拟现实设备的发展,交互方式也更为逼真、多样。以Kinect体感交互为基础的虚拟装配系统[13—16]通过手势识别进行零部件的装配操作,而以HTC Vive设备为基础的虚拟装配系统[17—18]则通过手柄交互方式对零、部件进行抓取实现装配操作,具有较高的沉浸感。对于零件定位都采用简单的碰撞检测方式,在装配序列规划上都采用类似逻辑表的结构进行存储,不具有良好的扩展性和对装配约束关系描述的灵活性,对于复杂的虚拟装配系统不适用。

文中提出一种具有高扩展性和灵活装配约束关系描述的虚拟装配技术,在实现高度沉浸感的虚拟装配系统过程中可以通过该技术设计所有零部件特有的装配方式,并且在复杂的虚拟装配系统中占用资源较少,可以实现非常复杂的装配序列描述,对于批量生产的零件(如齿轮)和对称特征的零件也都具有特殊的处理方式。

1 基于多点定位和状态校验的虚拟装配技术设计

文种采用插头和插孔的抽象方式来表达零件的装配关系,通过多触点进行零件定位,并用状态码来实现装配逻辑的过程表达。

1.1 装配插头和装配插孔

在虚拟装配过程中,许多零件与其对应的装配位置间存在平移和旋转关系,因此可借鉴日常生活中插头和插孔的安装关系,将零件抽象为插头,而将装配位置抽象为插孔,见图1。触点存储安装定位的局部坐标点,每个插头可以存在多个触点,通过多个定位触点在空间上相对位置的组合可以表达零件所具有的特殊装配关系信息,如对称轴、对称面等。装配位置是插头的复制,在装配过程中只需要判断零件的所有触点是否与装配位置的触点发生碰撞。而具有对称特性的零件也可以使用对称特性的触点,这样在零件进行装配操作时,旋转状态的判断也更加灵活。

1.2 零件与装配位置的配合

在虚拟装配过程中需要确定一个零件是否装配在正确的位置上,对于具有对称特性的零件,旋转状态唯一,判断过程会十分复杂。文中提出一种多触点定位的装配约束关系描述方法,使用多个定位触点用于确定零件的三维空间位置和旋转状态描述。定位触点是零件局部坐标系下的一个固定点,会跟随零件移动和旋转而发生位置改变。装配位置具有与零件一一对应的定位触点信息(触点数量和局部坐标系的坐标值),还具有零件装配后的位移和旋转信息,通过这些信息可以确定装配位置的定位触点的世界坐标。在装配过程中,只需要确定零件所有定位触点与装配位置定位触点是否发生碰撞,即可确定零件是否到达了正确的装配位置上。零件与装配位置之间的联系见图2。

图1 装配插头与装配插孔

图2 零件与装配位置的联系

在图2中零件具有2个原点对称的定位触点,表示零件是一个轴对称类型的零件,此时零件在对称轴方向上任意角度旋转都不会改变定位触点的位置,不会影响最终的定位判断。并且在与装配位置的定位触点配合时,定位触点的对应方式可以有2种情况(实线、虚线2种箭头),此时零件在对称轴方向上还具有对称特性,齿轮和圆轴类型零件就具有这种形状特征。

在装配过程中,可以使用碰撞检测判断零件定位触点是否与装配位置定位触点的世界坐标位置在一定差值范围内。当零件所有定位触点与同一装配位置的定位触点发生碰撞且其差值均在指定范围内时,表示该零件放置在指定的装配位置上。为了表达更为复杂的零件形状,定位触点的数量会不断增加,而每个点都需要进行碰撞检测,对系统性能的需求也会提高,因此可以为定位触点添加一个用于区分对应装配关系的信息,即颜色信息,减少匹配定位触点的数量。在零件与装配位置进行配合时,只允许相同颜色的定位触点发生碰撞检测。

1.3 零件数据结构与装配位置状态码

零件需要记录定位触点的信息以及装配位置的信息,在现实装配过程中,会有许多的批量生产的零件(如齿轮、螺丝、螺母等),这些零件在虚拟装配系统中可以装配在多个位置上,因此对于同类型零件可以使用相同的定位触点信息和一个装配位置表(该表记录了该零件所有允许的装配位置)。在装配过程中只考虑零件的所有定位触点在碰撞检测时(为了提高系统性能,碰撞检测只会在该零件移动过程中计算)是否与装配位置表中的任意一个装配位置所有的定位触点发生碰撞,零件便可以装配在装配位置表中的任意一个位置。该方法有效地减少了对系统计算资源的需求。

在装配位置表中,每个节点记录了一个装配位置,存储该装配位置的坐标和旋转值。同时使用装配动作表存储在该装配位置进行装配操作需要完成的装配动作。虚拟装配系统中对于装配先后顺序的规划通常采用预先设定的装配顺序表来控制零件的装配顺序,但在复杂的装配情况下会导致数据量过于庞大。文中提出一种基于状态校验的算法来表达装配逻辑关系,使用一个整数作为零件的状态码表示此时零件的状态,通过特定的校验算法判断该装配位置是否可以装配零件,可以则激活该装配位置,否则禁用该装配位置。零件与装配位置的装配关系描述数据结构见图3。

在图4中装配位置的校验模块实现了零件间装配先后顺序的逻辑关系表达。一个装配位置在判断是否可以装配零件时,需要先根据其他装配位置是否装配了零件来确定。文中用1和0表示一个装配位置是否装配了零件,而对于多个装配位置是否装配了零件可以使用1和0的组合(即二进制整数,表达了if-else的组合关系)表示,因此装配位置的状态码表示的是当前装配位置需要进行的逻辑判断条件中存在关联的其他装配位置的装配状态(是否装配零件)的组合,通过对该值进行判断可以计算出该装配位置是否符合可以装配零件的条件,从而激活或禁用该装配位置。

图3 零件与装配位置的装配关系描述数据结构

图4 装配位置状态码校验过程

在图4中,装配位置P需要在装配位置A,B,C都已经匹配了零件触点情况才可以进行零件的装配。将装配位置P的状态码的3位分别与装配位置A,B,C一一对应,当A,B,C分别装配了零件时,P的状态码都会发生一次变化,通过校验算法与P状态码的值判断装配位置P是否可以进行零件的装配。

1.4 校验算法与状态码位绑定

在图4中校验算法可以是直接对状态码的值进行判断,当值等于7(即111,表示ABC都装配了零件)时,装配位置P即可装配零件。当出现更为复杂的情况时,装配位置P符合条件的状态码的值可能不唯一,文中使用表达式来限制状态码的取值,该表达式称为校验表达式,由5部分组成,见图5。

图5 校验表达式的组成

1)状态码。代入表达式的装配位置的状态码值。

2)运算符。表达式的运算符号,可以是位与(&),位或(|)等。

3)运算数。用于表达式计算的二进制数。

4)判断符。表达式左边与右边的判断方式,可以是等于(=)和不等于(!=)。

5)运算结果。表达式的运算结果。

当装配位置状态码的值代入表达式中使得表达式成立,则表示该装配位置的状态码满足零件装配的条件,可以装配零件,可激活该装配位置,反之亦然。例如,校验表达式为:X|100=111(X为状态码),当装配位置的状态码值是 011(3)或111(7)时,则激活该装配位置,否则禁用。

装配位置状态码的每位允许绑定一个或多个装配位置,在程序中无法实时对状态码进行校验,则可利用事件委托机制(或设计模式中的观察者模式)实现装配位置在装配零件状态发生改变后自动通知对其绑定的状态位置更新。首先装配位置需要存储状态码每一位所绑定的装配位置(存储在图4中装配位置的校验模块中),使用字典嵌套的数据结构便可以表示,也可以方便快速查询。

在该字典嵌套结构中,零件对象指向图4的零件数据存储结构,而索引表示绑定的装配位置在零件对象的装配位置表中的索引值,而位所代表的是该装配位置需要与当前装配位置的状态码的哪一位进行绑定,见图6。当该装配位置装配零件时,当前装配位置的状态码的对应位会变成1,状态码的值也会发生改变,再进行状态码的校验运算去激活或禁用当前装配位置。装配位置装配零件时,会调用委托函数,通知它所绑定的所有装配位置,收到通知的装配位置会在状态码位的绑定表中查找需要改变的位,最终改变状态码的值并进行校验,具体过程见图7。

当装配位置A进行零件装配时,可以获取欲装配的零件对象,并且得到欲装配零件装配位置在该零件的装配位置表中的索引值,再调用该装配位置的委托列表中的所有函数(即所有状态码某一位与该装配位置存在绑定关系的装配位置),在函数中会查询装配位置B的状态码位的绑定表,将该位的值修改为1,状态码发生改变,校验状态码随后启用或禁用装配位置B。

通过以上方法,克服了其他装配方法需要设计复杂的或特殊的数据存储结构描述复杂、特殊、多样的装配逻辑和装配关系的需求,可以实现通用、多样、复杂的装配序列规划设计,从而减少了对系统资源的占用,在性能上也无需太大的计算量,在虚拟装配过程中可以实现更为真实的装配流程设计。

图6 状态码位的绑定

图7 装配事件委托调用过程

2 虚拟现实平台的多点定位和状态校验实现

文中在Unity3D平台结合C#语言、HTC Vive设备以及SteamVR插件,以印刷机收纸子系统为对象,设计并实现了印刷机收纸子系统的虚拟装配过程。该系统使用手柄抓取零件进行装配,利用球形碰撞器实现定位触点的碰撞检测,所实现的虚拟装配过程见图8—9。

图8 齿轮装配过程

图9 挡板轴装配过程

在零件装配方式上,一个齿轮可以装配在任意一个装配位置,轴类型零件也可以任意翻转;在装配序列规划上可以实现动态的装配顺序检测,可以装配的装配位置都会以绿色模型显示在场景中,每个零件装配完成后都会发生状态改变。

在该系统上完整实现了多点定位和状态校验的虚拟装配技术,并对该技术的数据结构和算法进行了封装,系统所占用的资源不多,代码可以移植到任意虚拟装配系统项目中,对于印刷机的其他子系统可以套用该方法进行装配过程设计,而不用修改数据结构和算法。

3 结语

虚拟装配技术可以为工业生产中的装配培训提供低成本且高效的教学方案,使用多触点定位和状态校验技术设计虚拟装配系统可以实现复杂的装配操作设计,如螺丝可以装配在任意一个螺母孔上。并且在装配序列规划上可以实现更为复杂的装配顺序,只需设计装配位置间的逻辑判断方式,在大型机械装配系统设计过程中具有很强的拓展能力,可以划分模块设计,修改也十分方便。所有的零件具有相同的数据结构,代码也无需重新设计,开发也将变得更为简单便捷,具有良好的通用性。

[1] STEVEN H, ARNO C, HENDRIK V L, et al. The Evaluation of an Elementary Virtual Training System for Manual Assembly[J]. Taylor & Francis, 2017, 55(24): 7496-7508.

[2] 张海云, 杨振宇, 赵国勇, 等. 基于VR的机床虚拟装配实验平台开发[J]. 智库时代, 2018(47): 295-296.

ZHANG Hai-yun, YANG Zhen-yu, ZHAO Guo-yong, et al. Development of Virtual Assembly Experiment Platform for Machine Tools based on VR[J]. Think Tank Era, 2018(47): 295-296.

[3] ZHAO Jun-hua. Study on the Application of the Virtual Technology in the Mechanical Assembly Process[C]// Proceedings of 2015 3rd International Conference on Mechanical Engineering and Intelligent Systems(ICMEIS 2015), 2015: 37-40.

[4] 何荣华, 薛繁旺, 陈冠峰. 基于VRP的客车在线模拟系统设计与应用[J]. 实验室科学, 2016, 19(4): 75-77.

HE Rong-hua, XUE Fan-wang, CHEN Guan-feng. Design and Application of a Passenger Car Online Simulation System based on VRP[J]. Laboratory Science, 2016, 19(4): 75-77

[5] 张潞, 司占军. J2205胶印机印刷结构虚拟装配平台设计与实现[J]. 包装工程, 2015, 36(21): 142-146.

ZHANG Lu, SI Zhan-jun. Design and Implementation of Virtual Assembly Platform for Printing Structure of J2205 Offset Press[J]. Packaging Engineering, 2015, 36(21): 142-146.

[6] 虞臣超. 虚拟现实技术在船体装配中的应用研究[D]. 厦门: 集美大学, 2014: 7-15.

YU Chen-chao. Research on the Application of Virtual Reality Technology in Ship Hull Assembly[D]. Xiamen: JiMei University, 2014: 7-15.

[7] 刘阳. 船舶管路虚拟装配及漫游系统研发[D]. 厦门: 集美大学, 2014: 17-23.

LIU Yang. Research and Development of Ship Pipeline Virtual Assembly and Roaming System[D]. Xiamen: JiMei University, 2014: 17-23.

[8] 李煜, 司占军. 基于VR-Platform的数码印刷机虚拟装配系统的设计与实现[J]. 电脑知识与技术, 2013, 9(33): 7599-7603.

LI Yu, SI Zhan-jun. Design and Implementation of Virtual Assembly System of Digital Printing Press based on VR-Platform[J]. Computer Knowledge and Technology, 2013, 9(33): 7599-7603.

[9] 杜棋东, 林楚燕. 机车车辆转向架虚拟仿真系统关键技术及实现[J]. 南方职业教育学刊, 2013, 3(6): 1-4.

DU Qi-dong, LIN Chu-yan. Key Technologies and Realization of Virtual Simulation System for Locomotive and Rolling Stock Bogies[J]. Journal of Southern Vocational Education, 2013, 3(6): 1-4.

[10] 袁云东. XPS板材生产线虚拟装配平台的研发[D]. 邯郸: 河北工程大学, 2014: 8-17.

YUAN Yun-dong. Research and Development of Virtual Assembly Platform for XPS Sheet Production Line[D]. Handan: Hebei University of Engineering, 2014: 8-17.

[11] 李煜. 数码印刷机仿真系统的设计与实现[D]. 天津: 天津科技大学, 2014: 15-27.

LI Yu. Design and implementation of Digital Printing Press Simulation System[D]. Tianjin: Tianjin University of Science and Technology, 2014: 15-27.

[12] ALI A, AL-AHMARI ABDULRAHMAN M, MUHAMMAD U A. Virtual Assembly of an Airplane Turbine Engine[J]. IFAC Papers On Line, 2015, 48(3): 1726-1731.

[13] 谢振清. 基于Unity3D的虚拟装配技术研究与实现[D]. 哈尔滨: 哈尔滨工业大学, 2018: 13-39.

XIE Zhen-qing. Research and Implementation of Virtual Assembly Technology Based on Unity3D[D]. Harbin: Harbin Institute of Technology, 2018: 13-39.

[14] 李亚东, 孙会来. 基于Unity3D的沉浸式机械手表虚拟仿真系统研究[J]. 佳木斯职业学院学报, 2020, 36(3): 177-179.

LI Ya-dong, SUN Hui-lai. Research on the Virtual Simulation System of Immersive Mechanical Watch Based on Unity3D[J]. Journal of Jiamusi Vocational College, 2020, 36(3): 177-179.

[15] 徐敏, 姚年春. 基于Kinect的装配仿真系统设计与开发[J]. 无线互联科技, 2017(18): 67-68.

XU Min, YAO Nian-chun. Design and Development of Assembly Simulation System Based on Kinect[J]. Wireless Internet Technology, 2017(18): 67-68.

[16] 张青, 徐宇杰, 郭庆, 等. 体感交互技术在航空发动机虚拟装配实验中的应用[J]. 实验技术与管理, 2016, 33(2): 100-105.

ZHANG Qing, XU Yu-jie, GUO Qing, et al. Application of Somatosensory Interaction Technology in Aero-Engine Virtual Assembly Experiment[J]. Experimental Technology and Management, 2016, 33(2): 100-105.

[17] 孔伟晶, 王鸿伟, 王荣海. 基于Unity的模型虚拟装配系统研究[J]. 软件工程, 2018, 21(8): 26-29.

KONG Wei-jing, WANG Hong-wei, WANG Rong-hai. Research on Model Virtual Assembly System Based on Unity[J]. Software Engineering, 2018, 21(8): 26-29.

[18] 董浩文. 基于Unity3D引擎秦始皇帝陵出土青铜马车虚拟装配系统的设计与实现[D]. 天津: 天津大学, 2018: 23-28.

DONG Hao-wen. Design and Implementation of a Virtual Assembly System for the Bronze Carriage Unearthed from the Mausoleum of Emperor Qin Shihuang based on Unity3D Engine[D]. Tianjin: Tianjin University, 2018: 23-28.

Virtual Assembly Technology Based on Multi-Point Positioning and Status Verification

WU Xue-yi, WEN De-zhi

(Faculty of Printing, Packaging Engineering and Digital Media Technology, Xi'an University of Technology, Xi'an 710048, China)

The work aims to provide a general design method for virtual assembly parts, so as to realize the assembly method of multi-position and multi-rotation state determination and flexible assembly sequence planning. Firstly, multiple positioning points were used for collision detection to determine the position and rotation status of the part, then the binary integer was adopted as the part status code to express the assembly dependency between the parts, and finally the verification algorithm of the binary operation expression was applied to limit the value of the part status code to determine whether the parts could be assembled, thus achieving the planning of assembly sequence. The assembly method made all parts have a general design scheme. For special parts, only special positioning points were required to be set. In the assembly sequence planning, a variety of flexible assembly sequence designs were achieved, and the assembly logic relationship was more clearly expressed. Through multi-point positioning and status verification, a highly versatile and extensible virtual assembly technology can be realized.

multi-point positioning; status verification; collision detection; virtual assembly

TP39

A

1001-3563(2022)01-0253-06

10.19554/j.cnki.1001-3563.2022.01.032

2021-05-18

吴学毅(1966—),男,硕士,西安理工大学副教授,主要研究方向为图形智能化处理与XR。

猜你喜欢
碰撞检测表达式校验
复杂多耦合仿真模型校验工具研究
基于动力学补偿的机器人电机力矩误差碰撞检测
使用Excel朗读功能校验工作表中的数据
电能表在线不停电校验技术
灵活选用二次函数表达式
精通文件校验的“门道”
基于Virtools的虚拟灭火系统碰撞检测设计与实现
基于Unity 3D的虚拟楼盘漫游和碰撞检测研究
基于Unity3D 的Android 飞行类游戏设计
寻找勾股数组的历程