APP下载

基于X3DOM的工业机器人虚拟样机设计

2020-04-28徐玉飞何岭松王宇顺

实验室研究与探索 2020年1期
关键词:样机位姿指令

徐玉飞,何岭松,王宇顺

(华中科技大学 机械科学与工程学院,武汉 430074)

0 引 言

近年来随着计算机技术、网络技术和图形图像技术高速发展和教育部门重视程度的增加,虚拟样机技术越来越多地应用于各个学科的实验教学中[1]。2017年,教育部指导高校开展新工科研究与实践,倡导通过结合信息技术与工程教育的方式,达到提高工程教育的效率的目的[2]。在机器人学方面,由于实际实验中可供学生操作的机器人数量有限,且学生作为初学者对机器人编程需要长时间构思和调试才能达到理想效果,降低了实验教学的效率,增大了实际操作的风险。在机器人实验教学中引入虚拟样机,让学生在实验课之前通过虚拟样机进行实验训练,将实验室调试程序的前期过程转移到课前的网上进行,可大幅度提高实际实验课的效率[3-5]。

目前国内外已有不少优秀的工业机器人虚拟样机的实现[6-8],如RobotStudio,Linux平台上开源的ROS系统等。其中大部分平台需要安装复杂的软件或插件,对电脑配置和运行环境有特定要求;一些商用平台只提供特定厂商的机器人仿真,通用性较差。这些缺点在一定程度上限制了将它们直接作为机器人实验教学平台-使用的可能性。网页是一种良好的跨平台呈现形式,HTML5出现以后,极大的丰富了网页的功能,弱化了浏览器对各种插件的依赖[9];同时,近年来出现的网页图形库(Web Graphics Library,WebGL)、X3DOM(Extensible 3D+ Document Object Model,可扩展三维模型语言+文档对象模型,X3D+DOM,)等无插件网络三维显示技术,更是将网页的表现力提升到新的高度[10-11],并为基于网络的无插件虚拟样机应用提供了很好的技术实现手段。

本文采用HTML5+X3DOM的技术方案来构建网络化无插件的工业机器人虚拟样机,可直接在浏览器上运行,具有很好的通用性和跨平台性。

1 系统设计方案

HTML5广义上是指包括HTML、CSS和JavaScript的一套技术组合。它在语义化、兼容性、多媒体支持等多方面进行了改进,其中新增的canvas画布元素允许JavaScript直接在网页上绘制二维、三维图形,为网页三维显示提供了基础[2]。X3DOM是一个基于文档对象模型(Document Object Model,DOM)的HTML5/可扩展三维模型(Extensible 3D,X3D)集成模型,用于将三维场景显示在浏览器上。X3DOM技术不仅实现了无插件的网页三维显示,而且与HTML5紧密结合,能通过DOM方法动态访问模型的节点及属性,将控制对象由模型文件细化到文件内部节点,具有良好的发展前景[13]。

基于HTML5与X3DOM的工业机器人虚拟样机的总体设计方案如图1所示。图中X3DOM模块以运动单元和活动部件为基础,将机器人组装成一个可控的模块化三维虚拟模型,通过模型接口改变运动节点参数就可改变虚拟样机的位姿;Javascript模块负责进行逻辑和数学运算,包括解析用户指令、运动插补和运动学求解,并可将计算结果传递给X3DOM模块以实现的虚拟样机的驱动;UI模块则负责提供机器人控制界面和X3D模型的显示环境。另外,还提供了一个云服务模块,用于虚实结合实验时与云端服务器进行通信,并实现与虚拟样机外部的实验室真实机器人的网络连接,将学生在网页虚拟样机上调试完成的控制指令发送到真实机器人上,以观察实际运行效果。

图1 机器人虚拟样机系统设计方案

2 机器人虚拟样机的实现

2.1 机器人运动求解的实现

建立机器人运动学模型是实现运动求解的重要前提。机器人运动求解包括正向求解和逆向求解两部分,前者是已知关节变量求末端位姿的过程,后者是已知末端位姿求关节变量的过程。

(1)

式中:c为cos;s为sin;ai-1为连杆长度;αi-1为连杆扭角;di为相邻连杆的偏距;θi为相邻连杆长度方向的夹角。

(2)

在JavaScript脚本中将正解算法封装为函数kinematicsEquation(input),其逻辑流程如图2(a)所示。kinematicsEquation函数接受关节变量[q1,q2,…,qn]为输入变量,经过正解输出末端位姿[x,y,z,Ex,Ey,Ez],输出变量将用于更新控制面板上机器人位姿参数或插补过程。

大多数工业机器人都满足Pieper准则[],运动学反解具有封闭解,可采用反变换法[]求取运动学反解。机器人运动学反解通常会得到多组解,可通过机器人机械结构的限制排除部分不合理的解,剩余结果通过运动行程、运动时间、机器人功耗等指标选择一组最优解。

在JavaScript程序中将反变换算法封装为函数inverseKinematics(input),如图2(b)所示。经过反解后,若存在有效的反解,将输出关节变量,用于更新控制面板上机器人关节参数并控制三维模型运动至对应姿态;若所有反解结果皆无效,说明该位姿对应的目标点为奇异点或超出工作范围,函数输出空值NULL,用于提醒用户修改机器人运动指令,避开此点。

(a) kinematicsEquation函数

(b) inverseKinematics函数

2.2 X3DOM工业机器人三维显示

在工业机器人的三维显示中,X3DOM负责提供工业机器人的三维模型,HTML5为其提供显示环境。X3DOM提供了基础的建模方法,可以通过语言描述建立简单的几何形状,如立方体、球体、圆柱体等,但这种方式不适合建立复杂形状模型。考虑到机器人模型复杂,选择在建立三维模型后导出为X3D文件,并将其嵌入X3DOM程序中。HTML文件在嵌入X3DOM程序前调用X3DOM库(包含x3dom.js和x3dom.css),在运行时调用 WebGL的3DAPI 在浏览器上进行3D图形的实时渲染,实现无插件的网页三维显示。

为便于模型的运动控制,将机器人各部件单独导出为X3D文件,再新建一个X3D装配文件,调用各部件的X3D模型并进行“虚拟装配”:即根据连杆间的结构关系进行节点嵌套,根据连杆之间的位置和角度关系调整节点的translation或rotation属性,如图3所示。最后为整个场景设置合适的视点和灯光,形成完整的三维场景。HTML文件调用X3DOM库后,可直接在HTML文档的节点中插入X3D节点,调用装配好的机器人X3D文件,机器人三维模型即显示在网页上。

经过节点嵌套的机器人各部件之间具有父子关系,父节点的状态变化会影响所有子节点的状态,这样就将机器人三维模型封装为一个外部可控的X3DOM虚拟样机。例如,将关节4所在的节点绕X轴旋转90°,就可实现旋转关节4后面嵌套的所有模型一起绕X轴旋转了90°。这与真实机器人的连杆运动关系保持一致。

2.3 工业机器人虚拟样机实现

工业机器人的X3D模型嵌入HTML文件后,成为HTML的DOM模型的一部分,可以通过DOM方法来访问和修改模型内部节点的属性。X3DOM的这种特性非常方便地控制机器人连杆的运动。

document.getElementById("rot1").

setAttribute('rotation', '0,0,1,3.14159');

上述代码将rot1节点rotation属性的值修改为‘0,0,1,3.14159’。rotation属性值由4个数字组成,前3个数字组成一个三维空间内的单位向量,指定旋转轴的方向,第4个数字指定绕轴旋转的弧度,因此上述代码的几何意义是将关节1绕Z轴旋转180°。在此基础上,将机器人的X3DOM模型封装为一个模块,接受关节变量[q1,q2,…,qn]为输入,通过上述DOM方法依次修改关节对应节点的rotation(旋转关节)或translation(移动关节)属性,即可将工业机器人模型各个关节旋转/移动至指定的姿态。

将工业机器人的运动学求解模块与工业机器人X3DOM模块相结合,即可实现工业机器人虚拟样机的基本功能。用户可以通过关节控制和末端控制两种方式控制机器人的运动:关节控制方法中,用户在控制界面上改变机器人关节变量,关节变量传入JavaScript脚本中,经过运动学正向求解得到机器人末端位姿并显示到界面上,同时关节变量数据被传递给X3DOM模块,通过DOM方法控制各个连杆模型运动,机器人三维模型运动至对应位姿;末端控制方法中,用户在控制界面上改变机器人末端坐标和姿态,位姿变量传入JavaScript脚本中,经过运动学反向求解得到机器人关节变量并显示到界面上,同时关节变量数据被传递给X3DOM模块,通过DOM方法控制机器人三维模型运动至对应位姿。

图3 机器人模型的“虚拟装配”

2.4 机器人指令解析与插补

工业机器人虚拟仿真实验平台的指令系统参考工业机器人控制语言RAPID语言[]建立,基本运动指令语句的结构为:“MoveType Piont1 ( , Piont2) , Speed ,Zone,Tool;”,指令含义为:“运动类型 示教点1(,示教点2),速度参数,转角参数,工具参数;”。指令系统中有3种基本运动类型,分别是MoveJ:关节运动、MoveL:直线运动、MoveC:圆弧运动。除运动指令外,还包含一些简单的信号处理指令,如“Set/Reset”可将数字输出信号置位或复位,用于控制外部工具。

工业机器人虚拟实验平台也模拟了实际工业机器人的示教功能,在机器人特定的位姿状态添加示教点,被标记过的示教点信息被后台记录,同时也显示在页面上的示教区。设置示教点之后在机器人指令编程中可以直接调用已定义的示教点,简化了编程,提高了机器人运动路径的准确性。

以指令编程方式控制机器人运动的逻辑流程如图4所示。工业机器人虚拟样机中,用户在图形界面上输入的指令以字符串的形式传递到JavaScript脚本中的指令解析模块,通过字符串匹配的方式获取每一条指令的运动类型和运动参数(包括示教点、运动速度等)信息。按照运动类型的不同选择不同的插补算法,依次计算并输出运动轨迹上插补点的位姿。指令解析和插补模块输出的插补位姿传递给运动学求解模块,输出关节变量到X3DOM模块,最终实现指令对工业机器人虚拟样机的控制。

图4 运动指令解析与插补流程图

2.5 对工业机器人的远程控制

实验平台远程控制使用机器人为IRB120型工业机器人,实现远程控制的关键在于虚拟样机与真实机器人之间建立网络通信。机器人控制系统安装PC Interface组件,虚拟样机的云服务器安装node.js环境,二者之间即可通过TCP通信建立连接。机器人控制器已具备对机器人本体的指令控制功能,只需要将网页上调试好的控制代码经由云服务器以字符串的形式发送到机器人控制器,机器人控制器将收到的字符串解释为可执行的运动指令,即可实现虚拟样机对真实机器人的远程控制。

HTML5具备丰富的多媒体处理功能,可以使用网络摄像头监控真实机器人运动,将实时的监控视频无插件地嵌入到HTML5页面中,更加直观地对比虚拟样机与真实机器人的运动。

3 应用实例与验证

工业机器人虚拟样机可应用于多种实验教学场景中。实验平台运行于云服务器,用户无需安装软件或插件,只要通过Chrome浏览器访问实验网址,即可在虚拟样机上进行实验训练。

典型机器人虚拟实验界面如图5所示,实验界面包含实验说明书、虚拟实验演示、开始实验和课后训练4个目录选项。选择开始实验后,页面左侧显示机器人虚拟模型、右侧为虚拟机控制UI,包含机器人关节变量、末端位姿、工具选项、示教点以及控制指令等内容。

图5 机器人虚拟实验界面

机器人虚拟实验的基本操作流程为:

(1) 在工具选项中为机器人选择合适的工具并加载;

(2) 改变机器人关节变量或末端位姿,控制虚拟样机模型运动至指定位置;

(3) 点击添加示教点,或在示教点区域按照指定格式输入示教点信息;

(4) 输入机器人控制指令;

(5) 点击提交,机器人模型按指定轨迹和速度运动。

3.1 焊接实验与准确性验证

为验证仿真结果的准确性,在虚拟样机和真实的工业机器人上分别使用同样的示教点和运动指令,进行了焊接实验。虚拟样机与真实机器人运行过程的对比如图6所示。

(a) 虚拟样机仿真效果

(b) 实际运行结果

实验结果表明,虚拟样机能有效执行运动指令,样机模型与实际机器人的运动轨迹基本保持一致,运动仿真具有较高准确性。

3.2 远程码垛实验与同步性验证

为验证仿真运动与实际机器人运动的同步性,在远程控制页面中,将虚拟样机上调试通过的运动指令经由服务器发送给远程机器人,样机模型与实际机器人同时开始执行同样的指令,运动过程的对比如图7所示。

(a) 码垛开始

(b) 码垛过程1

(c) 码垛过程2

(d) 码垛结束

实验结果表明,样机模型与远程机器人在执行相同指令时,运动速度和执行时间基本一致,仿真具有较好的同步性。此外,二者运动的延时控制在毫秒级别,体现出远程控制的实时性。

3.3 其他实例

除关节型机器人外,还设计并实现了并联型机器人、圆柱坐标机器人以及直角坐标机器人的虚拟样机,如图8所示。

(a) 并联型机器人

(b) 圆柱坐标机器人

(c) 直角坐标机器人

4 结 语

基于HTML与X3DOM技术设计实现了工业机器人虚拟样机,利用X3DOM、HTML以及JavaScript实现对仿真模型的显示和控制,并在此基础上增加了虚拟样机对真实机器人的远程控制功能。实验证明,本文设计的虚拟样机可以很好地模拟真实机器人的运动和控制。在虚拟实验平台上进行的实验训练能够有效地帮助学生进行课前预习和代码调试。与现有的机器人虚拟样机相比,本文设计的虚拟样机不需要安装任何软件或插件,用户只需要通过浏览器访问实验网站即可进行实验训练,便于平台的使用和推广,对实验教学具有一定意义。

猜你喜欢

样机位姿指令
融合二维图像和三维点云的相机位姿估计
基于ADAMS虚拟样机的门座起重机动力学仿真研究
基于三维数字样机的运载器装配工艺规划技术
精心准备,蓄势待发——广日电梯地铁项目样机验收顺利通过!
船舶清理机器人定位基准位姿测量技术研究
优化ORB 特征的视觉SLAM
一种面向育种家的新型台式棉籽脱绒机
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究
一种基于滑窗的余度指令判别算法