视频监控工件螺丝是否正确锁住
自动锁螺丝机已经被广泛应用,在无视觉的自动锁螺丝机上,很多螺丝由于定位不准,
没有被锁上。当然,很多人工锁螺丝的工件上,更加容易出现此类问题。视觉监视螺丝
有无锁上,成为很多自动化生产线,特别是无人车间必须解决的问题。
最近,笔者所在部门刚刚完成一个实际的螺丝有无上锁的小CASE,顺便整理出来供大家
分享。(注:笔者使用机器视觉大师进行结果重现, 用于实际工程的系统是FVS一体
式可编程机器视觉控制器系统,两个软件的机器视觉算法是一致和兼容的。机器视觉大师
是没有IO通信的,结果无法输出到执行机构。)
下图实际检测的工件图:
工件总共需要6颗螺丝,锁住两个小零件(不知道正确的叫法是什么),螺丝使用内六角
扳手。每一颗螺丝都需要被确认锁上,如果任何一颗螺丝掉队,需要系统进行报警,并
通知后续工位进行处理。
整个视觉任务要求很简单,就是检测螺丝有无,这种任务如有无,长短,正反,一般当仁不让
地使用双态识别算子。是的,就是用双态识别算子,不过,如果要达到可靠的监视功能,还是
需要一点点小技巧的,下面跟我一起来学习如果使用双态识别算子实现任意多数量螺丝有无
锁上的工程需求吧。
为了节省篇幅,笔者对机器视觉大师的一些基本操作不再介绍,直接进入相关的操作环节。
添加双态识别算子
下面是建立双态算子进行零件监视的过程。
一、点击菜单”控件” ->”定位类”->”双态测量”添加到视场,将算子拖动到零件位置。
二、双击该算子,进行参数设置和模板学习。显示参数设置窗口。
选择模板区形状为环形(注意是环形),并且对称显示。关闭后,重新调整模板和搜索区大小。如下图:

为什么使用环形的模板框呢?这里笔者想重点进行说明。
检测螺丝有无第一种方法可以拍摄和学习测螺丝上紧后的状态,然后使用排除法,将其它状态进行
排除,以此判断螺丝是否锁紧,如下图:
,
第二种方法是拍摄和学习无螺丝的状态,同样采用排除法进行判断螺丝有无锁紧(这种方法是第一种
方法相反的情况),如下图:
第二种方法的图像让人看起来更悦目,但是该方法有个缺陷,就是随便有个物体挡住螺丝孔的话都
会产生螺丝已经上紧的误判。
由于螺丝为头部内六角形状,如下图。在螺丝上紧以后角度可能会产生变化,图像可能产生
旋转,如果使用第一种方法,将对识别结果产生不利影响。故使用环形模板区,可以直接避
开这种干扰。
(螺丝头部清晰放大图)
三、在“学习”页,点击”学习模板一”进行学习。
Cai
,
四、在”识别”页,选择”平方差”识别方法,最小分数设置为0.9以上。
使用复制的方法,添加其它“双态识别”算子,调整好位置以后,每个算子重新学习一遍。如下图:
编写脚本
点击菜单”模式”->”编辑脚本”, 弹出”编辑脚本”对话框。选择测量类型为“质量检测”。输入判断脚本语句。
good
上面的语句解释如下:
part1 = (sight2.dual1.res == 0 and sight2.dual5.res == 0 and sight2.dual6.res == 0 )
这个语句进行逻辑运算,表示如果视场2零件1上面的螺丝1,5,6号螺丝都上紧的话,
结果为真,否者为假。
语句sight2.dual1.res表示为视场sight2的算子名称为.dual1的检测结果。由于我们仅对模板
一进行学习,该默认结果索引值为0(从0开始计)。如果结果为0,表示学习的模板一有检测
到正确的模板,该区域是正常的。
if part1 and part2 then
mvs.good = 1
mvs.ng = 0
else
mvs.good = 0
mvs.ng = 1
end
这个语句可以解释为如果视场2中零件1上的所有螺丝和零件2上的所有螺丝已经上紧,
那么该次结果是合格的。可以将系统变量good设置为1,ng设置为0,否则表示有螺丝
没有上紧,将good变量为0,ng设置为1。
质量检测类任务支持2个系统变量:good和ng,具体如下:
变量名
|
说明
|
类型
|
good
|
合格标记
|
布尔(1为真,0为假)
|
ng
|
次品标记
|
布尔(1为真,0为假)
|
sigh2
相机视场进行演示
检测运行
点击菜单”相机”->”测量运行”,进入检测状态。放置工件到视场位置,然后点击”下一个”按钮完成一次自动测量。
分别任意拆下一个或多个螺丝模拟,总共进行9次模拟,结果记录如下:

合格字段数据值如果为1,表示当此记录的产品螺丝全部上紧,否则次品字段的数据将为1,表示有螺丝
没有上紧或缺失。下图是单次测试时,每个双态识别算子的读数值,可以
看出每个算子的res读数都为0,该次结果是合格的。
|