张良安,张成鑫,谢胜龙
(1.安徽工业大学机械工程学院,安徽马鞍山 243000;2.中国计量大学机电工程学院,浙江杭州 310018)
近年来,随着《中国制造2025》计划以及工业4.0概念的提出,工业机器人作为可编程的机电一体化的产品,在搬运、喷涂和焊接等领域得到了广泛的应用[1]。工业机器人最常见的编程方式主要为示教再现编程的方式。但随着机器人工作环境越来越复杂、作业要求的精度越来越高,机器人示教再现编程方法因过程繁琐、精度低等缺点,已然无法满足现代化生产制造中大部分应用的要求。
随着计算机技术和硬件产品的迅猛发展,工业机器人离线编程技术得到了实现和快速的发展[2]。离线编程不需要在线对机器人进行编程,它利用CAD技术建立机器人的虚拟仿真环境,再通过机器人真实的运动学参数模拟机器人运行轨迹,然后将运行轨迹转化为机器人可以执行的程序,以达到机器人编程的目的[3]。相较示教再现编程,离线编程可以实现编程者远离机器人工作环境,减少机器人停机时间,安全性与效率更高;并且离线编程系统编译结果更直观,碰撞检测与轨迹规划效果更好。
目前市面上主流的工业机器人离线编程软件主要有RobotStudio、RobotArt、RobotMaster等。这些离线编程软件一般比较昂贵,开放性与通用性较差,不便于进行二次开发。因此,很多学者针对机器人不同的应用环境对离线编程系统作了相应的研发,如焊接、涂胶等应用领域[4-6]。但这些机器人离线编程系统实现方式都是先通过点位标定示教,然后规划机器人的运行轨迹。这样不可避免地产生标定误差,影响机器人运动精度[7]。
为了提高离线编程系统的可操作性与精度,学者们进行了大量的研究,目前使用最多的是视觉传感器。通过视觉传感器采集图像,利用图像处理算法提取所需信息,然后离线编程系统根据这些信息规划机器人的目标路径,实现机器人的自主移动。如周方明等[8]研究了基于激光视觉的焊接机器人离线自动编程技术,通过离线寻位程序和激光寻位系统,实现精确定位焊缝。倪自强等[9]开发了基于视觉引导的工业机器人示教编程系统,在双目视觉引导下完成对特定轨迹的示教编程。白凤民等[10]研究了三维视觉在激光焊接机器人离线编程系统中的应用,结合三维视觉实现激光焊接空间曲线的离线编程。但这些研究往往仅局限于单一的三维建模软件平台,通用性较差。近年来,虚拟现实建模语言(Virtual Reality Modeling Language, VRML)作为一种三维世界的场景建模语言,在虚拟现实技术中得到了广泛的应用。由于具有平台无关性,因此该语言能解决离线编程的跨平台问题[11]。
基于此,本文作者利用VRML技术开发了一套基于机器视觉的工业机器人离线编程系统。首先基于模块化思想对系统进行了设计,然后详细介绍了各个模块的原理与设计,最后以一种六轴工业机器人为测试对象验证了该离线编程系统的基本功能。
基于视觉的工业机器人离线编程系统采用模块化方法进行设计。系统被划分为不同的功能模块,各模块之间采用开放的程序接口和通信平台相连接,各功能模块通过读取配置文件进行功能的集成,由此提高系统的可重构性。系统的模块设计结构如图1所示。系统主要由以下几个模块组成:机器视觉模块、虚拟环境模块、运动学模块、轨迹规划模块、离线程序模块和外部通信模块。
图1 离线编程系统框架Fig.1 Framework of offline programming system
根据上述系统组成框架搭建的机器人离线编程系统如图2所示。系统包括视觉系统、六轴SCARA机器人本体、机器人控制器以及工控机。视觉系统选用500万像素黑白CMOS工业相机,8 mm手动调焦镜头以及光源。工业相机通过支架垂直固定拍摄区域正上方,光源固定于相机正下方。六轴SCARA机器人本体关节全部采用运动控制卡驱动,并将其嵌入工控机中。视觉系统以及离线编程软件全部在LabVIEW环境下运行。相关设备元件信息见表1。
图2 机器人离线编程系统Fig.2 Offline programming system of industrial robot
表1 设备元件参数Tab.1 Parameters of equipments
基于视觉的工业机器人离线编程系统工作流程如图3所示。首先通过视觉系统采集目标加工工件图片,并对其进行相关图像处理,提取目标点位,步骤如图3(b)所示;之后离线编程系统通过运动学模块与轨迹规划模块进行运算,并自动生成离线程序,步骤如图3(c)所示;同时虚拟模型界面对结果进行仿真验证,最后利用在线通信的方式将程序导入机器人控制器中,控制机器人的实际运动。
图3 离线编程系统工作流程
机器视觉模块主要包括图像采集、图像处理与数据转换几个部分。图像采集系统是对目标加工路径进行原图像采集;图像处理系统是对采集到的原图像进行相应的视觉算法处理;数据转换的作用是将图像处理后的图像坐标点位转换成实际的机器人坐标。
(1) 图像采集系统
图像采集系统主要包括工业相机、镜头、光源、图像采集设备、图像处理设备等部分[12]。工业相机用于采集目标物体的数字图像;镜头用于将物体表面反射或透射的成像光束汇聚于焦平面上的图像传感器;图像采集设备可以将来自图像传感器的信号传输给工业计算机。图4所示为系统的结构示意。
图4 视觉系统结构Fig.4 Structure of vision system
(2) 图像处理系统
图像处理系统在整个机器视觉模块中起着至关重要的作用,在图像采集系统采集到原图像后,利用图像处理算法对图像进行处理后提取目标特征数据。图像的处理过程如图5所示。
图5 图像处理过程Fig.5 Image processing
图像采集系统采集的原始图像往往包含很多的噪声与畸变,这些严重影响了图像的质量,不利于从中提取目标特征。导致这一现象的原因有很多,如图像经A/D转换、线路传输等都会产生噪声污染。因此,必须要对原始图像进行图像滤波等预处理。图像滤波的作用是把被处理图像的大部分细节特征进行保留,同时对图像中的噪声进行抑制。
在对图像预处理后,需要对图像进行阈值分割处理。阈值分割通常采用二值化方法(Threshold)处理。其原理是利用图像中需要提取的目标区域和背景在灰度上的差异,并通过选择适当的阈值进行分类。其数学表达式为
(1)
图像在阈值分割后进入形态学处理,突出目标特征。常用的形态学处理函数有Basic基础形态学、Adv.Morphology高级形态学、Particle Filter粒子过滤等。最后采用LabVIEW视觉助手中机器视觉模块(Machine Vision)提取目标特征数据,输出到数据转换系统中做进一步分析处理。
(3) 数据转换系统
数据转换系统作用是通过对相机与机器人进行标定,建立图像坐标与实际场景中机器人坐标之间的关系。经图像处理系统处理后得到的图像点位数据通过该系统转换为机器人坐标下的点位数据。转换原理基于图像上的点位坐标与空间里面的目标物体表面实际点的几何位置存在映射的关系。这一关系可以用式(2)来描述:
(2)
式中:Xc、Yc、Zc为相机坐标系;Xw、Yw、Zw为机器人世界坐标系;R为旋转矩阵;M为平移矩阵。
虚拟环境模块是工业机器人离线编程系统的前提与基础,其主要任务是在编程软件中建立机器人与运行环境的虚拟环境,实现工业机器人的仿真模拟。为了更好地建立实体环境与虚拟环境之间的关系,文中主要利用LabVIEW中的3D Picture Control工具包以及通用三维建模软件实现虚拟环境的搭建。具体流程如下:
(1) 建立机器人与外部运行环境的三维模型。目前市面上广泛使用的三维建模软件有SolidWorks、UG等。这些软件功能强大,组件繁多,都具有强大的三维建模功能,并且都支持VRML虚拟现实应用技术。利用该类软件可以快速准确地对机器人以及运行环境进行三维建模。
(2) 通过标准数据接口导出三维模型。为了LabVIEW可以调用相关部件,需要在三维建模软件中将各部件通过VRML标准接口导出为wrl格式的文件[13]。由于文中选用的工业机器人具有6个自由度,因此整体可以拆分成7个相互独立运动的零部件。
(3) LabVIEW环境中实现虚拟环境搭建。3D Picture control为LabVIEW专门进行三维图形建模的模块。其作用为将导出的wrl格式的部件导入LabVIEW的三维环境中,并且根据实际参数建立各部件之间的相对位置关系。
经过上述步骤实现LabVIEW中机器人的虚拟仿真环境搭建。整体步骤如图6所示。
图6 虚拟仿真环境搭建流程Fig.6 Flow of virtual simulation environment building
离线编程系统中的运动学模块是机器人仿真运动的基础。只有先对机器人的运动学进行分析,才能保证离线编程系统中机器人运动时姿态的准确性。机器人运动学包括运动学正解与运动学逆解。机器人的正运动学分析首先需要建立运动学模型,文中采用改进D-H坐标法,建立机器人的连杆坐标系,如图7所示。并根据机器人的连杆坐标系列出D-H的参数,如表2所示。
图7 机器人连杆坐标系Fig.7 Linkage coordinate of robot
表2 机器人D-H参数Tab.2 D-H parameters of robot
(3)
由于在离线编程过程中需要根据机器人的目标位姿计算出机器人各关节角的角度,故需要对机器人进行逆运动学分析,可采用文献[15]中介绍的代数法,根据机器人的末端轨迹依次求出各关节变量(θ1、θ2、d3、θ4、θ5、θ6)的计算公式。
为了使虚拟仿真环境中的机器人具有相关运动功能,开发了机器人轨迹规划模块。通过封装机器人轨迹规划算法,使得离线编程系统中机器人的仿真运动轨迹更加符合实际情况。文中采用文献[16]中介绍的修正梯形运动规律对机器人进行轨迹规划。
基于上述文献中的修正梯形运动规律,对视觉模块输出的机器人起始点与终止点之间的运动轨迹进行关节空间插补或笛卡尔空间插补[17],得到运动过程中各时间机器人末端运动的位置;再将其通过运动学算法模块中运动学逆解的计算公式求得各时间对应的机器人关节值。
离线编程模块是整个系统的重要组成部分,该模块包括离线程序的自动生成、编译以及运行等功能,如图8所示。
图8 离线程序模块功能结构Fig.8 Function structure of offline program module
(1) 离线程序生成
离线程序模块基于运动学模块与轨迹规划模块将目标点位位姿数据自动转化为机器人的离线程序并将其保存在本地。为了提高离线编程程序的可读性,文中开发了一套较为完善的机器人离线编程语言系统,如表3所示。该编程语言主要由指令项和数据项两部分组成。指令项代表的是机器人的运动方式,如关节插补(MOVP)或直线插补(MOVL);数据项是机器人的点位数据,存储的是机器人末端点位所对应的各个关节的数据。
表3 机器人离线编程语言系统Tab.3 Offline programming language system of robot
(2) 离线程序编译
离线程序编译是对自动生成的程序进行数据解析,一是判断点位数据在本地是否成功保存,二是提取关键点的角度值或位姿信息,为后续的仿真运行提供数据基础。
(3) 离线程序运行
离线程序运行是将程序编译后解析出的指令以及数据导入虚拟环境中,通过其中的三维场景对程序指令实现机器人的虚拟仿真运动。机器人作业的过程可以通过图形用户界面直观地显示,仿真结果可用来对离线编程代码进行可行性分析。若结果不符合期望,则需要根据仿真结果对离线程序进行相应修改。
经由上述离线程序模块对离线程序进行自动生成以及验证无误后,即可将离线程序导入到机器人控制系统进行外部加工作业。由于机器人的运动控制由控制器与驱动器实现,离线程序的指令结构与机器人控制系统的运行指令并不兼容。因此在将离线程序导入机器人控制系统之前,还需将它转换成机器人控制器能够识别的数据参数。具体过程如下:首先在LabVIEW中调用运动控制卡的动态链接库,将其API函数封装成运动控制VI并嵌入PC控制系统;再将离线程序进行数据转换后发送到机器人的运动控制卡中;最后通过TCP/IP协议建立工控机与机器人驱动器之间的通信,运动控制卡根据导入的数据发送相应的运动指令给机器人驱动器,由它控制机器人的实际运动。图9所示为具体通信流程。
图9 系统通信流程Fig.9 Flow of system communication
实验中目标加工路径选用常见的直线路径。经由图像采集系统采集的原图像以及经过图像处理系统处理后的图像如图10所示,从中提取的路径起始点与末端点的坐标以及通过坐标转换输入到离线编程系统中的坐标如表4所示。
图10 视觉系统
表4 目标加工点位数据Tab.4 Data of target machining point
离线编程系统根据加工路径的起始点与终止点自动进行轨迹规划以及程序生成,并在虚拟仿真环境中仿真运行。仿真运行结果如图11所示。
图11 仿真运行结果Fig.11 Simulation operation results
最后通过在线通信的方式将离线程序导入机器人控制器中,控制物理机器人运行。物理机器人运行结果如图12所示。运行的路径数据与目标加工路径的数据对比如表5所示。
图12 物理机器人运行结果Fig.12 Experimental results of industrial robot
表5 实际运行路径数据与仿真数据的对比
由物理机器人的运行结果可知:实际运行路径与目标加工路径的最大误差为0.4 mm,证明了基于视觉的离线编程系统满足精度要求。
运行过程中关节的角速度曲线如图13所示。可以看出:机器人在运行过程中关节角速度变化连续且平滑、无突变,可满足工业应用需求。
图13 运行过程中机器人关节速度Fig.13 Joint speed of robot during operation
为解决传统离线编程系统通用性差、可靠性低和二次开发难度大等问题,文中基于VRML技术开发一套基于机器视觉的工业机器人离线编程系统。该离线编程系统具有不需要依赖于具体的CAD软件的优点,同时机器视觉的引入极大地提高工业机器人对外部环境的感知能力和加工作业时的精度。