基于Unity3D的焊接机器人虚拟现实仿真技术研究

2018-04-03 02:03高国雪焦向东周灿丰
组合机床与自动化加工技术 2018年3期
关键词:虚拟现实物体建模

高国雪,高 辉,焦向东,周灿丰,王 龙

(北京石油化工学院 深水油气管线关键技术与装备北京市重点实验室 能源工程先进连接技术研究中心,北京 102617)

0 引言

近年来,随着计算机技术的快速发展,虚拟现实技术得到了快速的发展与完善,其应用领域也在不断扩大,包括航空航天、科学研究、医疗卫生、教育培训、军事仿真、工程制造等领域[1]。针对于复杂、恶劣环境下的焊接作业,如盾构机的刀盘维修、核电设备的检修和维护等,对作业人员而言,存在极大的危险性。如果利用机器人进行相应的焊接作业,那么就可以大幅度提高作业人员的安全保障水平。但是由于工作环境和任务的复杂性,完全自动化的焊接机器人有时难以胜任相应的工作[2]。因此,将远程操作机器人与虚拟现实技术结合起来,不但可以实现焊接机器人的有效作业,还能降低操作人员的作业风险,故而得到了国内外的广泛关注和研究。

国外对于远程操作机器人与虚拟现实技术的研究起步较早。上世纪50年代,美国原子能委员会研究所研发了主、从机械手[3];美国人R Goertz首次研发出带有伺服技术的远程控制机器人系统。90年代以后,网络技术发展迅速,美国的加南洲大学开发了基于Internet来控制机械手的Mercury项目,来完成文物挖掘的模拟;西澳大利亚大学的Ken Taylor和James Trevenlyen两人通过Internet技术进行远程控制实现了机器人手臂抓取和移动物体的功能,并将机器人的位置与周围环境通过四台摄像机传送给远程用户[4];美国宇航局NASA实验室利用虚拟现实技术对哈勃太空望远镜进行仿真,用于对操作人员的训练[5]。

国内对这方面应用的研究起步较晚。1993年,哈尔滨工业大学实验室建立了主从式遥控机器人焊接实验系统,该系统的焊接过程由操作人员通过主机器人进行操控[6];北京航空航天大学开发了分布式虚拟现实应用系统与运行支撑环境-DVENET,并基于该环境开发了一系列用于军事演练系统的虚拟现实程序;沈阳自动化研究所开发了基于人机交互的水下机器人遥操作系统[7]。

综上所述,远程操作机器人与虚拟现实技术的研究取得了一些具有重大意义的成果。由此可见,基于虚拟现实技术的机器人系统的研究,是虚拟现实技术在工程制造中较好的应用。Unity 3D引擎是由Unity Technologies公司开发的能够支持多平台发布的专业虚拟现实引擎,其功能强大,具有很强的交互性,且自带物理引擎,使得开发周期大幅度缩短[8]。因此,本文选用Unity 3D平台进行虚拟现实技术的研究。

本文研究的技术路线如图1所示。主要内容是以一个6自由度的关节型焊接机器人为研究对象,在Solidworks和3ds Max环境下完成了机器人的三维建模及优化处理,然后导入到Unity 3D软件开发平台,通过人机交互界面的设计,实现了机器人的运动仿真功能,此外,还增加了虚拟机器人与实际机器人的同步及临场感功能、防碰撞检测功能。为虚拟现实技术在工业制造方面的应用提供了重要参考。

图1 本文研究的技术路线图

1 三维建模及优化处理

本文研究的虚拟现实系统是基于Unity 3D平台开发设计的,而Unity 3D本身具有非常简单的建模功能,该功能只能创建立方体、球体、胶囊体、圆柱体等简单基本几何体,无法构造精确的几何和装配模型,也无法精确表达真实机器人的位姿。在工程领域内,常用的三维建模软件有Autodesk Inventor、SolidWorks、UG 等。本文采用SolidWorks作为三维建模的平台,但由于其光照、渲染等功能较差,真实性模拟相对较弱,且能够输出的模型文件格式不能被Unity 3D直接使用,故需要采用3ds Max软件进行相应的调整和优化,并将模型转化为.FBX文件格式,以供Unity 3D环境使用[9]。如图2所示,是在Unity 3D中可以使用的机器人三维模型创建流程图。

图2 机器人三维模型创建流程图

由于本虚拟现实系统需要在Unity 3D环境下实现对焊接机器人的运动控制,因此,不能对机器人进行整体建模,应根据机器人的自由度及运动关节进行局部建模。针对该6自由度焊接机器人而言,将其拆分为7部分,包括基座、腰部、大臂、小臂、回转关节、手腕、工装法兰与焊枪。在SolidWorks中分别对每个部分进行建模,并经3ds MAX进行优化处理,最后导入至Unity 3D中,对相应的关节进行材质添加及调整。需要注意的是,为了保证模型在三个软件平台中的尺寸以及比例的一致性,需将SolidWorks以及3ds MAX中的系统单位均设置为厘米,这样导入Unity 3D的模型才会与SolidWorks中原始创建的模型一致,从而方便对机器人进行运动控制。

2 模型及场景加载

虚拟现实系统包括虚拟机器人和虚拟环境两部分,虚拟环境又包括光照、工作平台和待焊工件。如图3所示,将.FBX模型文件加载至Unity 3D,在Project目录下可以看到模型文件。这些模型文件可以被加载至场景中,然后,通过Unity 3D所支持的语言脚本来控制它们的运动。

图3 Project目录下的模型文件

为了使场景更具有真实感,需要添加光源,添加完光源的物体会出现阴影、反射等真实世界中的现象[10-11]。本虚拟现实系统使用平行光源照亮场景中的机器人,如图4所示,是6自由度焊接机器人在场景预览下的模型文件,可以明显看到产生的阴影和反射现象,此外,还添加Plane作为地面,并赋予其材质属性。

图4 Unity 3D场景预览下的机器人

在实际机器人的运动过程中,机器人的各个关节具有层级关系。当机器人基座运动时,基座以上的腰部、大臂、小臂、手腕等关节都会随之运动;当机器人腰部运动时,腰部以上的大臂、小臂、手腕等关节都随之运动,而基座静止。同理,虚拟机器人也具备这个特点,其在Unity 3D环境下的层级关系如图5所示。上一层对象是下一层对象的父物体,下一层对象是上一层对象的子物体[12]。子物体跟随父物体运动,即子物体继承父物体,但子物体自己的运动不会影响父物体,即父物体不会继承子物体。父物体的子物体的子物体,也是该父物体的子物体,如机器人的腰部是手臂的父物体,手臂又是手腕的父物体,那么腰部也是手腕的父物体。

图5 Unity 3D中机器人的层级关系图

3 人机交互界面设计及运动仿真

人机界面的设计以及机器人的运动仿真,需要对其进行程序设计。Unity 3D支持C#、Java和Boo这3种语言的编程,均是基于.NET平台开发运行。本虚拟现实系统采用C#语言进行程序设计[13],IDE(集成开发环境)选用Microsoft Visual Studio 2013,也可以使用Unity自带的MonoDevelop[14],如图6所示。程序中的人机界面采用Unity 3D自带的插件NGUI进行开发设计,可以提高人机界面的开发效率。

图6 IDE选择界面

在虚拟现实系统中,虚拟机器人模型可以给操作人员反馈机器人的位置与姿态,而人机交互界面负责机器人运动信息的反馈以及机器人的控制。如图7所示,人机交互界面的功能包括通信状态,工作信息,关节速度显示,摄像机视角和机器人控制。通信状态是用来判断与实际机器人的通讯是否成功;工作信息分为任务名称和工作模式;关节速度显示是将机器人各个关节的瞬时速度显示出来;摄像机视角用来观察虚拟现实场景中的机器人及周围环境,包括自由移动的虚拟摄像机和附着在机器人焊枪工装上的虚拟摄像机;机器人控制设置了急停与恢复功能,程序中采用两个Button进行控制。通过编写简单的运动控制代码并挂载于场景中的物体上,就可以实现机器人各运动关节相应的运动。

图7 人机交互界面的功能

如图8所示,将实际机器人的控制程序按照TCP/IP协议进行通信,然后把与机器人通信的客户端代码编译为DLL文件,再由Unity 3D的虚拟现实程序进行调用,可以得到机器人的运动信息。利用所得的机器人的数据可以实现对机器人的控制以及对人机交互界面内容的管理,操作人员可以通过人机界面给机器人发送指令,并实时获取机器人的运动信息。如图9所示,是某一瞬时状态下该焊接机器人的运动仿真图,从GUI界面可以看到实时的机器人运动信息。

图8 Unity 3D中获得机器人数据的方案

图9 焊接机器人的运动仿真图

GUI界面及运动仿真实验表明,通过程序设计和通信功能可以实现对机器人的控制,并能够在GUI界面实时反馈机器人的运动信息,满足了对焊接机器人进行虚拟现实仿真的要求,为降低焊接过程中操作人员的作业风险提供了依据。

4 同步功能与临场感的实现

虚拟机器人想要与实际机器人实现同步运动,需要程序始终与实际机器人的控制程序进行通信,通过通信获得的所需数据,对虚拟机器人的运动进行每一帧更新。

在Unity的生命周期中不断更新的函数包括Update()、FixedUpdate() 和LateUpdate()。Update函数的调用频率与设备的性能和渲染的复杂程度有关,在不同的设备上其执行间隔也不同,当设备性能较高、渲染较为简单时,Update函数的执行间隔较小,反之较高;FixedUpdate函数是在固定的时间间隔内运行,不会受到计算机性能的影响,且其运行时间间隔是可更改的;LateUpdate函数与Update函数相似,不同的是LateUpdate函数会在Update函数执行完毕后再运行。因此,综合考虑,本程序将更新虚拟机器人的相关方法都放在FixedUpdate函数中。

在三维空间中,描述一个物体的位置与姿态需要x,y,z三个坐标轴的位移量以及围绕三个坐标轴的旋转量。根据该焊接机器人运动的特点,每个机器人的关节都是围绕一个固定的旋转轴进行旋转。因此,只要在保证虚拟机器人关节局部坐标系正确的情况下,同步围绕该固定轴的旋转量,就可以实现虚拟机器人关节与实际机器人关节的同步。本程序使用Transform类自带的旋转成员方法Rotate函数来实现模型旋转[15]。

如图10所示,是虚拟机器人与实际机器人在某一运动状态下的位姿对比图。从图中可以看出,虚拟场景中的机器人、焊枪与实际环境中的位姿完全相同,即虚拟现实监视程序可以将机器人的运动如实重现,表明本虚拟现实系统具备同步功能。

图10 虚拟机器人与真实机器人位姿对比图

此外,机器人、变位机、焊接工件等三维模型与实际对象均是1:1的真实尺寸,而且可以通过移动、旋转、缩放等操作功能从不同视角对虚拟机器人进行观察,使操作人员能够直接观察到焊接机器人的实时运动状态[16],表明本虚拟现实系统具备较好的临场感。

5 碰撞检测功能的实现

碰撞检测功能在本虚拟现实系统中是非常重要的技术。在本系统中,机器人与障碍物和待焊工件之间的碰撞检测功能,是操作人员能够远程避免碰撞,顺利完成焊接任务的基础。

本虚拟现实系统的碰撞检测算法采用层次包围盒算法[17]。其功能实现主要有两个要点:其一,当机器人与环境物体之间的距离小于一定值时改变机器人模型的颜色为黄色,将该距离作为最小检测距离,设置最小距离包围盒;其二,当机器人与环境物体之间发生碰撞时,停止机器人的运动并改变机器人模型的颜色为红色,此时设置的是紧贴物体的碰撞包围盒。

在Unity 3D中,当包围盒发生相交、处于相交状态和相交状态取消时,会分别调用OnTriggerEnter()、OnTriggerStay()、OnTriggerExit()三个函数[18],将碰撞时所要执行的逻辑分别加入到这三个函数中,从而实现碰撞检测功能。如图11所示,由于焊枪与待焊工件的位置很近,程序中的碰撞检测功能检测到这个现象,将虚拟场景中的焊枪颜色变为黄色,从而对操作人进行提醒,避免事故的发生,这表明本虚拟现实系统具备防碰撞功能。

图11 虚拟现实系统的防碰撞功能

6 结束语

本文主要对一个六自由度关节型焊接机器人进行了虚拟现实技术的研究,通过对其进行SolidWorks三维建模以及3ds MAX优化处理,实现了基于Unity 3D引擎、使用C#语言开发的虚拟现实系统的设计。随着虚拟现实技术的不断发展和完善,实时的虚拟仿真与监控技术将成为主要的发展趋势。一般而言,焊接作业现场的工作环境较为复杂,且操作人员的作业风险较大,因此,焊接机器人虚拟现实技术的研究,对焊接机器人作业时的远程监控具有重要的参考价值。

[参考文献]

[1] 卞峰,江漫清,桑永英. 虚拟现实及其应用进展[J].计算机仿真, 2007, 24(6):1-4.

[2] 刘进志,智小慧,郭京波. 盾构掘削刀具简述[J].工程机械, 2009, 40(6):50-53.

[3] Zhao J, Gong Q M, Eisensten Z. Tunnelling through a frequently changing and mixed ground: A case history in Singapore [J]. Tunnelling and Underground Space Technology, 2007, 22(4):388-400.

[4] 霍明霞, 齐文炎. 基于增强现实的机器人遥操作系统[J]. 福建电脑, 2010, 26(4):120-121.

[5] Lathan C E, Tracey M. The Effects of Operator Spatial Perception and Sensory Feedback on Human-Robot Teleoperation Performance[J]. Presence, 2006, 11(4):368-377.

[6] 唐奥林. 面向主从式微创外科手术机器人的遥操作运动控制策略研究[D]. 上海:上海交通大学, 2014.

[7] 吴昊. 基于虚拟现实的并联机器人仿真系统开发[D]. 沈阳: 东北大学, 2004.

[8] Unity Technologies. Unity 5.X从入门到精通 [M].北京: 中国铁道出版社, 2016.

[9] Bruno F, Bruno S, Sensi GD, et al. From 3D reconstruction to virtual reality: A complete methodology for digital archaeological exhibition [J]. Journal of Cultural Heritage, 2010, 11(1):42-495.

[10] 戴茜.基于Unity3D的虚拟故园系统开发与实现[D]. 北京:北京林业大学, 2014.

[11] Katz N, Cook T, Smart R. Extending web browsers with a unity 3d-based virtual worlds viewer [J]. Internet Computing, IEEE, 2011, 15(5):15-21.

[12] 王大虎,刘海洋,王敬冲. 基于虚拟现实的采煤机培训系统开发[J]. 计算机仿真, 2015, 32(6):262-265.

[13] Helbig C, Bauer H S, Rink K, et al. Concept and workflow for 3D visualization of atmospheric data in a virtual reality environment for analytical approaches [J]. Environmental Earth Sciences, 2014, 72(10):3767-3780.

[14] Okita A. Learning C# programming with Unity 3D [J]. English Journal, 2015(1):249-267.

[15] Creighton R H. Unity 3D game development by example: Beginner′s guide: A seat-of-your-pants manual for building fun, groovy little games quickly [M].Packt Publishing, 2013.

[16] 岑洎涛, 张平, 何超杰,等. 基于Unity3D的工业机器人跨平台可移动离线编程系统的研究和开发[J]. 组合机床与自动化加工技术, 2016(10):99-104.

[17] 杨壹斌, 李敏, 解鸿文. 基于Unity3D的桌面式虚拟维修训练系统[J].计算机应用,2016,36(z2): 125-128.

[18] Matthias L, Katharina K. Content creation for a 3D game with Maya and Unity 3D[C]. Proceedings of CESCG 2011: The 15th Central European Seminar on Computer Graphics (non-peer-reviewed), 2011.

(编辑李秀敏)

猜你喜欢
虚拟现实物体建模
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
虚拟现实技术在中学校园中的应用
深刻理解物体的平衡
我们是怎样看到物体的
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
风口上的虚拟现实
虚拟现实技术向科幻小说借灵感
为什么同一物体在世界各地重量不一样?
三元组辐射场的建模与仿真