打孔机影像定位系统设计

2007-03-09 19:03:27来源: 互联网
前言 计算机视觉的应用大致上可以分成定位、量测、识别、缺陷检测四大类,其中以定位的应用最为广泛。机器视觉系统可以用来检视主机板上的电子组件,也可以用来控制机械手臂,在机械手臂上加装CCD,利用影像辨识的定位,带动机械手臂来做病毒研究、药物混合等一些高危险性的医疗研究。除了精准之外,对人类的生命也比较有安全保障。 影像定位后的坐标转换 市面上影像比对的函数库(Library)很多,使用者可以自行选用合适的函数库。以下所提的系统采用Euresys公司开发的eVision EasyMatch,这是一种基于灰度相关性的图像匹配函数库,速度非常快,而且能够达到次像素(sub-pixel)精度的匹配结果。对于旋转、比率变化(缩/放)和平移等,都能精确找到模板图像(Golden Image)的位置。故本文仅对影像定位后的二维坐标产生的“位移”与“旋转”做探讨。 ● 坐标位移 公式:X2 = X1 + ΔX Y2 = Y1 + ΔY 图1 坐标位移示意图 图1是坐标位移的示意图。 ● 坐标旋转 (1)将(X1,Y1)转换成极坐标→ (X1,Y1) = (R1,θ1) 其中,R1 = √X12 + Y12 θ1 = arctan( Y1 / X1 ),即反正切函数 (2)θ2 = θ1 + θ,其中,θ= 表示旋转角度 得出 X2 = Cos (θ2) * R1 = Cos (arctan(Y1/X1)+θ) * √X12 + Y12 Y2 = Sin(θ2) * R1 = Sin(arctan(Y1/X1)+θ) * √X12 + Y12 图2 坐标旋转的示意图 图2是坐标旋转的示意图。 ● 坐标位移+旋转 遇到同时发生坐标位移和旋转时,先计算位移,再套用旋转的公式,即可算出最后的结果。 下面介绍如何设计出结合“机械运动”与“计算机视觉”的自动化定位系统。 基本架构 ● GEME-3000主控制器:含HSL控制卡,安装Windows XP操作系统 ● 3-Axis定位平台:三菱伺服马达+滚珠螺杆 ● 运动控制器:HSL-4XMO控制模块 ● 计算机视觉组件:使用IEEE 1394 CCD采集影像,利用Euresys eVision的 EasyMatch进行影像比对(Pattern Match),作定位偏移的补正计算。 完整的实际系统如图3所示。 图3 系统架构实机图 系统校正 ● Mitsubishi驱动器调校:10 000 pulse/roll,即运动控制卡送出10 000个脉波,马达会转一圈。 ● 滚珠螺杆的螺距vs. Pulse/Roll:如,螺距=10mm/roll,10 000 pulse/roll意味着1μm/pulse,即每发出一个脉冲,螺杆会前进1μm。 ● F.O.V.(Field of View)的选定:F.O.V.要大于定位点的大小,太小则导致可接受的“初步定位”误差变小;太大则导致因定位点影像太小,影像定位误差大。 ● CCD工作距离的选定:工作距离要大于打孔顶针,以免对焦时打孔顶针撞到工件。当F.O.V.及工作距离确认后,即求出镜头和延伸环。 教导作业 ● 启动系统3轴回到初始位置,待3轴回定位后,再由人工将工件置于3轴之定位平台上并作“初步定位”; ● 手动控制Z轴缓慢下降,使其接近定位平台上方(约0.5~1.0mm); ● 手动控制X/Y轴,使打孔顶针刚好在工件第一个孔位上方;再将Z轴缓慢下降,使其插入第一个孔位内。如定位不准,可以手动移动工件,使其定位更准确。 ● 精确定位后,将Z轴上升至CCD的实时影像可看到完整“定位点”后,执行图4所示的流程图。 图4 图像处理软流程图 自动定位 ● 由人工将工件置于3轴定位平台上,作“初步定位”后并启动本系统; ● 系统会驱动3轴定位平台将CCD移至定位点上方(2个不同位置),取像并利用已“教导”的标准影像做“影像比对”作业; ● 计算出“初步定位”的偏移量(Shift X/Y)及旋转角度 (Rotation Angle); tx = GoldeXY[CCD_Find][1] - m_Find.GetCenterX(); ty = GoldeXY[CCD_Find][0] - m_Find.GetCenterY(); if (CCD_Find==0) { //第一次定位 shiftx = ZeroX - tx*Calibration; shifty = CCD_Y - ty*Calibration; } else { //第二次定位 dx = CCD_Locate[1][0] - tx*Calibration; dy = CCD_Y - ty*Calibration; angle = atan2( dy - shifty, shiftx-dx); CalNewLocate(angle, shiftx, shifty); } ● 通过“极坐标转换”,重新计算工件上所有孔位的新坐标(Point Table)。 void CalNewLocate(F64 angle, F64 shiftx, F64 shifty) { int i; F64 P[TOTAL_POINT*2]; F64 t; for (i=0; i
编辑: 引用地址:http://www.eeworld.com.cn/designarticles/sensor/200703/9631.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部

小广播

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved