基于Unity3D的工业机器人虚实孪生控制仿真研究
2022-05-11刘富春柏受军郝旭耀郑群现
刘富春,柏受军*,郝旭耀,郑群现,江 明
(1.安徽工程大学 电气工程学院,安徽 芜湖 241000;2.安徽工程大学 高端装备先进感知与智能控制教育部重点实验室,安徽 芜湖 241000;3.安徽佐标智能科技有限公司 软件研发部,安徽 芜湖 241000)
工业机器人是综合机械、电子、控制、计算机、传感器、人工智能、控制技术等多种学科的先进技术于一体的复杂智能机器[1-2]。随着工业4.0时代的推进,工业机器人的应用领域和规模越发广泛,与此同时,机器人的运动控制也面临着高适应性、快速设计变化、数字信息技术和更灵活的技术劳动力培训的压力[3-4]。
由于机器人价格比较昂贵[5],而且需要定期维护,成本较高,在教学与科研中难以保证为学生提供更多的实体机器人实验机会。同时,市面上大部分机器人模型设计的参数不尽相同,进行示教运行的机器人运动控制系统也大不一样。目前,工业机器人运动控制仿真软件大多数是自主开发的离线仿真示教软件,可以在计算机上再现机器人的三维虚拟世界,实现机器人离线编程、三维运动轨迹的规划以及动态仿真。但是特定款式的机器人系统编程开发仿真成本高、仿真手段单一,对技术人员技术水平的要求也很高。
本文所进行的工业机器人运动虚实孪生控制仿真研究,是基于Unity3D技术进行的机器人控制系统半实物仿真。在关于工业机器人半实物系统仿真的研究中,文献[5]以三菱工业机器人为原型建立了仿真平台和机器人控制器之间的TCP/IP通信,设计了平台的用户图形交互界面,交互实现了机器人的正向和逆向运动在线控制和实时仿真。文献[6]研发的水下机器人半实物仿真系统采用同一地面控制终端作为三维仿真系统和机器人控制系统的统一指令输入源,以实现虚拟对象和机器人本体的同步工作,可对系统进行实时监测与调参。文献[7]为了解决低刚度轻型机械手的高精度多关节同步运动控制,提出了一种基于以太猫实时以太网的网络分布式时钟同步方法。在关于工业机器人的离线编程系统的研究中,文献[8]使用离线编程技术结合计算机辅助技术,在机器人不脱离生产线的情况下,通过虚拟仿真验证运动轨迹后自动生成实体机器人作业程序。文献[9]在传统几何参数误差标定的基础上,建立了耦合重力参数的机器人运动学误差模型,实现了机器人控制指令的离线修正。关于工业机器人在线仿真研究方面,文献[10]在主端虚拟仿真预测系统中建立了从端环境及机器人的虚拟模型,根据操作者命令对从端机器人的状态实时预测,同时根据从端现场检测到的机器人状态对虚拟机器人进行在线修正。文献[11]采用工件模型的DXF(Drawing Exchange Format)文件自动提取方法解析出作业信息,并为实现任务级作业提供了一种高效的人机文交互方式。
本文以Unity3D引擎为开发平台,以C++和C#为开发语言,设计并开发了一种工业机器人运动虚实孪生控制仿真系统。该系统采用Unity建模原理搭建虚拟六轴机器人,可多角度观测虚拟机器人运动姿态,观测性良好;利用机器人运动学理论和Modbus/Tcp通讯原理建立实体机器人和虚拟机器人之间的实时通讯传输和数据显示,实现了虚拟机器人孪生映射实体机器人运动。
1 系统框架概述
本文所述的工业机器人虚实孪生仿真系统如图1所示。由图1可知,系统主要包括两部分,首先是实体机器人控制系统部分,此系统以实体示教器输入指令信号,实体控制器接收信号并进行指令运行,发送信号至伺服驱动,从而驱动六轴机器人运动。其次是虚拟机器人仿真系统部分,此部分主要包括虚拟解析器的设计与验证、状态帧的数据组成以及虚拟机器人的三维模型搭建。
图1 虚实孪生机器人运动控制系统总体框图
本文旨在体现虚实同步运动仿真,内容是虚拟机器人仿真系统映射实体机器人控制系统,即虚拟仿真系统中仿真器以Modbus/Tcp通讯协议读取实体机器人控制系统中机器人控制器的指令数据,得到数据帧进行解析,在Unity3D虚拟引擎里以状态帧的方式将物理状态输出和物理状态反馈来驱动机器人模型运动。以固定频率数据帧的读取来确保虚拟机器人与实体机器人的运行姿态保持一致,实现机器人虚实孪生运动的实时性与同步性。
2 仿真系统的建模
2.1 虚拟六轴机器人的建模
仿真系统里的虚拟六轴机器人建模参照图2中EFORT ER3-600型号六轴机器人[12]。D-H参数表如表1所示。
图2 EFORT ER3-600机器人各关节尺寸和工作空间(单位:mm)
表1 EFORT ER3-600机器人D-H参数表
使用Unity3D虚拟引擎平台[13],依据机器人参数进行建模,具体流程如下:
(1)在Solidworks中依据实际参数1∶1对机器人模型进行绘制;
(2)利用3ds Max合并机器人孤立顶点进行检查和移除,并对模型进行处理以减少冗余的面;
(3)使用贴图(Texture)和着色器(Shader)相配合,完善机器人模型、信号模型的材质、纹理以及灯光效果等信息的添加;
(4)将所有模型的初始坐标设置为原点,将模型中的轴设置为对象的中心;
(5)对项目中的模型添加刚体(Rigidbody)属性,勾选“Use Gravity”属性实现碰撞效果;
(6)添加机器人相机视角、跟随视角和整体视角3种不同视角,进行不同角度的观察;
(7)提供控制接口,与显控计算机通过Modbus/Tcp协议数据交互;
(8)机械臂模型通过3ds Max软件导出为Unity3D引擎需要的FBX数据格式,最后导入Unity3D引擎的虚拟场景。
创建好的机器人模型调试如图3所示。通过机器人六轴父系机构调试验证建模准确性,单轴调试符合建模规范;机器人轴角添加碰撞盒模块进行碰撞报警,效果显示良好。基于Unity3D引擎搭建的仿真机器人观测角度与运行状态优于文献[8]等基于OpenGL平台所搭建的模型。
图3 Unity3D虚拟六轴机器人建模
2.2 仿真系统元器件的建模
为更好地观测机器人运动状态,在建立虚拟机器人模型的同时,为机器人基础搬运工作站的其他元器件也进行虚拟建模,主要包含吸盘、运输皮带线、光电传感器、物料生成器等。建模完成的模型还需要进行模拟信号控制,与实体机器人控制信号相仿即可进行仿真系统的元器件信号控制,以完成机器人对物料的基础搬运。建模元器件的参数如表2所示。
表2 建模元器件参数表
3 实体机器人控制系统与虚拟机器人控制系统数据传输
完成虚拟仿真系统的建模之后,要想达到仿真系统虚拟六轴机器人孪生同步实体机器人,需要进行两者之间的数据通讯。其中,实体机器人控制系统中以实体示教器作为上位机发送信号指令,实体控制器运行指令程序进行实体机器人的运动,其信号传输流程如下:
在实体机器人处于断电重启初始状态时,机器人控制器内部未知机器人运动状态,此时发送指令示教调试,在控制器内部为角度信号值J1~J6;之后机器人运动到已知位置和姿态,此时机器人控制器传输的数据类型取决于调用的程序类型,若为轴角坐标运动指令,则控制器内部数据为角度信号值J1~J6;若为空间坐标运动指令,则控制器内部数据为机器人末端坐标数据,经控制器内部机器人正逆运动学解析反解得到机器人角度信号值J1~J6,统一存放于控制器某个寄存器中,进而驱动六轴伺服电机联动控制机器人的运行。实体控制器还会发送DI变量信号或者其他如浮点型数据信号等至实体控制器,控制器转换成DO变量或者浮点型数据至实体控制器内部寄存器中。上述机器人运动角度值、DO变量信号值和其他浮点型数据值再通过Modbus/Tcp通讯协议发送至虚拟解析器中进行数据解析,从而驱动虚拟仿真系统里虚拟机器人的运行。实体机器人控制系统到虚拟机器人控制系统的通讯数据传输流程如图4所示。
图4 实体机器人控制系统与虚拟机器人控制系统数据传输流程图
4 解析器的开发与数据同步
研究需要通过仿真系统得到实体机器人控制器的运动数据,为控制虚拟机器人运动,要在仿真系统中开发对于虚拟机器人运动数据进行显示与反馈的解析器。解析器的主要功能是对实体控制器传输来的数据进行解析,利用虚拟三维世界的机器人运动学变换,将真实机器人的角度值映射到虚拟引擎里,并解析成虚拟机器人的角度值和位姿位置。因此,解析器的仿真开发就是虚拟机器人的正逆运动学解析及算法实现。本文以EFORT ER3-600型号六轴机器人为研究对象,虚拟仿真系统里也依据实体机器人参数1∶1搭建虚拟机器人模型,EFORT ER3-600型号六轴虚拟机器人运动应符合机器人运动学原理,机器人的D-H参数如上文表1所示。
4.1 机器人正运动学解析及算法实现
EFORT ER3-600型号机器人D-H结构坐标变换简图如图5所示。由图5可知,它具有6个自由度,6个关节均为旋转关节,前3个关节决定手腕的位置,后3个关节决定手腕的姿态。因为工具坐标系跟手腕是固连的,所以前3个关节跟后3个关节也就分别决定了工具坐标系的位置和姿态。
图5 机器人相邻坐标变换图
参考文献[14-16]得到机器人末端执行器相对于机器人基座的连杆变换矩阵为
图6 运动学正解程序流程图 图7 运动学逆解程序流程图
4.2 机器人逆运动学解析及算法实现
逆运动学讨论的其实就是正运动学的反向问题,即已知末端执行器的位置和姿态来确定机器人各关节变量的取值,六自由度机器人的逆运动学解有多种,需根据机器人的工作环境和各项参数求取合适的解。即可转换成假设机械臂末端u=(px、pv、pz)T以及n、o、a,求解各关节角度q=(θ1、θ2、θ3、θ4、θ5、θ6)的问题,求解过程如下。
求解机器人运动学逆解的过程是已知机器人末端位置和姿态,求取该姿态对应的6个关节转动的角度,因此,先求取T矩阵,再依次计算得出6个关节角度,将解得角度重新代入等式,需要判断值是否真实有效,然后再进行最优解的求取,最优解遵循两个原则:不超过轴的运动范围;最短路径原则,即选出距离上一次姿态各轴所需最小的运动量,给各轴分配一个权重,使尽量动小轴或姿态轴,最终获得的最优解即为机器人的逆运动学求解。运动学逆解算法流程图如图7所示。
4.3 数据同步性解析
控制机器人运动的程序一般是周期性的(例如插补、求逆解),即循环执行,每一次循环必须要在规定的时间内完成,否则会影响机器人的性能(例如精度);还有机器人必须对突发情况作出及时的响应,否则可能危及人身和设备安全。因此,控制器不仅要完成工作,还必须在规定的时间内完成。在虚拟仿真环境里解析器通过解析从实体机器人控制器传过来的数据,将数据处理成为可以驱动虚拟引擎的物理状态输出,主要包含机器人运行的角度、DO控制变量信号等。虚拟仿真系统里机器人的运行要同步孪生于实体机器人,需要进行帧同步,即在发送端必须提供每帧的起始标记,在接收端检测并获取这一标志。实体机器人控制器运行周期约为100 μs,本文以实体机器人作为Modbus-Server端,仿真系统作为Client端,连接到机器人后,进行实时通信,数据频率根据情况控制在20 Hz,即50 ms左右,所以仿真系统从实体机器人控制器读取值的实时性误差在49.9~50 ms,可忽略不计,达到虚实机器人孪生运动的实时性效果。
5 仿真实验
5.1 Modbus通讯协议格式与内容
虚拟仿真系统里机器人的运行要同步孪生于实体机器人,需要进行帧同步,即在发送端必须提供每帧的起始标记,在接收端检测并获取这一标记。因此机器人实体控制器与虚拟解析器使用Modbus通讯协议的帧内容就必须包含帧头位,解析器检测到帧头之后,会分析机器人设备的类型和编号,去识别匹配的机器人型号,即匹配本文的研究对象EFORT ER3-600型号机器人,子帧类型与长度则存放实体机器人运行角度,可添加其他子帧包含DI/DO、FLAOT变量等,解析器会将此数据给到状态帧,最终解析器会将之前的数据信息进行CRC加和校验,确定数据的准确性。总计一帧发送的数据格式和内容如表3所示。
表3 实体机器人控制器与虚拟仿真系统Modbus传输数据
5.2 同步性仿真实验
为实现工业机器人运动虚实孪生控制仿真同步,首先在仿真环境里搭建六轴工业机器人虚拟三维模型以及工作站元器件模型来虚拟化DI/DO变量信号,以单个机器人本体为中心,搭建一个设备完整的机器人A to B点的基础搬运工作站。除了虚拟机器人模型外,Unity3D虚拟引擎还包含虚拟化工作台、电气控制柜、物料毛坯生成、皮带传输线、光电传感器、物料吸盘等模型。实体机器人与搭建完毕的虚拟机器人搬运工作站对比图片如图8所示。
图8 虚拟机器人搬运工作站与实体机器人对比图
实体机器人控制系统与虚拟控制系统通过网络Modbus/Tcp进行数据通讯,虚拟控制器通过Modbus通讯协议读取机器人控制器信号。实体机器人六组运动点位角度值测量表如表4所示。以机器人实体控制器运行搬运流程的程序代码,随机选取某一帧运动数据作为标定值数据,记录在表4第2列中,多次测量实体机器人标定值点位数据分别记录在表4第3~7列中。计算测量值与标定值的最大误差记录在表4第8列中。表4数据表明,多次运动点位测量数据最大误差低于机器人重复定位精度误差±0.02 mm,故选取标定值数据真实有效。
表4 实体机器人六组运动点位角度值测量表
实体机器人运动姿态如图9a所示。控制器寄存器的角度值J1~J6可通过实体示教器读取得到,如表5所示。将读取到的实体机器人控制器寄存器角度值通过Modbus传输协议进行传输。虚拟解析器得到机器人六轴角度等数据之后,通过调用内部机器人运动学正逆解算法得到Unity3D仿真环境里的机器人末端姿态和位置数据,然后在虚拟仿真环境里显示机器人的空间位置和姿态,如图9b所示。实体机器人与虚拟机器人接收运动数据记录在表5中。通过虚实机器人的姿态和数据对比可知,虚拟机器人运动姿态和角度变化基本跟随实体机器人运动。
图9 实体机器人运动与虚拟机器人运动对比图
表5 实体机器人与虚拟机器人运动角度值
同时在虚拟环境里还要进行运动学正解,将得到的角度值转换成Unity3D世界坐标值,通过将读取的实体机器人控制器坐标值与虚拟仿真UI显示坐标值以及运动学算法正解结果对比,实体机器人、虚拟机器人与运动学算法世界坐标值如表6所示。
表6 实体机器人、虚拟机器人与运动学算法世界坐标值
从图9的虚实机器人运动姿态对比可以看出,从初始状态到机器人抓取物料,这两个机器人姿态基本保持一致,未出现碰撞报警信号;表5的机器人实体控制器与虚拟机器人调试器所获取到的六轴机器人角度值也保持一致,其误差只是由于Unity3D虚拟引擎设置的角度精确度为0.1°,得出虚拟仿真系统实现了实时获取实体机器人运动数据,并映射至虚拟仿真环境里。同时表6的数据表明,解析器封装的机器人运动学算法数据与实体机器人的世界位姿数据误差满足仿真精度,仿真环境里显示的数据也准确表明了虚拟机器人在仿真环境里的位姿,与实体机器人互为虚实对应。该虚拟仿真系统可实时获取实体机器人运行数据并将其映射至仿真环境中,实现了虚实孪生的机器人运动控制仿真模拟。
6 结论
搭建了虚拟机器人控制仿真系统,与传统的离线编程系统对比,不仅可以完成离线机器人示教,而且可以通过Modbus通讯协议建立与实体机器人控制系统的连接,通过虚拟解析器解析实体控制器的运行数据并以数据帧的方式实时传输给虚拟仿真机器人。通过上述实验结果可以表明,实体机器人与虚拟机器人运行同步性良好,三维虚拟世界仿真观测效果好,且虚拟机器人运行数据符合机器人正逆运动学算法,和实体机器人保持一致,达到了虚实同步与孪生。
此机器人运动控制仿真系统利用Unity3D引擎为平台搭建,三维角度观测性能好,且支持在线孪生示教,为机器人的学习和示教提供一种有效手段。之后的研究中可以将虚实孪生机器人的运行数据统一上传数据库保存记录,实现虚拟机器人运行报错数据复现,为智能制造数字孪生系统化开发做基础准备条件。