莘羽专业数码电器网
首页 > 白家电 > 机器视觉运动控制一体机测量标定

机器视觉运动控制一体机测量标定

导语:VPLC系列机器视觉运动控制一体机实现测量标定的功能,将机器视觉处理的像素结果(单位:像素)转换成现实中使用到的实际结果(单位:毫米),或者是将机器视觉中使用的图像坐标转换成世界坐标的过程。

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

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

机器视觉检测结果

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

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

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

1.测量标定

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

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

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

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

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

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

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

坐标标定流程图

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

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

2.修改设计主界面。

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,并设计界面布局。

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

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

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点】按钮时仿真效果图。

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

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

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

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

global sub btn_ca_param_rtn()

    HMI_CLOSEWINDOW(13)

end sub

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

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

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

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

本次,正运动技术VPLC系列机器视觉运动控制一体机快速入门(六)——标定功能就分享到这里,

标签:

上一篇 目录 下一章

猜你喜欢

白家电 2023年CP...
2023年CPU排行榜:揭秘顶尖处理器的天梯图 性能与能效平衡 在CPU排行榜中,性能与能效是衡量标准的两个重要维度。2023年的天梯图显示,这些顶尖处理...
白家电 国家金融科技测...
高效监管引领金融健康发展的智慧平台 在当今快速发展的金融科技时代,国家金融科技测评中心扮演着不可或缺的角色。作为一家专注于对金融科技产品和服务进行评估、监...
白家电 智能制造技术的...
自动化系统的进步 随着科技的飞速发展,自动化系统在智能制造中的应用越来越广泛。这些系统能够独立执行复杂任务,无需人类干预,从而提高了生产效率和产品质量。例...
白家电 北森人才测评解...
一、北森人才测评的内涵与意义 北森人才测评是一种旨在全面评价个体综合素质和职业潜能的科学方法。它不仅仅是一个简单的测试,而是通过一系列专业而精确的评估项目...

强力推荐