首页 新闻 工控搜 论坛 厂商论坛 产品 方案 厂商 人才 文摘 下载 展览
中华工控网首页
  P L C | 变频器与传动 | 传感器 | 现场检测仪表 | 工控软件 | 人机界面 | 运动控制
  D C S | 工业以太网 | 现场总线 | 显示调节仪表 | 数据采集 | 数传测控 | 工业安全
  电 源 | 嵌入式系统 | PC based | 机柜箱体壳体 | 低压电器 | 机器视觉
VPLC系列机器视觉运动控制一体机快速入门(六)标定功能
深圳市正运动技术有限公司
收藏本文     查看收藏

  此前,我们依次讲解了软硬件介绍及计数实例、相机的基本使用、基于形状匹配的视觉定位、BLOB有无检测以及测量尺寸。

  本期课程,正运动技术和大家一起分享和标定有关的详细知识内容。

  视频教程:《VPLC系列机器视觉运动控制一体机快速入门(六)》

  2.png

  3.png

  机器视觉检测结果

  将机器视觉处理的像素结果(单位:像素)转换成现实中使用到的实际结果(单位:毫米),或者是将机器视觉中使用的图像坐标转换成世界坐标的过程。

  4.png

  测量标定是使用已知尺寸的标准模块,如已知半径的小圆块、已知宽度的小方块、刻度尺等物品,在使用机器视觉检测出对应尺寸的像素值后,求出实际尺寸值和像素值的比例即像素比例,之后再将检测的像素结果乘以像素比例即可得出实际值结果。

  5.png

  坐标标定是指使用机器视觉获取几组图像坐标数据(至少9组),然后输入对应的几组世界坐标数据,根据公式计算出矩阵坐标转换系数,然后将检测的图像坐标结果按照这个标定系数转换成世界坐标结果。

  6.png

  7.png

  1.测量标定

  测量标定的实施方法比较简单,只需要将已知尺寸的标准块放到检测平台中,然后使用视觉输出的像素结果和已知尺寸计算得到像素比例即可。

  2.坐标标定--使用标定板

  标定板的特点是特征点的距离是固定且已知的。我们就可以在标定板上选择几组矩阵坐标数据,把某个点设置成坐标原点,再根据实际圆点(或棋盘格)的距离定义对应点的实际坐标,最后再使用视觉检测出对应特征点的图像坐标即可。得到图像坐标数据和世界坐标数据后就可以求出标定系数。

  8.png

  3.坐标标定--不使用标定板

  在没有准备标定板的条件下做坐标标定需要运动机构如机械手配合。

  机械手抓取产品按照指定的位置坐标(机械手坐标)走9个点位(这9个点位需要保证在相机拍照的视野范围内),每走到一个点位就使用相机获取产品特征在当前位置的图像坐标并记录图像坐标数据,依次走完9个点位即可。然后再根据获取的图像坐标数据和记录的机械手坐标进行坐标系转换,得出标定系数。

  注意:在相机结构和检测平台的相对位置发生变化时需要重新标定!

  9.png

10.png

  坐标标定流程图

  11.png

  演示实例说明:本课程实例在《VPLC系列机器视觉运动控制一体机快速入门(三)--形状匹配》实例的基础上增加使用标定板进行坐标标定的功能,并输出标定后的产品位置。

  1.打开ZDevelop软件:点击[文件]→[打开项目]→选择“基于形状匹配的视觉定位”项目。

  2.修改设计主界面。

  12.png

  3.在global_variable.bas文件中增加定义坐标标定使用到的全局变量。
 

  '***********定义坐标标定相关变量*********************

  '定义是否使用标定功能标志,0-不使用标定功能,1-使用标定功能

  GLOBAL DIM d_use_calib

  d_use_calib = 0
 

  '定义标定成功标志,0-标定未成功,1-标定成功

  GLOBAL DIM d_calib_success

  d_calib_success = 0
 

  '标定参数

  GLOBAL ZVOBJECT ca_param
 

  '标定参数数组,依次为:标定类型、对比度、极性、最小面积、最大面积、世界坐标点间距

  GLOBAL DIM d_ca_param(6) 'd开头表示数据结构
 

  '标定误差,最小误差、最大误差、平均误差

  GLOBAL DIM ca_min_err,ca_max_err,ca_avg_err

  ca_min_err = 0

  ca_max_err = 0

  ca_avg_err = 0
 

  '常用颜色变量

  GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOW

  C_RED = RGB(255, 0, 0)

  C_GREEN = RGB( 0,255, 0)

  C_BLUE = RGB( 0, 0,255)

  C_YELLOW= RGB(255,255, 0)
 

  '标定矩阵

  GLOBAL ZVOBJECT ca_mat

  '***********结束定义坐标标定相关变量******************
 

  4.在InitLocator.bas文件中初始化坐标标定相关的测量参数。

  '初始化坐标标定相关的变量

  d_ca_param(0) = 0 '标定类型

  d_ca_param(1) = 120 '对比度

  d_ca_param(2) = 0 '极性

  d_ca_param(3) = 80 '最小面积

  d_ca_param(4) = 20000 '最大面积

  d_ca_param(5) = 9 '世界坐标点间距

  ca_min_err = 0 '最小误差

  ca_max_err = 0 '最大误差

  ca_avg_err = 0 '平均误差
 

  5.新建主界面按下【坐标标定】按钮时弹出的窗口界面calib,并设计界面布局。

  13.png

  

  6.在calib窗口界面中关联元件变量。

  14.png

  

  7.添加在主界面按下【坐标标定】按钮时响应的函数,并关联动作函数名。

  '点击主界面坐标标定按钮时响应的函数

  GLOBAL SUB btn_calib()

  ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(13, 91), HMI_CONTROLSIZEY(13, 91)) '设置坐标标定窗口锁存通道0的锁存大小

  ZV_LATCHCLEAR(0) '将锁存通道0清空

  ZV_LATCH(grabImg, 0) '显示采集图像显示到锁存通道0中

  HMI_SHOWWINDOW(13)

  END SUB

  15.png

  

  8.添加在calib界面按下【提取mark点】按钮时响应的函数,并关联动作函数名。

  '坐标标定界面按下提取mark点按钮时响应的函数

  GLOBAL SUB btn_ca_extract()

      ZVOBJECT inppts, ppts, wpts
 

     '提取像素坐标

     ZV_CALGETSCAPTS(grabImg, inppts, d_ca_param(1), d_ca_param(2), d_ca_param(3), d_ca_param(4))

     ZV_MATINFO (inppts, 400)
 

     DIM row,col

     row = TABLE(400)

     col = TABLE(401)

     if(row * col = 18) then

         TABLE(150) = 1 '提取mark点成功

     else

         TABLE(150) = 0 '提取mark点失败

         return

     endif
 

     '根据mrak点间距和像素坐标计算世界坐标

     ZV_CALGETPTSMAP(inppts,ppts,wpts,d_ca_param(5))

     ZV_MATINFO (ppts, 400)
 

     row = TABLE(400)

     col = TABLE(401)

     if(row * col = 18) then

         TABLE(150) = 1 '提取mark点成功

     else

         TABLE(150) = 0 '提取mark点失败

         return

     endif
 

     '像素坐标和世界坐标放入table中

     DIM i

     FOR i=0 TO row-1

         ZV_MATGETROW (ppts, i, col, 81 + i*col)

         ZV_MATGETROW (wpts, i, col, 131 + i*col)

     NEXT
 

     '设置用于绘制mark点的图像

     ZVOBJECT color

     ZV_GRAYTORGB(grabImg, color)
 

     '和绘制mark点的十字架

     DIM j, pixNum '像素个数

     pixNum = 0

     FOR i=0 TO 2

         FOR j=0 TO 2

             ZV_MARKER(color, TABLE(81 + 2 * pixNum), TABLE(81 + 2 * pixNum + 1), 0, 40, C_GREEN)

             pixNum = pixNum + 1

         NEXT

     NEXT
 

     '用文本绘制mark点的序号

     FOR i=0 TO 8

         ZV_TEXT (color, TOSTR(i,1,0), TABLE(81+2*i)-20, TABLE(81+2*i +1)-40, 20, C_BLUE)

     NEXT
 

      ZV_LATCH(color, 0)

  end sub
 

  在calib界面按下【提取mark点】按钮时仿真效果图。

  16.png

  

  9.添加在calib界面按下【标定】按钮时响应的函数,并关联动作函数名。

  '坐标标定界面按下标定按钮时响应的函数

  global sub btn_ca_calib()
 

     ZV_IMGINFO(grabImg,0)

     ZV_CALCAM(ppts,wpts,ca_param,TABLE(0),TABLE(1),d_ca_param(0))

     is_ca_success=1

     '计算标定误差

     ZV_CALERROR(ca_param, ppts, wpts, 0)

     ca_min_err = TABLE(1)

     ca_max_err = TABLE(2)

     ca_avg_err = TABLE(0)
 

  end sub

  17.png

  在calib界面按下【标定】按钮时仿真效果图
 

  10.添加在calib界面按下【返回】按钮时响应的函数,并关联动作函数名。

  '坐标标定界面按下返回按钮时响应的函数

  global sub btn_ca_param_rtn()

      HMI_CLOSEWINDOW(13)

  end sub

  18.png

  

  11.修改匹配测试子函数中匹配结果输出部分的指令代码。

  if(is_ca_success = 1 AND TABLE(300)) then

                     ZV_GETRIGIDVECTOR(mat_rigid1, 0, 0, 0, TABLE(4), TABLE(5), TABLE(6))'计算刚性变换矩阵

                     ZV_CONTAFFINE(contlist1, mat_rigid1, tsContlist1)'对轮廓或轮廓序列进行仿射变换

                     ZV_CONTLIST(colorImg, tsContlist1, ZV_COLOR(0, 255, 0), 0)'在colorSubImg图像上绘制绿色的轮廓序列

                     ZV_CALTRANSW(ca_param, TABLE(4),TABLE(5),4)

                     d_match_rst(0) = TABLE(3)

                     d_match_rst(1) = TABLE(4)

                     d_match_rst(2) = TABLE(5)

                     d_match_rst(3) = TABLE(6)

                     d_match_rst(4) = TABLE(7)

                 else

                     d_match_rst(0) = TABLE(3)

                     d_match_rst(1) = TABLE(4)

                     d_match_rst(2) = TABLE(5)

                     d_match_rst(3) = TABLE(6)

                     d_match_rst(4) = TABLE(7)

                     ZV_GETRIGIDVECTOR(mat_rigid1, 0, 0, 0, TABLE(4), TABLE(5), TABLE(6))'计算刚性变换矩阵

                     ZV_CONTAFFINE(contlist1, mat_rigid1, tsContlist1)'对轮廓或轮廓序列进行仿射变换

                     ZV_CONTLIST(colorImg, tsContlist1, ZV_COLOR(0, 255, 0), 0)'在colorSubImg图像上绘制绿色的轮廓序列

                 endif

  

  19.png

  【单次执行】按钮按下时的仿真效果图

  

  20.png

  使用标定功能的检测效果图

  

  21.png

  不使用标定功能的检测效果图

  本次,正运动技术VPLC系列机器视觉运动控制一体机快速入门(六)——标定功能就分享到这里,更多精彩内容请关注“正运动小助手”公众号。

  本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。

  正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等等。


 

状 态: 离线

公司简介
产品目录

公司名称: 深圳市正运动技术有限公司
联 系 人: 戴德弟
电  话: 0755-32976042
传  真: 0755-2606 6955
地  址: 深圳市宝安区西乡洲石路阳光工业园A1栋5楼
邮  编: 518100
主  页:
 
该厂商相关技术文摘:
简单易用的以太网数据采集卡应用开发之C#
机器视觉运动控制一体机在点胶胶路检测上的应用
正运动技术与合作伙伴邀您共聚2024武汉光博会
EtherCAT运动控制器Delta机械手应用
厦门工博会:正运动技术邀您探索智能制造新趋势
开放式激光振镜运动控制器的视觉校正振镜精度解决方案
重庆国际电池展:正运动邀您共赴电池智造交流会
EtherCAT运动控制器的MATLAB开发
成都工博会:正运动技术邀您探索智能制造新趋势
运动控制卡/运动控制器的ZCAN总线ZMIO310扩展模块使用
EtherCAT运动控制器在ROS上的应用(下)
运动控制器/运动控制卡配套ZCAN总线ZIO模块的使用
更多文摘...
立即发送询问信息在线联系该技术文摘厂商:
用户名: 密码: 免费注册为中华工控网会员
请留下您的有效联系方式,以方便我们及时与您联络

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 不良信息举报
工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2022 Gkong.com, All Rights Reserved