三维仿真交互式双臂机器人离线编程系统设计

2018-07-19 12:54陈友东
计算机工程与设计 2018年7期
关键词:双臂离线编程

许 鹏,陈友东

(1.合肥职业技术学院 计算机系,安徽 合肥 238000;2.北京航空航天大学 机械工程及自动化学院,北京 100191)

0 引 言

与单臂机器人相比,双臂机器人可以通过双臂协作完成一些复杂工作,如空间站的舱内外设备维修作业[1]、复杂的装配操作[2]、搬运重物[3]等,大大扩展了机器人的应用。为了实现机器人的作业任务,一般采用在线示教[4]或离线编程[5]对其进行编程。对于双臂机器人,采用在线示教存在以下困难:当分别对左右机械臂进行示教时,两个机械臂之间的位置约束关系难以保持同步;在线示教难以满足日益增多的个性化需求。因此工业上迫切需要双臂机器人离线编程系统,自动生成作业任务轨迹。

对于机器人离线编程系统,通用的做法是通过各种形式的三维图形建模和导入方法,通过QT-Coin3D构建的三维仿真环境生成机械臂的路径并完成双臂协作的仿真[6]。根据仿真,生成机器人运动指令传到机器人控制系统,以控制机器人运动,完成给定任务[7]。Carvalho等采用了柔性制造单元对焊接任务离线编程[8],针对复杂曲面加工的离线编程系统,黎润伟等提出了一种基于STL文件的轨迹生成算法[9]。使用离线编程规划机器人运动优势明显:降低了成本,便于对程序进行优化,有利于实现复杂任务的轨迹规划[10]。这些方法的不足在于其功能性单一,模型构建比较复杂。双臂机器人离线编程系统在上述基础上还要考虑机械臂的协调操作[11,12]。周扬等基于阻抗控制提出了双臂机器人控制系统[13],存在的问题是计算量大,缺乏几何造型的直观性。针对目前双臂机器人编程存在的示教操作繁琐,协调模型构建复杂,用户界面不友好等问题,提出了一种基于QT-Coin3D的双臂机器人离线编程系统,QT和Coin3D提供了交互式3D软件开发的解决方案,设计了机器人仿真模型的通用构建方法,提出了仿真过程的控制算法,实现了路径的自动生成,提高了机器人编程的自动化水平。

1 总体设计

双臂机器人离线编程系统实现了双臂机器人的建模、仿真,经过后置处理后生成控制指令。系统按照功能性划分为核心层、支撑层以及应用层3个部分,如图1所示。由Coin3D渲染引擎、轨迹解析库和Qt-SDK构成的仿真系统的核心层,核心层主要提供三维环境的建模、渲染和管理,外部文件解析以及UI交互界面的创建;支撑层主要提供了系统数据接口,并保证了具体功能的实现;应用层确立了系统的主要的功能信息,实现了系统的任务目标。

图1 双臂协作仿真系统任务框架

系统的主要功能是实现双臂机器人手臂的末端点位置与姿态的控制,通过QT中的信号槽机制实现双臂机器人的三维运动仿真与软件UI界面的交互。

应用层主要包括了以下4大模块:

(1)工作环境定义:双臂机器人、工作对象以及环境3部分的模型建立、导入、定义和布局。

(2)轨迹规划:依据作业任务实现轨迹规划。对于双臂协作完成任务,需要根据其任务协调类型的不同(松协调任务、紧协调任务[14])确定不同的位置控制模式。

(3)运动仿真:双臂机器人各个关节转角控制,工件位姿状态调整,双臂协同控制工件运动,记录仿真运动的过程。

(4)后置处理:将仿真验证的机械臂运动转换为机器人程序,控制机器人运动完成特定任务。为了实现应用层作业任务,针对性的进一步设计了控制系统的支撑层。支撑层主要包括了以下几个模块:负责项目创建和数据读写的项目管理模块;负责主框架数据存储和调用的框架管理模块;用于显示机器人关节轴、末端点轨迹等数据信息的数据显示模块;不同类型的双臂机器人模型的建模的机器人模型管理模块;根据任务需要关于工件、环境的建模的工件环境模型管理模块;负责机器人各个关节正逆解,根据雅克比矩阵对逆解的优化的仿真控制模块;用于规划双臂末端点运动的运动规划模块;根据双臂协调任务确定机械臂在运动过程中的位姿状态的位置控制模块、由旋转变换矩阵得到工件与机械臂之间的轨迹变换的工件轨迹规划模块;离线仿真后生成机器人控制指令的机器人控制模块。

2 机器人模型及工作环境建模

2.1 三维仿真环境建模

双臂机器人作业系统是一个复杂的系统,主要由双臂机器人、工作环境和工件3部分构成,如图2所示。双臂机器人为主要仿真对象,模型参数定义和运动控制相对复杂。工件的工作任务不同,轨迹和仿真复杂程度也不同。环境大部分为固定物品,当中也可能包括可运动(移动或旋转)的工作台、机器人滑轨、开关门等部件,复杂程度相对较低。

图2 双臂机器人及工作环境建模

通过SolidWorks实现复杂模型的构建,交换数据的格式可采用虚拟现实建模语言文件WRL,在Open Inventor-Coin3D渲染引擎中读取WRL文件,从而实现真实的渲染重建,通过隔离器将机器人模型的各个部件进行控制,实现动作模拟仿真。

2.2 双臂机器人仿真控制模型

双臂机器人区别于传统的单臂机器人在于在控制过程中需要同时控制左右两个机械臂的运动,如图3所示。

图3 双臂机器人MOTOMAN CSDA10F

对于左右机械臂,双臂机器人通常情况下需要分别设置其运动参数,根据DH参数的不同构建不同的运动学模型。为了得到正确的运动学模型,需要从以下几个方面考虑:

(1)根据双臂机器人每个机械臂的DH参数表建立相对坐标系,计算其运动学模型,通过矩阵变换得到机械臂的正运动学解;

(2)根据双臂机器人的各个机械臂的结构特点通过矩阵变换计算其运动学逆解,在求解其逆解过程中存在多重解的情况下,引入最小微动解的评价指标,在保证机械臂平稳运动的前提下选择各个关节角的变化量最小的一组解来达到指定的位姿;

(3)对于冗余机械臂,根据机械臂的冗余特性,引入一种根据雅克比矩阵计算可操作度评价当前运动学逆解的优化算法,根据可操作度可以避免机械臂到达奇异位形。

双臂机器人模型是由多个部件构成,多运动变量的模型。在双臂机器人中,机器人本体包括15个部件,14个运动变量控制。本文提出了一种双臂机器人仿真控制模型,如图4所示。机器人各个部件的运动都是相互耦合的,为避免不必要的运算,在建模时可直接将这种耦合关系定义在模型中。通过构建双臂机器人仿真控制结构树,将各个部件与其相应的矩阵变换封装在一个节点内,在仿真运动的过程中,后置节点不会影响前置节点的信息。通过改变DH参数信息进而改变控制模型信息,仿真控制模型具有较好的通用性。

图4 双臂机器人仿真控制模型树

(1)Base节点作为世界坐标系的原点,也是双臂机器人的根节点,该结构树从Base节点开始分为两支,分别为L0~L7和R0~R7,代表了双臂机器人的左右两个机械臂的各个连杆部件的轴节点;

(3)ML0~ML7、MR0~MR7分别表示了双臂机器人的各个连杆模型文件,将SolidWorks模型导入后,各个连杆的初始位姿已知并且坐标位于世界坐标系原点。由于连杆变换控制节点是基于相邻两个连杆的相对坐标系位姿变换,直接对双臂机器人的各个连杆进行齐次矩阵变换会导致连杆在已经存在初始相对位置的情况下再次进行矩阵的连乘,这样的结果是一旦变换关节角会导致机械臂的各个连杆的相对约束关系不复存在。因此当整体双臂机器人模型导入后,需要首先将连杆模型文件变换到世界坐标系下,然后进行相对坐标系位姿变换;

(5)遍历整个双臂机器人仿真控制模型树可以发现在DH参数建模下各个连杆的相对坐标系与仿真模型中的各个连杆的相对坐标系对应,变换某一个连杆关节角之后可以实现整个机械臂的联动。

2.3 模型树管理

双臂机器人离线编程系统中的各个模型建立完毕后,需要编程系统对各个模型进行统一的规划管理,模型管理主要体现在模型树上,如图5所示。模型树的主要操作如下:

(1)数据列表操作:①模型插入:将来自外部文件、内部自建库、内置基本几何体的几何信息,通过用户交互添加属性信息,并插入到模型树的管理数据列表中;②模型删除:删除数据列表中的一项;③复制或移动:将一模型复制或移动到同一树或另一树的某个分支上。

(2)更新渲染区:将数据列表中的模型信息绘制到Coin3D的渲染区中。

(3)更新主界面模型树显示:将数据列表的信息更新显示到主界面的模型树上。

(4)保存和读取模型数据类表:项目管理模块需要存储模型树的众多信息,作为模型信息的存储核心,数据列表的信息需要具有导出、导入能力,即将列表已有信息输出到文件或从文件加载信息到列表。

图5 模型树

3 轨迹规划

依工作任务确定工件运动轨迹,由于运动协调动作复杂,难以通过示教实现。通过双臂协调过程中的位置约束关系,将其运动方程解耦,分别得到左右机械臂的运动轨迹,然后通过轨迹规划模块生成轨迹,从而确保了双臂机器人在仿真系统中任务的正常实现,如图6所示。

图6 轨迹解析模块

轨迹的创建方法可以分为3种:一种是通过CAM软件生成NC代码,如:复杂形状的切削和复杂曲面喷涂;一种是直接识别工程图文件;一种是直接输入三维点数据,如点焊类任务。机械臂的轨迹文件创建完毕后,通过不同的解析器解析,使其转换为系统可以读取的轨迹数据;然后根据轨迹操作器中的轨迹算法构建出不同类型的轨迹模型。轨迹模型构建主要在以下两个方面:①运动轨迹的分段,有序的将轨迹文件中各个线段的起点、终点信息存入轨迹列表;②确定各个线段的性质,分析轨迹列表中的线段属于何种类型的线(直线、圆弧等),并在轨迹控制器中采取不同的插补方法。最终将轨迹进行插补得到一系列的点放入数据列表中,仿真系统根据定时器操作不断的读取插补点的信息。

4 仿真的关键算法

工件的运动决定了双臂机器人运动轨迹。通过确定双臂机器人工件的运动,规划机械臂的运动轨迹,在仿真系统中得到两个机械臂的轨迹后,刷新重建渲染模型,双臂机器人开始仿真运动,如图7所示。

图7 双臂机器人任务仿真

通过Open Inventor和Coin3D渲染引擎构建虚拟三维模型。在系统仿真过程中,每隔一定时间,各个模型部件在旋转变换矩阵的控制下刷新重建得到新的场景从而变现为运动,如图8所示。

图8 仿真流程

双臂机器人及工件、工具等处于初始位置,当运行指令触发后,后台程序中的定时器开始运行,向数据列表中加入轨迹信息,这些信息主要包括双臂机器人机械臂各关节角的大小以及其工具变换矩阵,此外还有工件及环境的相关信息。当定时器计时完毕后,系统自动读取当前数据列表中的运动参数信息,并且根据内容对双臂机器人的各个部件进行控制,通过定时器的重复刷新,可以变换仿真环境;如果数据列表中的运动数据不再变化,则说明了根据设定的轨迹,机器人完整的执行了仿真,系统仿真结束。

5 后置处理

后置处理模块的作用是将双臂机器人离线编程系统中生成的双臂运动程序转换为机器人控制器可以识别的代码。通过仿真控制模块完成双臂机器人的任务仿真后,左右机械臂的轨迹通过插补算法实现插补过程中各个点的相关信息。与此同时,各个插补点上的位姿信息和插补参数等信息被存储在数据列表中,后置处理模块的作用就是将这部分的信息转换为机器人运动代码。通过逐条读取数据列表中的插补点,将其放在指令存储列表内,插补点读取完毕后,完整的控制代码就可以通过输出指令存储列表获得,将其转换为相应的格式传送到控制器中,双臂机器人就可以自动运行,如图9所示。

图9 后置处理模块流程

6 实 验

为了实现交互界面设计和三维渲染设计,离线编程系统将Qt4.8.6开发套件和Coin3D 3.1.3开发套件集成到VS2008中,搭建QT-Coin3D联合开发环境。在系统中进行了双臂机器人协调搬运仿真实验,验证系统的有效性。

双臂机器人协调搬运任务是属于强耦合、紧协调操作。工件的期望运动路径决定了左右两机械臂之间的运动。其操作状态如图10所示。

图10 紧协调操作

具体仿真实现过程如图11所示。

图11 双臂机器人搬运仿真实验

7 结束语

本文提出一种基于QT-Coin3D双臂机器人离线编程系统。该系统基于DH参数构建双臂机器人的运动学模型,设计了一种双臂机器人系统仿真控制模型(包括三维模型,组织结构和数学模型),通过对双臂协作操作约束的解耦,对机械臂的运动轨迹进行解析,依据仿真过程算法实现仿真协调运动,仿真完成后生成机器人控制指令,实现双臂机器人本体运动控制。最后通过实验验证了双臂机器人编程系统。实践证明基于QT平台开发的离线编程系统具有较好的可移植性。

猜你喜欢
双臂离线编程
异步电机离线参数辨识方法
呼吸阀离线检验工艺与评定探讨
编程,是一种态度
元征X-431实测:奔驰发动机编程
浅谈ATC离线基础数据的准备
编程小能手
纺织机上诞生的编程
我在街上走
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
双臂掘进钻车