戴福全,刘路杰
(1.福建工程学院 机械与汽车工程学院,福建 福州350118;2.福建海源复合材料科技股份有限公司,福建 福州350101)
近年来,工业界广泛采用机器人与视觉配合的方式实现生产线的上下料、分拣任务,相关的研究也成为热点[1]。叶卉等[2]采用双目相机立体视觉,通过OpenCV和Triclops库,搭建了一套抓取系统,实现了对圆柱体和长方体薄板的分类位姿识别。解明利等[3]对传统的Hough算法进行了改进,设计了一套基于机器视觉的分拣系统。陈立挺等[4]研究了一种基于MLP分类器的视觉算法,实现了对工件的识别。在实际的企业生产中,线激光相机的应用相对与单目相机还是较少的,单目相机只能获取物体的二维平面数据,无法获取物体高度数据。本研究采用3D线激光相机和单目相机相结合,基于视觉处理平台Halcon,在Qt软件框架下进行二次开发,实现了对分拣对象的位姿估计及中心坐标的求取,构建了机器人视觉引导的自动抓取和分类软件框架,为实际生产提供参考。
抓取系统硬件部分主要包括ABB机器人、EPSON机器人、激光相机、单目相机、LED光源、工控机(上位机)、光电开关传感器、PCI数据采集卡、传送带和控制柜等,如图1所示。系统由抓取和分拣两个子系统组合构成,可以实现对无序堆叠的多类物块进行抓取、分类并按照一定的角度摆放。抓取子系统采用的是3D视觉方案,ABB机器人负责抓取无序堆叠摆放的物块,放置到传送带上。分拣子系统采用的是2D视觉方案,EPSON机器人从传送带上抓取物块,并按照一定角度分类摆放在托盘上。工控机作为两个子系统共同的主控,负责协调两个子系统中机器人的动作,工控机与相机、机器人之间通过TCP/IP获取图像和发送控制命令[5-6]。
图1 抓取分类系统组成Fig.1 Composition of the grasping and classification system
抓取子系统中激光相机安装在六轴机器人端部,随着机器人而移动,并且分别连着机器人和工控机,机械手根据其所在位置,通过I/O接口发送命令给相机,控制相机扫描获取图像。分拣子系统中,传送带两侧安装有两对光电开关传感器,其通过PCI数据采集卡连接到工控机,以实现将模拟信号转换为数字信号,其中第一对传感器控制安装在其正上方的单目相机获取图像,第二对传感器控制机械手抓取物块。
在视觉处理过程中,激光相机和单目相机都需要进行内参、外参标定,内参标定用于畸变矫正,外参标定用于相机坐标和机器人坐标的变换[7-10]。标定完成,抓取系统的3D相机可以调用标定信息对图像进行畸变矫正,经过视觉处理后得到物块的中心点坐标高度值。根据高度值选出堆叠物体中最高的物块,再计算此物块在相机坐标系下的位姿,在经过坐标转换后得到最终机器人坐标系下的位姿。分拣子系统采用的是模板匹配方法来判断物块类型,以及获取中心坐标和旋转角度。模板匹配的方法众多,其中基于外型轮廓的模板匹配应用最为广泛,对复杂物体同样适用,物体表面轮廓特征越多,效果越好,此处选取较为典型的圆形物体、矩形物体和六边形物体作为实验对象。
抓取子系统针对无序堆叠的物块抓取首先需要获取其三维位姿,步骤如下:
(1)相机在机器人带动下扫描物体区域,得到一幅高度图像。
(2)通过Halcon算子将扫描得到的图像按照点云的x、y、z坐标转换为灰度值,得到Image_X、Image_Y和Image_Z 图3张图片。
(3)通过算子“xyz_to_object_model_3d”将Image_X、Image_Y和Image_Z图转换为三维模型,再通过“select_object_model_3d”选出3D模型中的物块部分。接着通过算子“get_object_model_3d_params”查询三维模型的属性,获取物块中心坐标的高度值Z,选取Z值最大的为待抓取物块。
(4)利用算子“moments_object_model_3d”计算出相机坐标系中的位姿。对该位姿使用标定参数校正,得到三维姿态,再通过坐标变换转换为机器人坐标系的位姿,并将其发送给ABB机器人。
分拣系统通过面阵相机获取传送带上待分类物体图像,再通过视觉算法计算物体的中心坐标,从而实现机器人对物体的分拣,具体步骤为:
(1)创建模板。模板创建是在标准的物体图像选择ROI区域,并将其保存。本实验中一共有3种不同的对象需要分拣,包括圆形物体、矩形物体和六边形物体,故需要创建3种不同的模板。
(2)模板匹配。匹配过程先调用“read_shape_model”算子读取模板,再通过“find_shape_model”算子进行匹配,当匹配分值大于0.95时判定为匹配成功。由于存在3种对象,匹配过程先采用一种模板进行分值计算,若分值大于0.95则认为成功匹配,否则继续读取下一个模板,再进行匹配,直到匹配成功为止。如图2为匹配结果,从匹配结果可以看出物块类型、中心坐标、角度以及消耗时间。
图2 模板匹配结果Fig.2 Results of template matching
软件主要的核心算法代码是在Halcon环境下编写,并进行程序功能验证后,导出为C++代码,然后移植到Qt框架中,再通过UI构建整个功能界面,最后生成应用程序。通过此方法实现了Qt和Halcon的联合混编,实现抓取分类功能。
上位机软件根据模块化设计思路设计,其架构按照主要功能分为4个模块:通信模块(与机器人及相机数据交换)、相机模块(获取图像)、图像处理模块(处理图像获取需要的数据)、可视化模块(显示图像处理结果)、传感器模块(控制光电开关传感器),如图3所示。
图3 软件架构Fig.3 Architecture of the software
系统软件交互界面的主要功能包括:相机和机器人之间的通信、采集图像画面显示、实时消息显示、机械手坐标补偿调整及计数等等。相机和机器人之间的通信基于TCP/IP协议[11],主要功能是进行数据交换,其优点是传输速度快、效率高,有效地保证了数据传输的稳定性和可靠性。图像显示模块的主要功能是显示图像处理结果,从相机获取图像开始到图像处理过程中的每一步都实时显示在窗口中。实时消息框的功能则是打印系统每一步的运行状态,包括下位机返回的数据以及上位机发送的数据等等。通过图像和消息的显示,可实时监控系统运行的情况,有效保证了系统运行的稳定性。由于标定存在不可避免的误差,通过机械手坐标补偿调整功能,微调偏移量,可提高系统精度。
系统首先通过3D相机对无序堆叠的零件进行扫描定位,再由6轴机器人抓取至传送带,2D相机识别传送带上零件种类后,SCARA机器人将零件抓取至分类位置。具体来说,6轴机器人先带动3D相机进行扫描。当机器人运动至扫描区域前端时,机器人通过I/O接口发送命令给激光相机,打开激光线开始扫描获取图像。获取的图像经由工控机程序处理后得到物块位姿,再将位姿发送至机器人抓取零件,然后放置在传送带上。当零件移动到相机正下方传感器处时,传感器触发相机拍照,再经视觉软件处理后判断零件类别。同时,视觉软件计算得到物块中心坐标及角度,SCARA机器人基于这些信息移动至传感器2处。当零件到达传感器2时发出到达信号,SCARA机器人即吸取零件将其分类放置。分拣子系统布局结构如4所示。
图4 分拣子系统布局结构示意图Fig.4 Schematic illustration of the layout structure of the sorting subsystem
抓取系统将无序堆叠的物体抓取至传送带,分拣系统将传送带上物体分类摆放。利用前面提到的方法,系统能够顺利实现无序堆叠的物体抓取及分类摆放,实验结果如表1所示。
表1 模板匹配结果Tab.1 Results of template matching
从表1可见,系统可以准确识别物块的类型、中心坐标及角度,模板匹配精度都大于95%。另外,每张图的匹配时间在65 ms以内,识别一次所需时间平均值为47 ms。视觉定位结果与机械手末端实际抓取位置的放置误差在0.1~1.5 mm内(企业要求误差在±5 mm以内),摆放角度在5°以内,具有较高的定位精度,可以较好满足企业生产要求。 此外,试验还对抓取分拣系统的分拣效率进行了验证,如表2所示,正常企业员工的分拣速度为50个/min左右,而采用机器人分拣最少可以达到82个/min左右,生产效率提高了将近62%,物块的识别分类能够达到100%,大大提高了企业的生产效率,节约了人工成本。然而,由于未在传送带上加入编码器,机器人无法提前预知物块位置,随着传送带速度的提高,机器人在抓取衔接处不易对准容易滑落,抓取率也有所下降。
表2 单位时间内分拣个数与抓取成功率结果Tab.2 Results of the sorting number and grasping success rate in a time unit
基于机器视觉,通过计算中心矩和模板匹配的方式获取物块位姿和坐标,提出了利用六自由度串联工业机器人和SCARA四轴机器人对物体抓取分类的方法,并编写了上位机控制软件,搭建了一套抓取分类系统。实验结果表明,本系统满足预定设计要求,生产效率提高了62%左右。下一步将针对三维位姿估计算法进行研究,提高抓取速度,结合深度学习对产品进行分类和判别。由于视觉标定存在不可避免的误差,所以对于抓取点坐标的准确度有待提高。