OPT的智能相机配套的SCISmart(赛视)视觉软件包的试用经验。
勇哥用官方给的一个示例测试了一下。
要求如下:
测量a, b两个间隙,判断是否在一个范围内,如果OK 显示 a和b的间隙值。如果NG,则显示工件的长宽,并输出到csv文件中,做为ng原因的分析用。
勇哥编制的流程如下:
下面详细说说每个流程块完成的功能:
comm
tcp,ip算子的设置如下:
数据页设置为:
格式页不设定任何参数。
逻辑运算设置如下:
即判断如果读取字符为 grab,则为真。
当程序run后,可以用tcp工具新建一个服务器来测试:
工具可以显示视觉系统运行后是否连接上服务器,以及向客户端发送字符串grab以触发comm流程块。
If1
双击向下的箭头,弹出判断流程块的设置项目。
delay
当If1为flase时,延时一定时间。
说明书上说这个延时设置为9999999ms,而且说这个延时作用是为了减少内存占用资源,勇哥感觉是不是讲错了。
这东西试了一下也许就是Thread.sleep()的功能,释放一会cpu,把当前线程挂起来一定时间。怎么能设置为最大值9999999ms呢?!
勇哥设置为1000ms,程序正确运行。
ImgAcq
因为是实验,就从磁盘目录读取图片,因此使用算子“导入图像”
那个勾,会循环调用1.bmp当前目录中的全部图片。
接下来的blob算子是为“ROI基准”算子找一个基准对象用的。勇哥设置参数如下:
注意看其中的数字1,表示分析出一个对象,如果出现多个对象,则要调节参数至一个对象为止。
在这里的blob分析所做的事应该相当于在halcon中设置roi, 然后reduce_domain,然后再做一下阈值。
“ROI基准”算子是为了解决工件位置会变化问题的, 类以于我们在hlacon中做仿射变换的目的一样。
这里就可以选择上一步blob获得的中心位置
"二值化"算子在这里是为了去掉粘连小工件间隙位置的胶状物部分。就是红框所示的部分。
“形态学”算子的开运算,在这里为了填充一个小白点,减少干扰。
这个算子包括了常见的形态学算子。
“卡尺”算子用来找边,这里我们可以利用上面的“ROI基准”的设定,以让找边的定位框随着工件移动而进行移动,确保相对位置不变。
当卡尺勾选“所有极性时”,我们可以测量出两条拟合线的间距。这个在“卡尺距离”上有显示。
“几何关系”在这里用来算工件中心到顶边的距离。
接下来的“逻辑运算”判断视觉的结果。
接下来的“脚本”算子,用来记录中间结果,以供其它几个用于显示的流程块 dimm, disresult使用。
其中Vars为自定义变量,在菜单“设置”-〉“变量设置”面板中进行设置。
其中N是数值型,B是bool型。
If2
这个判断块用来执行ImgAcq流程块的逻辑判断结果。
dimm
“图形输出”算子设置显示内容。
我们在这里显示出了之前自定义的几个变量。
“导出到csv”算子的设置如下:
其中批量是追加方式写内容,单条是总是固定写一个位置。
disresult
这个流程块设置跟dimm是差不多的,就不再赘述了。
最后勇哥总结几个问题:
(1) 在我们编辑一个算子的参数时,如果不按下图中那个确定或者取消按钮的话,你是无法操作软件任何地方的功能的,刚开始勇哥以为软件是不是卡死了。
(2)这软件调试起来有点麻烦。
在流程图上没有运行结果显示,你得通过算子列表中的状态观察运行信息。
而且这个信息只是 ok, ng,不包括更详细的信息。
(3)普通算子块,每个都拥有自己独立的算子列表,这个信息在说明书中没有讲清楚,让勇哥饶了半天。
刚开始,勇哥就是搞不明白算子块怎么样跟算子联系起来。现在看来,“普通算子块”这个名字之所以不叫“普通流程块”,原来就是表明它就是一堆算子的集合。
(4) OPT的这套视觉软件上手极简单,勇哥前后也就花了一天时间,就能把它玩上手。这个软件基本上不需要编程,不是程序员也可以上。
所以从易用性上来看,非常不错的。至于实际视觉应用的效果,则需要以后积累一段时间才可以评论。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

