
发动机零部件加工中低成本视觉识别.docx
11页发动机零部件加工中低成本视觉识别方案 随着发动机生产制造技术的不断发展,发动机零部件缸体、缸盖的生产自动化程度越来越高,向少人化、无人化、以及自动化方面发展在这个生产过程的进化过程中各种自动化以及智能化的设备慢慢取代人工的劳动,设备的可靠性成为了批量自动化、无人化生产中的一个关键因素一旦有设备出现异常,导致加工不合格或者漏加工,就会导致批量质量事故,因此生产过程中的防错、防漏加工方案成为了自动化以及智能化生产的不可或缺的一环市场上应运而生了一些防错方案,专业的视觉相机、专门的检测工作站、以及在此基础上一些系统集成商使用协作机器人加视觉相机来专门防错本文主要论述的是基于开源的OpenCV视觉识别库,通过树莓派小型计算机来实现多位置错漏加工的防错通过简单的编程实现千元级别的低成本视觉防错功能,并通过Snap7开源项目与西门子PLC通讯,从而实现无人化的防错2.3. 防错的原理与实现方法2.1防错原理发动机缸体缸盖的加工中主要分为孔与面的加工,在孔类特性的加工中主要出现的错误类型是因为设备断刀、崩刃等引起的孔类特性加工错误,例如:钻头意外折断后操作者错误消除报警导致的批量漏加工孔、设备更换不合适的刀具引起的加工错误、以及镗孔过程中刀片意外崩裂引起孔径的变化。
面类加工主要是刀具长度没有检测正确导致的漏铣、刀具崩刃导致加工表面粗糙等质量缺陷对于孔类特性的防错,实现原理主要是采用拍照识别孔径大小与有无来判断加工是否正常,对于面的加工通常采用加工前后的色彩变化、加工表面文理的变化来判断面的加工是否正产2.2 实现方法(1)系统图示图1:实时防错监控原理图1.2. 辊道控制PLC 2. 上位机树莓派 3. 工件到位传感器 4. 照相机 5. 声光报警器 6.待检工件 7 .辊道 8. 辊道控制电机(2)实现方法描述初始判定特性设定:首次使用前需要放置一个合格的工件在照相机下方,使用运行在树莓派(2)上的软件(python + OpenCV编写)来采集照片,并设定待检验区域,设置要检测的特性(圆、面、线等),以及判定的阀值如:圆的直径大小与范围,然后保存设置如图2所示,通过鼠标选择待检测区域,可以选择多个区域同时进行检测检测区域中我们待检测的是一个孔类特性,如果有漏加工此处孔会没有,如果加工错误孔直径会变大或者变小选取待选区域后,可以在参数设置文本中设置要检测的圆的直径以及公差范围图2设定检测区域实时检测判定:正常生产时待检测工件(6)自动运行至到位传感器(3)处,等待检测。
到位传感器(3)感应到工件之后发送信号给辊道控制PLC(1),PLC控制辊道电机(8)停止从而使待检工件(6)停止,并等待上位机树莓派(2)采集图像并判断上位机树莓派(2)扫描到到位信号后自动启动照相机(4)采集一幅工件加工特性的照片,然后上位机(2)通过内部软件(python + OpenCV)对图像特征进行处理,判断图片中是否含有待检测特性并且判断待检测特性是否符合要求如图3,检测到一个圆直径在10个单位,圆心坐标是(64,38)图3 在设定区域检测到圆直径在10个单位上位机树莓派(2)判断后会生成工件是否放行信号(合格放行不合格报警),通过snap7与PLC通讯并把判断结果信号写入辊道控制PLC(1) 辊道控制PLC(1)根据判断结果发出报警(不合格)或者控制辊道控制电机(8)放行(合格件) 至此完成一个自动判断流程3)系统判断原理(孔类)系统判断主要是在树莓派(上位机)上采用Python作为编程软件,Python调用OpenCV的圆检测标准函数“HoughCircles”来判断孔是否加工完成或者缺失cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,dp,minDist,param1,param2,minRadius,maxRadius)其中:gray为相机采集后的图像要检测区域灰度化之后的图像,dp,用来检测圆心的累加器图像的分辨率于输入图像之比的倒数。
例如,如果dp= 1时,累加器和输入图像具有相同的分辨率如果dp=2,累加器便有输入图像一半那么大的宽度和高度minDist,为霍夫变换检测到的圆的圆心之间的最小距离,即让我们的算法能明显区分的两个不同圆之间的最a小距离这个参数如果太小的话,多个相邻的圆可能被错误地检测成了一个重合的圆反之,这个参数设置太大的话,某些圆就不能被检测出来了param1默认值100,它是method设置的检测方法的对应的参数对当前唯一的方法霍夫梯度法它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半param2,也有默认值100它是method设置的检测方法的对应的参数对当前唯一的方法霍夫梯度法,它表示在检测阶段圆心的累加器阈值它越小的话,就可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了minRadius,默认值0,表示圆半径的最小值maxRadius,也有默认值0,表示圆半径的最大值本文根据实际设置的为(cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,dp=1,minDist=100,param1=100,param2=30,minRadius=5,maxRadius=20)如果正常加工,识别后可以通过OpenCV的显示功能把识别的结果显示在图片中如图4否则如果无法找到符合要求的圆特征则图像显示NG。
两种情况均把结果通过Snap7的通讯方式传输给西门子PLC,PLC根据结果做出停机以及报警图4识别后显示结果(4)系统判断原理(直线以及颜色)直线类的特性,如铣面等边缘可以采用直线类的检测方法来检测如: edges = cv2.Canny(img, 50, 150, apertureSize = 3),cv2.HoughLines(edges,1,np.pi/180,90) edges为OpenCV对图像进行边缘检测识别出边缘,cv2.HoughLines则对边缘进行判断是否具有直线特性在上文中的圆的检测如果转换为边缘图像则如图5所示图5缘显示图像具体直线的检测方式与圆的检测类似,本文不再论述,可以参考OpenCV颜色判断可以使用cv2.inRange()对需要的颜色进行过滤,过滤后检测图像是否有所需要图形或是否具有图形内容,从而来判断工件颜色是否合格3.4. 实际使用验证与误差分析a.b. 重复测试验证(圆类)本文对圆的检测进行了误差分析,实际测量130组数据计算设置半径的误差在+/-3个单位(相当于+/-1mm),目标值为11个单位(11个单位相当于实际尺寸4mm)通过对130组半径数据进行分析,pp达到了1.37,ppk为0.99接近1。
数据对于加工前后孔的半径变换量大于1mm的特性具有完全的识别能力,对于孔径半径加工前后半径小于1mm变差的孔识别能力不足因此本文论述方法可以用于防错、防漏加工检测,但是不可扩展到精确的尺寸检测表1:实际监测位置、半径表序号XYR12032122203212320301242032125223211620301372030128222812920321210202810…………130162812图6:实际检测半径能力计算3.4. 结论a.b. 结论通过对本文论述的方法的验证,可以实现孔类特性是否加工的防错识别、以及孔加工前后半径变化量在1mm之上的特性的漏加工错加工防错面的加工通过本文方法也具有一定的识别能力,并且具备防错的潜力3.b.c. 本文方法的优点与发展前景4.通过开源的软件(snap7,python, Opencv)以及树莓派来实现灵活的视觉识别,成本极低并且能快速实施可以自动灵活的设置需要判断的加工特性,可以是圆、孔、面、线、以及表面颜色、加工和涂胶线是否有间断自动识别、判断、反馈信息到自动化的生产线,及时发现漏加工产品,避免不合格的工件流入下道工序造成质量不合格、设备撞击等问题。
本文方法具有成本低、部署快速、调整方便等优点适合批量加工中的防错,可以降低人工检测工位节约人员投入 -全文完-。












