一种刮研机器人及其高点识别算法的设计
2021-10-20曹恒督
曹恒督,高 志
(华东理工大学机械与动力工程学院,上海200237)
1 引言
刮研是用来对机械设备中某些精密配合表面进行光整加工的工艺方法,它可以降低配合面的表面粗糙度值,提高其配合性能、润滑性能及机械效率,达到磨削加工难以达到的表面加工精度,是高档精密设备所必需的工艺过程,如机床导轨平面和机床工作台面的加工[1]。
刮研主要包括两个工序:研磨显点和刮削高点。该工艺通过互相研磨表面附有显示剂的两个配合工作表面或者工作表面与标准表面之间来显示出工件表面的高点,即相对不平点,然后用刮刀以微量刮削的方式刮去高点[2]。如此不断重复研点与刮点的过程,直到达到规定的表面精度要求为止。当前刮研操作主要依靠手工来完成,在人工研磨显点之后,工人双手握持刮刀,使刮刀与待刮表面呈一定切削角度,并对刀头施加下压力,后用腰部前顶刀柄以使刮刀刮削高点,并在之后顺势提起刮刀,完成对一个高点的刮削。刮研过程劳动强度大,长期从事会造成工人下肢淤血,导致下肢静脉血栓综合症等健康问题[3]。目前成熟的刮研辅助工具只有动力刮刀,它通过刀片的振动来代替人力进行刮削操作,但是仍然需要人工手持定位表面高点[2]。
机器视觉技术是最近几年随着计算机硬件与软件技术、光学摄影技术等成熟发展而新兴起来的一门学科,相机拍摄物体图像并传输至计算机后使用特定识别算法对其进行分析处理即可得到所需信息[4]。将机器视觉应用于材料表面的特征识别与定位也成为国内外研究的趋势,文献采用KNN算法结合小波系数对轨道表面质量进行检测[5];文献则基于最小距离分类方法对钢板图像进行表面质量检测[6]。虽然目前针对表面特征的检测识别算法很多,但不同材料表面的不同特征需要采用不同的识别算法。
在熟悉了解传统刮研工艺的基础上,结合机器视觉技术,创新性的开发出一套基于视觉识别技术的自动表面刮研机构,并开发出适用于刮研表面高点特征识别的视觉处理算法,使用该算法可以从待刮表面图像中准确识别出需要刮削的高点并确定其位置,后用该位置信息指导刮研机器人运动。
2 刮研机器人整体结构设计
2.1 机械机构设计
该机构主体由一个直角坐标型机器人与相机组成,如图1所示。X,Y轴电机负责移动刮刀到高点位置及实现刮削操作,Z轴电机通过绕线和弹簧片与刮刀相连,用以使刮刀压紧在待刮表面上,负责提供刮削压力,刮削完成后电机反转放松刮刀。刮刀采用基于人工刮刀的改进设计,使之更好的与机器人运动机构相配合。相机获取研点后待刮表面的图像,计算机对其进行数字图像预处理之后,使用特征识别算法对其进行后续处理,识别出需要刮削的高点位置,并将该位置信息传递给直角坐标机器人执行部件的驱动器,进而驱动各坐标轴电机运动来执行刮削操作。照明光源可以消除待刮表面上的阴影,协助相机采集到更加清晰准确的表面图像。整体机构的工作原理,如图2所示。
图1 刮研机器人整体结构Fig.1 Overall Mechanical Structure of Scraping Robot
图2 刮研机器人工作原理Fig.2 Operating Principle of Scraping Robot
2.2 控制系统设计
X轴电机与Z轴电机为机器人刮削操作提供刮刀推力与压紧力,选用型号为57CME23的雷赛步进电机,电机保持转矩为2.3N.m。Y轴电机只负责刮刀的沿轴运动,没有外加负载,故选用体积较小的型号为42CME08的雷赛步进电机,电机保持转矩为0.8N.m。机器人三轴电机的驱动器均选用雷赛H2X-CAN506总线型混合伺服驱动器,该驱动器基于标准的CANopen协议,支持位置、速度、回零等控制模式,可以与适配计算机的CANopen通讯主站进行数据通讯,最多可对127轴电机进行组网,最高通信速率为1Mbps。设备选用型号为周立功CAN-USB的通讯主站卡,该卡支持5Kbit/s~1Mbit/s的CAN通讯波特率,一端可以与电机驱动器进行CAN数据通讯,另一端可以通过调用库函数与计算机进行USB数据通讯。设备的图像处理与特征识别算法通过OpenCV库来实现;使用QT库来组织控制软件架构与搭建人机交互界面。整机控制系统结构,如图3所示。
图3 刮研机器人控制系统结构Fig.3 Structure of Scraping Robot’s Controlling System
3 相机的标定与视图的鸟瞰化
使用相机准确获取研点后待刮研表面的图像是整个工作流程的第一步,它对后续整个机构的高点识别定位精度及运动控制精度都有着根本性的影响。如图4所示,是一般相机的小孔成像模型。
图4 相机小孔成像模型Fig.4 Pinhole Imaging Model of Camera
在小孔投影成像模型中,光轴与图像平面的交点称为主点,f为相机的焦距,即投影中心到成像平面的距离,实际计算中,由于感光像素的形状误差,会使用两个焦距fx及fy来表示将连续图像坐标转换为离散像素坐标时不同垂直方向上的度量单位。用两个参数cx和cy来表示成像平面中心相对于光轴的误差偏移。根据相似三角形原理,用齐次坐标形式下的矩阵乘积来表示三维空间点(X,Y,Z)与成像平面上所对应的像点(x,y,f)的关系:
其中,
由于小孔通光量过小而需要镜头来收集光线,这样由于镜头的制造误差引入了图像的透镜畸变。透镜畸变主要有两种:径向畸变与切向畸变[8]。径向畸变是由透镜的球面形状误差造成的;切向畸变是由整个镜头中透镜的安装误差造成的。对于径向畸变,可以用r=0附近的前几项泰勒级数展开来描述:
对于切向畸变,根据铅锤模型算法,可以用两个参数p1,p2来表示:
其中,(x,y)是成像平面上畸变点的原始位置,(xcorrected,ycorrected)是矫正后的新位置。由以上数学模型可知,表征相机的透镜畸变共需要5个变量:三个径向畸变变量k1,k2,k3,及两个切向畸变变量p1,p2。在相机标定过程中将他们组合在一个5×1的畸变向量中。
相机的标定就是通过一定手段来确定相机内参矩阵与畸变向量等固有参数的过程。该设备采用型号为U-300C的低功耗CMOS工业相机,预设像素分辨率为1024×768(32FPS),灵敏度为1.0V/lux-sec550nm,曝光时间为0.0556-683.8ms。采用张正友相机标定方法[9],借助OpenCV视觉标定库函数加以实现,以黑白方格棋盘作为标定物,拍摄标定棋盘不同姿态下的12张照片作为标定参照,如图5所示。
图5 相机标定实验Fig.5 Experiment of Camera Calibration
最终标定结果为:相机内参数fx=1033.25,fy=1034.75,cx=320,cy=240;相机透镜畸变系数为k1=-0.115803,k2=0.605959,k3=-1.21121,p1=0,p2=0。根据标定结果参数对相机所获取的图像进行矫正之后就可以得到准确反映待刮表面实际场景的图像。
在本设备中,相机的光轴应该与刮研平面互相垂直,这样获取的图像才会准确反映表面实际情况,才能保证由像点像素坐标准确还原到刮研点空间坐标。但由于设备的装配误差,不能保证相机光轴与刮研平面的绝对垂直,如图6所示。
图6 理想情况与实际情况相机位置与成像差异Fig.6 Difference Between Ideal and Practical Imaging Conditions
需要对相机最后获取的图像进行鸟瞰化操作,即将图像中发生变形的高点通过一定映射方式恢复成实际的形状。定义一个3×3的矩阵来表示从一个平面到另一个平面的投影映射,称之为单应性矩阵[10],整个映射过程称为透视变换,如下所示:
4 图像处理与刮研高点识别定位
4.1 图像滤波
由于拍摄环境光照及相机本身的原因等,获取的图像会混入噪声,对后期特征识别影响较大,所以需要在尽可能保留图像自身细节特征的情况下对噪声进行抑制,这个过程称为图像滤波操作。采用双边滤波技术对图像进行降噪处理,双边滤波结合图像的空域滤波与值域滤波为一体,将图像中一个像素的值用与之在位置上相临近的且灰度值相似的像素群的平均值代替[11]。它可以在很好的保留图像纹理与边缘信息的基础上对噪声加以滤除。
4.2 图像灰度化与二值化
图像的灰度化与二值化处理可以在有效削减图像信息量并加快图像处理速度的基础上保留感兴趣的图像纹理轮廓信息,并完成前景与背景分割工作。刮研常用的染色剂为蓝色,而铸铁平板为黑灰色,所以考虑使用色调及饱和度信息来实现图像的灰度化以突出其蓝色高点部分。将图像原生的BGR颜色模型转换为HSV颜色模型后提取H(hue色调)通道和S(saturation饱和度)通道以构建灰度图[12]。
在刮研过程中只关心着色高点范围的大小和位置分布,并不关心其纹理,所以对图像进行二值化操作以保留高点区域轮廓。本设备采用的二值化方法如下:首先对图像外围背景进行漫水填充操作,漫水填充会设定两个阈值确立一个亮度范围,使与种子像素亮度值之差在该范围内的周围像素被漫水而被设为某一固定亮度值。漫水后可以使背景亮度统一为零,增大背景与前景的亮度差异,使后续的二值化操作更容易区分。后选择二值化阈值为1,像素值大于1的设为255即白色,小于1的设为0即黑色。最终灰度化与二值化效果如图7所示。
图7 刮研平面灰度图像与二值图像Fig.7 Grayscale Image and Binary Image of Scraping Plane
4.3 轮廓查找与定位标记刮研高点
从研点后获取的图像中可以看出,有些高点区域之间存在粘连,这些高点在轮廓识别中都会被识别为同一个高点,导致无法保证完全刮削。所以需要把图像中相互粘连的高点分割识别开来,并标记刮研点,即下刀点。本设备在基于OpenCV视觉库中轮廓查找算法与最小面积轮廓包围矩形算法的基础上,开发了一套针对刮研表面高点区域分割与识别的处理算法,算法具体操作步骤如图8所示。
图8 高点分割识别算法流程Fig.8 Segmentation and Recognition Algorithm of High-Points
其中,形态学腐蚀指的是求二值图每个像素邻域范围内最小值的过程,以此来忽略一些面积过小高点。根据实际实验得出r=15pixles时高点分割识别效果最好。算法实际实验处理效果,如图9所示。
图9 高点识别算法效果Fig.9 Result of High-Points Recognition Algorithm
各个刮研点确定以后通过简单直接的坐标变换可以将二维图像坐标换算为刮研平面二维空间坐标,用以指导机器人各轴电机运动,完成刮削操作。
5 实验验证
采用自主设计的刮研机器人及高点识别算法进行机床平板台面高点识别实验,如图10所示。平板尺寸为200mm×200mm,材料为高强度铸铁,在与研具互研显点之后由相机对其进行拍照,后传至计算机用识别算法进行处理。实验结果显示共识别出106个待刮研高点,经检验之后发现有两处漏识别,一处过识别,如结果图中黄色标记所示,算法高点识别与定位的准确度为97%,实验结果表明该图像处理算法可以很好的将不同面积大小及相互粘连的高点区域分割标记,并确定各个刮研点的坐标位置,可以满足该自动刮研设备的高点定位要求。
图10 刮研机器人及其高点识别实验结果Fig.10 Scraping Robot and Experiment Result of High-Points Recognition Algorithm
如表1所示,列举五个已确定刮研点位置的图像像素坐标。
表1 示例标记高点位置坐标Tab.1 Coordinates of Five Tagged High-Point Examples
6 结束语
设计了一种基于机器视觉的自动刮研机构,用于代替繁重的人工刮研操作,并阐述了其机械结构与控制系统;详细说明了该设备的图像处理与特征识别算法,通过该算法可以准确地识别并分割再定位待刮研平面上的高点,将高点的像素坐标传递给机械执行机构的控制设备,经过简单的坐标变换将其转换为实际刮研平面坐标,从而指导机构实现刮削操作。实际实验结果表明该算法可以准确的识别和分割高点,使用该高点识别算法及整套刮研设备可以大大提高刮研操作的效率,减轻工人的劳动强度,消除刮研操作对工人健康的危害,达到机器换人的目的。