基于机器视觉的焊缝跟踪系统研究与设计
2022-04-21叶家辉史欣雨郑凯豪郑洁霁李廷
叶家辉,史欣雨,郑凯豪,郑洁霁,李廷
(嘉兴职业技术学院,浙江嘉兴,314036)
0 引言
焊接技术是现代制造业的基础技术,广泛应用于电子技术、机械制造、交通船舶、航空航天等领域[1]。自动化与智能化是焊接技术的发展趋势,也是当前研究的热点。传统的人工焊接依靠人工识别焊缝,焊接质量依赖于工人的技术水平与工作条件,影响了焊接的效率和效果[2]。焊接行业对焊接操作的可靠性、使用寿命及智能化提出了更高的要求。机器视觉技术、计算机技术、机器人技术的快速发展为焊接自动化技术的发展提供了有利条件[3]。随着我国劳动力成本的逐渐提升,焊缝跟踪技术受到了越来越多的关注。焊缝跟踪技术通过工业相机、传感器等获取焊缝图像,经过进一步处理后得到焊缝的形状位置等特征,控制焊枪移动调整到正确位置[4]。目前使用比较广泛的焊缝跟踪技术有电弧传感技术、光电传感技术、视觉传感技术等[5]。电弧传感技术与光电传感器技术在行业中已有一定的应用,但是难以解决自主寻找焊缝起始位置等问题。视觉传感技术具有非接触、信息量大、抗干扰性强、处理精度高等特点,在焊缝跟踪系统中的应用越来越广泛[6]。
本文采用低成本、小体积的机器视觉模块,通过图像处理算法提取焊缝特征信息,由高性能嵌入式处理器控制伺服电机对焊枪的位置进行调整,实现焊缝自动跟踪功能。
1 系统硬件组成
图2 UnitV2模块
焊缝跟踪系统由电源模块、照明模块、图像采集处理模块、上位机、控制模块与执行机构组成,其系统组成框图如图1所示。电源模块给系统提供稳定的电源,照明模块给被测焊缝提供足够的光源照明,由图像采集处理模块采集焊缝图像信息,经过图像处理算法处理之后将焊缝位置信息传输给控制模块,从而驱动焊枪到正确位置,实现焊缝跟踪的功能。
图1 系统组成框图
照明模块由LED灯构成,通过灯光照明降低环境光源的影响,加强被测焊缝边缘的特征,使图像处理更为稳定。
图像采集处理模块采用UnitV2视觉识别模块。UnitV2是一款高效率的视觉识别模块, 采用Sigmstar SSD202D双核Cortex-A7 1.2Ghz处理器控制核心,集成512MB NAND Flash, 具有1080P高清摄像头,支持USB及串口通信方式,能灵活配合其他模块实现视觉识别功能。
控制模块采用高性能微处理器STM32F407为主控芯片,芯片采用ARM Cortex-M4为内核时钟频率可达168MHz,支持浮点运算和DSP指令,通信接口包括6个高速USART、3个速SPI、3个I²C、2个CAN和1个SDIO接口。STM32F407使用自适应实时存储器加速器,能实现程序零等待执行,提升了程序执行的效率,可实现精确的计算和控制。控制模块根据上位机提供的焊缝信息控制焊枪的角度进行跟踪纠偏。
执行机构由伺服电机及传动结构所组成,根据控制模块的指令控制电机的运动从而调整焊枪的位置。伺服电机的位置精度较好,具有机电时间常数小、线性度高等特性,并且可以进行闭环控制,适合作为焊缝跟踪系统的执行机构。
电源模块为整个系统提供电力供应,为了减少干扰,采用了输入、输出滤波器。交流220V电源经过输入滤波器向执行机构供电,通过交直流转换电路将220V交流电源转换成5V直流电源供给照明、图像采集处理与控制等模块。伺服电机驱动器在工作时会产生高次谐波,从而干扰现场附近的其他电气设备,产生运行失灵或者硬件损坏等故障。为了消除干扰,获得纯净的电源环境,使用了专用屏蔽电缆以及3级电源滤波器。输出滤波器与伺服驱动器相连,通过滤波器构成低阻抗回路,能够有效降低高频干扰,从而确保设备的正常工作。
2 系统软件设计
图像采集模块将采集到的焊缝图像传输到上位机,由上位机采用OpenCV机器视觉库进行处理数字图像处理,准确识别出焊缝的特征点。OpenCV是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。OpenCV用C++语言编写,具有C ++,Python,Java和MATLAB接口,可用于实时视觉应用开发,并提供对于C#、Ruby,GO的支持。OpenCV轻量级且高效,提供了丰富的视觉处理算法,由于其开源的特性并部分以C语言编写,不需要添加新的外部支持也可以完整的编译链接生成执行程序,因此有很多算法移植的应用。OpenCV拥有包括 300 多个 C 函数的跨平台的中、高层 API,代码经过适当改写可运行在DSP系统和ARM嵌入式系统中。
上位机得到原始图像后,需要对其进行处理,处理流程为:图像灰度化、降噪、图像增强、二值化、图像形态学处理、提取特征点,处理流程如图3所示。
图3 图像处理流程
在采集焊缝图像的过程中,不可避免地会受到噪声的影响。噪声的来源有两类:一类是外部环境的因素,比如一些杂质吸附在焊缝上,从而对成像产生了干扰。另外一类是由于采集图像时内部的电子元件、传输通道等引起干扰产生噪声。噪声会影响图像的质量,因此需要对焊缝图像进行相应的预处理以改善图像质量突出目标信息,在本系统中主要包括滤除噪声、图像增强、图像形态化处理三个步骤。
在数字图像处理中,常用的滤波方法有均值滤波、中值滤波等,目的是滤除噪声改善图像。均值滤波是一种低通滤波器,可以去除高频噪声。其基本原理是用若干像素的平均值代替原图像的像素值。其具体过程是在原图像上以目标像素(x, y)选出一个掩膜,该掩膜包含了周围临近像素,将掩膜中的全体像素的平均值赋给当前的目标像素点(x, y),这样依次在图像上从左到右从上到下依次进行卷积计算,直到图像上所有像素点被重新赋值。中值滤波是先将图像中某一像素点的灰度值及其固定邻域的其他像素点的灰度值按照大小进行排序,之后取其中间的灰度值作为该点新的灰度值如果像素点的个数为偶数,则取中间两个灰度值的平均值作为待分配的灰度值。在OpenCV中用cvSmooth()函数实现滤波功能,由不同的参数选择相应的滤波方式。
由于采集图像时,相机曝光不理想会造成焊缝图像的对比度较低焊缝区域与焊缝背景无法分清,影响焊缝识别效果。图像增强的目的就是通过变换关系来提高焊缝图像的对比度,使焊缝区域能从焊缝图像中清楚地被分辨出来,系统采用直方图均衡法来进行图像增强。
直方图均衡化是对原始图像的像素进行一种映射处理,把一个分布映射到另一个分布上,使每个灰度级的像素数处于均匀分布状态,达到对比度增强的效果。在OpenCV中用cvEqualizeHist()函数实现直方图均衡化,输入图像和目标图像为大小相同的8位单通道图像。
焊缝图像中存在一些比较细小的裂缝或孔洞,就需要进行图像形态学处理以消除其干扰影响。图像形态学处理是以数学形态学作为工具,通过某一特定形状的结构元素去遍历待处理图像的整个区域,衡量和提取出对应的形态结构,突出目标对象最本质的形状特征。图像腐蚀的作用是通过结构元素去除图像周围的较小的物体,图像膨胀则是将目标物体周围背景点合并到目标物体中,通常用于填补物体中的空洞。在OpenCV中,用函数cvErode()实现腐蚀功能,用函数cvDilate()实现膨胀功能。在图像处理中,膨胀和腐蚀是不可逆的两种操作。先腐蚀后膨胀的操作称为开运算,图像经过开运算后可以去除图中毛刺、小颗粒噪声以及平滑物体形状边界。
图像二值化是基于阈值分割的图像分割中的一种特例,可将图像分为黑、白两种状态。阈值化分割计算迭代小速度快,广泛应用于图像分割中。二值就是指图像中只存在两种灰度值,一般是指白色和黑色即灰度值分别为255和0。图像二值化的基本思想是将输入图像中每个像素点的灰度值和指定的阈值进行比较判断输出相应的结果。在OpenCV中,通过函数cvThreshold()可实现图像的二值化。为了达到最佳的分割效果,通过函数cvAdaptiveThreshold()使用自适应阈值法实现阈值的自动选择。
为了减少运算量和硬件资源的消耗,通常对指定区域的图像进行抓取分析,即进行ROI空间的抓取。通过cvSetImageROI()函数来对给定的矩形设置感兴趣区域,其中参数rect保存的是感兴趣部位的矩形区域,参数image是输入图像。
边缘和轮廓的检测常用的方法有;Sobel边缘检测算子、Roberts边缘检测算子、Laplace边缘检测算子、Canny边缘检测算子等,通过其卷积算子模板与卷积因子计算来检测图像的边缘像素。Sobel 算子是一个离散微分算子,结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度,它把图像中每个像素的上下左右四领域的灰度值加权差,在边缘处达到极值从而检测边缘。本系统中使用Sobel边缘检测算子,在OpenCV中使用cvSobel()函数可实现相应的检测功能。
本系统使用Harris 角点检测算法进行特征点提取,该算法通过窗口在图像上移动,当窗口内的像素灰度值没有变化时,认为不存在角点;当窗口内至少两个方向上灰度值发生较大变化时,则认为窗口内的像素点为角点。在进行检测时需设置合适的阈值,根据波动大小的不同角点响应值也不同。先设定一个较小的阈值,通过试验不断调整,直到只留下最后的角点。特征点的获取是通过遍历图像中的响应值,当响应值超过阈值时,该点对应的坐标就是特征点,流程如图4所示。
图4 提取特征点流程
3 实验结果
本系统实现焊缝的识别与跟踪,工程中对于焊接误差的要求是在0.6mm以内。实验设定图像采集20帧/s,分辨率为1920×1080,图像采集模块距离焊缝40cm, 焊接电弧电压为 23V, 焊接电流为 150 A, 焊接速度30cm/min。连续30次运行系统记录下对应的偏移量误差值,测试结果如下图所示,小于误差要求。在常温工作环境中,系统连续正常工作24小时无报警,实验表明本系统能满足工程现场要求。
图5 误差测试
4 总结
本文设计了一种焊缝跟踪系统,由电源模块、照明模块、图像采集处理模块、上位机、控制模块与执行机构组成。由图像采集处理模块采集焊缝图像,通过开源机器视觉库OpenCV对图像进行图像灰度化、降噪、图像增强、二值化、图像形态学处理、提取特征点等处理。对图像进行识别后,根据偏移信息调整焊枪的位置。经试验证明,本系统工作稳定、性能可靠,符合工程实际需要,为自动化焊接打下了基础。