0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(五)

正運(yùn)動(dòng)技術(shù) ? 2021-09-26 18:06 ? 次閱讀

此前,我們依次講解了軟硬件介紹及計(jì)數(shù)實(shí)例、相機(jī)的基本使用、基于形狀匹配的視覺定位以及BLOB有無(wú)檢測(cè)等。

今天,正運(yùn)動(dòng)技術(shù)為大家分享一下VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(五),和大家一起分享機(jī)器視覺常用的檢測(cè)功能---測(cè)量尺寸。

運(yùn)動(dòng)控制

測(cè)量尺寸:在機(jī)器視覺中常用的測(cè)量尺寸的原理就是使用兩個(gè)直線測(cè)量器,分別檢測(cè)出產(chǎn)品兩條尺寸邊緣的點(diǎn)擬合成直線后取兩條直線的距離。

尺寸測(cè)量本質(zhì)是基于邊緣檢測(cè)的測(cè)量,它需要先檢測(cè)出亮暗過渡滿足一定閾值的邊緣點(diǎn),然后再提取邊緣點(diǎn)數(shù)據(jù)進(jìn)行處理計(jì)算后輸出最終的結(jié)果。

測(cè)量尺寸特點(diǎn)

1.準(zhǔn)確度高

選擇合適的硬件選型方案可以達(dá)到很高的檢測(cè)精度。常用遠(yuǎn)心鏡頭減少畸變,增大景深,減小測(cè)量誤差。

2.圖像干擾少

單純的測(cè)量尺寸項(xiàng)目常用背光的打光方式,突出產(chǎn)品邊緣尺寸,過濾表面干擾因素。

3.實(shí)現(xiàn)簡(jiǎn)單

測(cè)量尺寸的算法是基于邊緣檢測(cè)的算法,易于實(shí)現(xiàn)。

4.需要位置跟隨

測(cè)量尺寸的測(cè)量器本身不具有定位功能,如果檢測(cè)產(chǎn)品位置不固定將無(wú)法確定測(cè)量器對(duì)應(yīng)的位置,此時(shí)需要依賴匹配等定位功能做位置跟隨。

標(biāo)定

標(biāo)定是指將機(jī)器視覺處理的像素結(jié)果(單位:像素)轉(zhuǎn)換成現(xiàn)實(shí)中使用到的實(shí)際結(jié)果(單位:毫米),或者是將機(jī)器視覺中使用的圖像坐標(biāo)轉(zhuǎn)換成世界坐標(biāo)。

我們?cè)趯?shí)際測(cè)量尺寸時(shí),使用的尺寸單位一般是國(guó)際標(biāo)準(zhǔn)單位如米,厘米,毫米等。因此機(jī)器視覺測(cè)量尺寸項(xiàng)目中需要將獲取到的像素尺寸轉(zhuǎn)換成實(shí)際尺寸(毫米)輸出到用戶端,供用戶直接使用。

測(cè)量尺寸標(biāo)定方法

1.測(cè)量標(biāo)定

使用已知尺寸的標(biāo)準(zhǔn)模塊如圓、小方塊、或刻度尺等,在圖像中檢測(cè)到像素尺寸后將已知實(shí)際尺寸值除以像素值即可得出像素比例值(單位:mm/pixel)。測(cè)量尺寸項(xiàng)目中常用測(cè)量標(biāo)定方法。

運(yùn)動(dòng)控制

2.坐標(biāo)標(biāo)定

輸入幾組圖像坐標(biāo)(至少9組),然后再輸入圖像坐標(biāo)對(duì)應(yīng)的世界坐標(biāo),經(jīng)過公式計(jì)算得出矩陣變換系數(shù),即可實(shí)現(xiàn)將圖像坐標(biāo)轉(zhuǎn)換到實(shí)際坐標(biāo)。在測(cè)量精度要求比較高的測(cè)量尺寸項(xiàng)目可以考慮使用坐標(biāo)標(biāo)定,具體實(shí)現(xiàn)內(nèi)容我們?cè)谙乱黄谡n程再做詳細(xì)說(shuō)明。

運(yùn)動(dòng)控制

1.打開ZDevelop軟件:打開項(xiàng)目“基于形狀匹配的視覺定位”→在global_variable.bas文件中定義測(cè)量尺寸需要用到的全局變量。


'----------------------------分割線-----------------------------------------

'直線1測(cè)量參數(shù)數(shù)組,依次為中心cx、cy、w、h、angle、interp、sub_num、sub_width、filter_size、thresh、polor、select,都是圖像坐標(biāo)

GLOBAL DIM d_meas_param1(12) 'd開頭表示數(shù)據(jù)結(jié)構(gòu)

'直線2測(cè)量參數(shù)數(shù)組,依次為中心cx、cy、w、h、angle、interp、sub_num、sub_width、filter_size、thresh、polor、select,都是圖像坐標(biāo)

GLOBAL DIM d_meas_param2(12) 'd開頭表示數(shù)據(jù)結(jié)構(gòu)

'定義常用顏色變量,用于繪制圖形

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)

'創(chuàng)建模板時(shí)保存的直線1基準(zhǔn)區(qū)域位置向量1,x、y、angle

GLOBAL DIM d_meas_base_v1(3)

d_meas_base_v1(0) = 0

d_meas_base_v1(1) = 0

d_meas_base_v1(2) = 0

''創(chuàng)建模板時(shí)保存的直線2基準(zhǔn)區(qū)域位置向量2,x、y、angle

GLOBAL DIM d_meas_base_v2(3)

d_meas_base_v2(0) = 0

d_meas_base_v2(1) = 0

d_meas_base_v2(2) = 0

'直線1測(cè)量結(jié)果,依次為結(jié)果點(diǎn)stx、sty、endx、endy

GLOBAL DIM d_meas_rst1(4)

'直線2測(cè)量結(jié)果,依次為結(jié)果點(diǎn)stx、sty、endx、endy

GLOBAL DIM d_meas_rst2(4)

'定義顯示在界面上的長(zhǎng)度變量

GLOBAL DIM d_show_rst

''創(chuàng)建模板時(shí)保存的模板基準(zhǔn)點(diǎn),score、x、y、angle、scale

GLOBAL DIM d_match_base_rst(5)

global dim d_meas_param(12)

'定義測(cè)量標(biāo)定時(shí)使用到的變量

GLOBAL PixLength,WorldLength,CalibParam

2.補(bǔ)充設(shè)計(jì)主界面。

運(yùn)動(dòng)控制

3.新建主界面按下【測(cè)量設(shè)置】按鈕時(shí)彈出的測(cè)量參數(shù)設(shè)置窗口“Set_Select”,并設(shè)計(jì)界面布局。

運(yùn)動(dòng)控制

4.在main.bas文件中添加主界面按下【測(cè)量設(shè)置】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'主界面按下測(cè)量設(shè)置按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB Goto_Meas()

HMI_SHOWWINDOW(13)

END SUB

運(yùn)動(dòng)控制

5.在InitLocator.bas文件中初始化測(cè)量參數(shù)。

'---------------------分割線------------------

'初始化測(cè)量參數(shù)1

d_meas_param1(0) = 320.0 'roi中心x

d_meas_param1(1) = 240.0 'roi中心y

d_meas_param1(2) = 160 'roi寬

d_meas_param1(3) = 120.0 'roi高

d_meas_param1(4) = 0.0 'roi角度

d_meas_param1(5) = 1 '插值方式

d_meas_param1(6) = 20 '子區(qū)域的個(gè)數(shù)

d_meas_param1(7) = 5 '子區(qū)域的尺寸

d_meas_param1(8) = 3 '濾波尺寸

d_meas_param1(9) = 50 '閾值

d_meas_param1(10) = 0 '極性

d_meas_param1(11) = 0 '選擇邊緣位置

'初始化測(cè)量參數(shù)2

d_meas_param2(0) = 320.0 'roi中心x

d_meas_param2(1) = 240.0 'roi中心y

d_meas_param2(2) = 160 'roi寬

d_meas_param2(3) = 120.0 'roi高

d_meas_param2(4) = 0.0 'roi角度

d_meas_param2(5) = 1 '插值方式

d_meas_param2(6) = 20 '子區(qū)域的個(gè)數(shù)

d_meas_param2(7) = 5 '子區(qū)域的尺寸

d_meas_param2(8) = 3 '濾波尺寸

d_meas_param2(9) = 50 '閾值

d_meas_param2(10) = 0 '極性

d_meas_param2(11) = 0 '選擇邊緣位置

'初始化界面上顯示的結(jié)果值

d_meas_rst1(0) = 0

d_meas_rst1(1) = 0

d_meas_rst1(2) = 0

d_meas_rst1(3) = 0

d_meas_rst2(0) = 0

d_meas_rst2(1) = 0

d_meas_rst2(2) = 0

d_meas_rst2(3) = 0

d_show_rst = 0

'初始化標(biāo)定參數(shù)和像素比例

CalibParam = 0

WorldLength = 0

PixLength = 0

6.新建在“Set_Select”窗口界面按下【選擇測(cè)量器區(qū)域1】按鈕時(shí)彈出的“Set_Roi1”窗口,用于創(chuàng)建第一條尺寸邊緣的直線測(cè)量器并設(shè)置檢測(cè)直線的參數(shù)。

運(yùn)動(dòng)控制

7.在draw.bas文件中添加在“Set_Select”窗口界面按下【選擇測(cè)量器區(qū)域1】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'-----------------分割線-------------------------

'測(cè)量器繪制

DIM is_redraw

is_redraw = 0

DIM set_roi_open_init

set_roi_open_init = 0

DIM sr_mpos_x, sr_mpos_y, hit_pos

'''''''''''''''''''''''''''''''''''

'按下選擇測(cè)量器區(qū)域1按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_sel_roi1()

ZV_LATCHCLEAR(1) '清除鎖存

ZV_LATCHSETSIZE(1, HMI_CONTROLSIZEX(14, 1), HMI_CONTROLSIZEY(14,1)) '設(shè)置鎖存的大小

ZV_LATCH(grabImg, 1) '顯示圖像在鎖存上

SET_COLOR(RGB(0,255,0))

'圖像roi轉(zhuǎn)控件roi

is_redraw = 0

TABLE(11, d_meas_param1(0), d_meas_param1(1))

ZV_POSFROMIMG(1, 1, 11, 11) '圖像坐標(biāo)轉(zhuǎn)換到HMI控件坐標(biāo)

TABLE(13) = ZV_LENFROMIMG(1, d_meas_param1(2))

TABLE(14) = ZV_LENFROMIMG(1, d_meas_param1(3))

TABLE(15) = d_meas_param1(4)

HMI_SHOWWINDOW(14)

END SUB

運(yùn)動(dòng)控制

8.在draw.bas文件中添加Roi1根據(jù)鼠標(biāo)操作更新ROI位置的函數(shù)以及實(shí)時(shí)繪制Roi1的函數(shù)。

'根據(jù)鼠標(biāo)操作更新Roi1的位置

GLOBAL SUB update_roi1()

if mouse_scan(21) = 1 then '

掃描按下操作

hit_pos = ZV_HMIADJRECT2(table(21), table(22), 11, -1) '只有按下時(shí)可以改變擊中位置

?TABLE(21),TABLE(22)

is_redraw = 1

endif

if mouse_scan(21) = -1 then '

掃描松開操作

if TABLE(21)<(table(11)-table(13) or="">(TABLE(11)+TABLE(13)/2) or TABLE(22)<(table(12)-table(14) or="">(TABLE(12)+TABLE(14)/2) then

hit_pos=-1

endif

ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)

?*TABLE(11,4)

is_redraw = 1

endif

if (MOUSE_state(21)) then

ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)

is_redraw = 1

endif

if (1 = is_redraw) then

is_redraw = 0

ZV_POSTOIMG(1, 1, 11, 31)

d_meas_param1(0) = TABLE(31)

d_meas_param1(1) = TABLE(32)

d_meas_param1(2) = ZV_LENTOIMG(1, TABLE(13))

d_meas_param1(3) = ZV_LENTOIMG(1, TABLE(14))

d_meas_param1(4) = TABLE(15)

'如果選擇了補(bǔ)正源,就保存roi基準(zhǔn)

if(TABLE(110) = 1) then

set_base_roi()

endif

SET_REDRAW

endif

END SUB

'設(shè)置測(cè)量區(qū)域的基準(zhǔn)roi

GLoBAL SUB set_base_roi()

d_meas_base_v1(0) = d_meas_param1(0)

d_meas_base_v1(1) = d_meas_param1(1)

d_meas_base_v1(2) = d_meas_param1(4)

d_meas_base_v2(0) = d_meas_param2(0)

d_meas_base_v2(1) = d_meas_param2(1)

d_meas_base_v2(2) = d_meas_param2(4)

END SUB

'更新Roi1位置后實(shí)時(shí)繪制圖形

GLOBAL SUB draw_roi1()

SET_COLOR(C_BLUE)

TABLE(16, d_meas_param1(6), d_meas_param1(7)) '設(shè)置子區(qū)域個(gè)數(shù)和寬度兩個(gè)參數(shù)

ZV_HMIRECT2(11, 300)

DRAWLINE(TABLE(300), TABLE(301), TABLE(302), TABLE(303)) '外矩形

DRAWLINE(TABLE(302), TABLE(303), TABLE(304), TABLE(305))

DRAWLINE(TABLE(304), TABLE(305), TABLE(306), TABLE(307))

DRAWLINE(TABLE(306), TABLE(307), TABLE(300), TABLE(301))

DRAWLINE(TABLE(308), TABLE(309), TABLE(310), TABLE(311)) '方向箭頭

DRAWLINE(TABLE(312), TABLE(313), TABLE(310), TABLE(311))

DRAWLINE(TABLE(314), TABLE(315), TABLE(310), TABLE(311))

if (0 = TABLE(316)) then return

SET_COLOR(C_GREEN)

DIM idx

for idx = 0 to TABLE(316)-1

DRAWLINE(TABLE(317+idx*4), TABLE(318+idx*4), TABLE(319+idx*4), TABLE(320+idx*4))

next

END SUB

9.在draw.bas文件中添加在“Set_Roi1”窗口界面按下【確定】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'設(shè)置Roi1窗口按下確定按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_meas_confirm1()

HMI_CLOSEWINDOW(14)

END SUB

運(yùn)動(dòng)控制

10.新建在“Set_Select”窗口界面按下【選擇測(cè)量器區(qū)域2】按鈕時(shí)彈出的“Set_Roi2”窗口,用于創(chuàng)建第二條尺寸邊緣的直線測(cè)量器并設(shè)置檢測(cè)直線的參數(shù)。

運(yùn)動(dòng)控制

11.在draw.bas文件中添加在“Set_Select”窗口界面按下【選擇測(cè)量器區(qū)域2】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'按下選擇測(cè)量器區(qū)域2按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_sel_roi2()

ZV_LATCHCLEAR(1) '清除鎖存

ZV_LATCHSETSIZE(1, HMI_CONTROLSIZEX(15, 1), HMI_CONTROLSIZEY(15,1)) '設(shè)置鎖存的大小

ZV_LATCH(grabImg, 1) '顯示圖像在鎖存上

SET_COLOR(RGB(0,255,0))

'圖像roi坐標(biāo)轉(zhuǎn)控件roi

is_redraw = 0

TABLE(11, d_meas_param2(0), d_meas_param2(1))

ZV_POSFROMIMG(1, 1, 11, 11) '圖像坐標(biāo)轉(zhuǎn)換到HMI控件坐標(biāo)

TABLE(13) = ZV_LENFROMIMG(1, d_meas_param2(2))

TABLE(14) = ZV_LENFROMIMG(1, d_meas_param2(3))

TABLE(15) = d_meas_param2(4)

HMI_SHOWWINDOW(15)

END SUB

運(yùn)動(dòng)控制

12.在draw.bas文件中添加Roi2根據(jù)鼠標(biāo)操作更新ROI位置的函數(shù)以及實(shí)時(shí)繪制Roi1的函數(shù)。

'根據(jù)鼠標(biāo)操作更新Roi2的位置

GLOBAL SUB update_roi2()

if mouse_scan(21) = 1 then '掃描按下操作

hit_pos = ZV_HMIADJRECT2(table(21), table(22), 11, -1) '只有按下時(shí)可以改變擊中位置

is_redraw = 1

endif

if mouse_scan(21) = -1 then '掃描松開操作

ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)

is_redraw = 1

endif

if (MOUSE_state(21)) then

ZV_HMIADJRECT2(table(21), table(22), 11, hit_pos)

is_redraw = 1

endif

if (1 = is_redraw) then

is_redraw = 0

ZV_POSTOIMG(1, 1, 11, 31)

d_meas_param2(0) = TABLE(31)

d_meas_param2(1) = TABLE(32)

d_meas_param2(2) = ZV_LENTOIMG(1, TABLE(13))

d_meas_param2(3) = ZV_LENTOIMG(1, TABLE(14))

d_meas_param2(4) = TABLE(15)

'如果選擇補(bǔ)正源,就保存roi基準(zhǔn)位置

if(TABLE(110) = 1) then

set_base_roi()

endif

SET_REDRAW

endif

END SUB

'更新Roi2位置后實(shí)時(shí)繪制圖形

GLOBAL SUB draw_roi2()

SET_COLOR(C_BLUE)

TABLE(16, d_meas_param2(6), d_meas_param2(7)) '設(shè)置子區(qū)域個(gè)數(shù)和寬度兩個(gè)參數(shù)

ZV_HMIRECT2(11, 300) '計(jì)算控件的矩形roi相應(yīng)的頂點(diǎn)和箭頭錨點(diǎn)

DRAWLINE(TABLE(300), TABLE(301), TABLE(302), TABLE(303)) '外矩形

DRAWLINE(TABLE(302), TABLE(303), TABLE(304), TABLE(305))

DRAWLINE(TABLE(304), TABLE(305), TABLE(306), TABLE(307))

DRAWLINE(TABLE(306), TABLE(307), TABLE(300), TABLE(301))

DRAWLINE(TABLE(308), TABLE(309), TABLE(310), TABLE(311)) '方向箭頭

DRAWLINE(TABLE(312), TABLE(313), TABLE(310), TABLE(311))

DRAWLINE(TABLE(314), TABLE(315), TABLE(310), TABLE(311))

if (0 = TABLE(316)) then return

SET_COLOR(C_GREEN)

DIM idx

for idx = 0 to TABLE(316)-1

DRAWLINE(TABLE(317+idx*4), TABLE(318+idx*4), TABLE(319+idx*4), TABLE(320+idx*4))

next

END SUB

13.在draw.bas文件中添加在“Set_Roi2”窗口界面按下【確定】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'設(shè)置Roi2窗口按下確定按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_meas_confirm2()

HMI_CLOSEWINDOW(15)

END SUB

運(yùn)動(dòng)控制

14.新建meas.bas文件用于存放計(jì)算兩條直線的距離函數(shù)和標(biāo)定函數(shù)等測(cè)量相關(guān)函數(shù),并在文件中添加實(shí)現(xiàn)函數(shù)。

'計(jì)算兩條直線的距離寬度

global sub length1()

LOCAL dist,dist1,dist2

local dis_tmp,dst_tmp1

'計(jì)算直線2的起始點(diǎn)到直線1之間的距離

dist = ZV_DISTPL(d_meas_rst2(0),d_meas_rst2(1),d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))

'計(jì)算直線2的終點(diǎn)到直線1之間的距離

dist1 = ZV_DISTPL(d_meas_rst2(2),d_meas_rst2(3),d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))

'計(jì)算直線2的中點(diǎn)位置坐標(biāo)

dis_tmp=(d_meas_rst2(0)+d_meas_rst2(2))/2

dst_tmp1=(d_meas_rst2(1)+d_meas_rst2(3))/2

'計(jì)算直線2的中點(diǎn)到直線1之間的距離

dist2 = ZV_DISTPL(dis_tmp,dst_tmp1,d_meas_rst1(0),d_meas_rst1(1),d_meas_rst1(2),d_meas_rst1(3))

TABLE(500)=(dist+dist1+dist2)/3 '兩直線之間的距離

PixLength=TABLE(500)

?TABLE(500)

end sub

'計(jì)算實(shí)際尺寸值

global sub length2()

'實(shí)際尺寸=像素尺寸*像素比例

TABLE(501)=TABLE(500)*CalibParam

end sub

'計(jì)算像素比例,即實(shí)際值/像素值

global sub calculation()

CalibParam=WorldLength/TABLE(500)

end sub

15.在main.bas文件中添加“Set_Select”窗口界面按下【測(cè)試】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'測(cè)量設(shè)置界面按下測(cè)試按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_mea_test()

'選擇補(bǔ)正源時(shí)先執(zhí)行定位檢測(cè)

if(TABLE(110) = 1) then

btn_loc_test()

endif

ZVOBJECT mr1,mr2,mr3,mr4,rst1,rst2,rst3,rst4,colorImg

ZVOBJECT contlist, tsContlist, mat_rigid

LOCAL show_rst

'測(cè)量區(qū)域roi補(bǔ)正

if(TABLE(110) = 1 AND d_is_creModel = 1) then '如果使用補(bǔ)正源已經(jīng)開啟且模板已經(jīng)創(chuàng)建

'計(jì)算剛性變換矩陣

ZV_GETRIGIDVECTOR(mat_rigid, d_match_base_rst(1), d_match_base_rst(2), d_match_base_rst(3), d_match_rst(1), d_match_rst(2), d_match_rst(3))

'使用變換矩陣mat_rigid對(duì)輸入Roi1基準(zhǔn)向量進(jìn)行補(bǔ)正,補(bǔ)正后的向量存入開始索引為0的TABLE中

ZV_VECTORCORRECT(mat_rigid, d_meas_base_v1(0), d_meas_base_v1(1),d_meas_base_v1(2), 0)

d_meas_param1(0) = TABLE(0)

d_meas_param1(1) = TABLE(1)

d_meas_param1(4) = TABLE(2)

'使用變換矩陣mat_rigid對(duì)輸入Roi2基準(zhǔn)向量進(jìn)行補(bǔ)正,補(bǔ)正后的向量存入開始索引為0的TABLE中

ZV_VECTORCORRECT(mat_rigid, d_meas_base_v2(0), d_meas_base_v2(1),d_meas_base_v2(2), 0)

d_meas_param2(0) = TABLE(0)

d_meas_param2(1) = TABLE(1)

d_meas_param2(4) = TABLE(2)

endif

'測(cè)量區(qū)域1

'生成直線1測(cè)量的旋轉(zhuǎn)區(qū)域

ZV_MRGENLINE(mr1, d_meas_param1(0), d_meas_param1(1), d_meas_param1(2), d_meas_param1(3), d_meas_param1(4), 1, d_meas_param1(6), d_meas_param1(7))

'設(shè)置直線1的檢測(cè)參數(shù),包括濾波器尺寸,閾值,邊緣極性,邊緣位置

ZV_MRSETADV(mr1, d_meas_param1(8), d_meas_param1(9), d_meas_param1(10), d_meas_param1(11))

'測(cè)量區(qū)域2

'生成直線2測(cè)量的旋轉(zhuǎn)區(qū)域

ZV_MRGENLINE(mr2, d_meas_param2(0), d_meas_param2(1), d_meas_param2(2), d_meas_param2(3), d_meas_param2(4), 1, d_meas_param2(6), d_meas_param2(7))

'設(shè)置直線2的檢測(cè)參數(shù),包括濾波器尺寸,閾值,邊緣極性,邊緣位置

ZV_MRSETADV(mr2, d_meas_param2(8), d_meas_param2(9), d_meas_param2(10), d_meas_param2(11))

'將矩形測(cè)量區(qū)域測(cè)量到的目標(biāo)直線1端點(diǎn)存儲(chǔ)到起始索引為61的TABLE

ZV_MRLINE(mr1, grabImg, rst1, 61)

d_meas_rst1(0) = TABLE(61)

d_meas_rst1(1) = TABLE(62)

d_meas_rst1(2) = TABLE(63)

d_meas_rst1(3) = TABLE(64)

'將矩形測(cè)量區(qū)域測(cè)量到的目標(biāo)直線2端點(diǎn)存儲(chǔ)到起始索引為71的TABLE

ZV_MRLINE(mr2, grabImg, rst2, 71)

ZV_MATINFO(rst2, 0) 'table(0)作為臨時(shí)變量

d_meas_rst2(0) = TABLE(71)

d_meas_rst2(1) = TABLE(72)

d_meas_rst2(2) = TABLE(73)

d_meas_rst2(3) = TABLE(74)

'計(jì)算兩條直線的距離寬度

length1()

d_show_rst=TABLE(500)

if(CalibParam>0) then

'計(jì)算實(shí)際長(zhǎng)度

length2()

d_show_rst=TABLE(501)

endif

'繪制結(jié)果線

ZV_GRAYTORGB(grabImg, colorImg)

ZV_LINE(colorImg, TABLE(61), TABLE(62), TABLE(63), TABLE(64), C_GREEN)

ZV_LINE(colorImg, TABLE(65), TABLE(66), TABLE(67), TABLE(68), C_GREEN)

ZV_LINE(colorImg, TABLE(71), TABLE(72), TABLE(73), TABLE(74), C_GREEN)

ZV_LINE(colorImg, TABLE(75), TABLE(76), TABLE(77), TABLE(78), C_GREEN)

ZV_LATCH(colorImg,0)

END SUB

運(yùn)動(dòng)控制

在main.bas文件中添加“Set_Select”窗口界面按下【測(cè)試】按鈕時(shí)仿真的效果圖。

運(yùn)動(dòng)控制

測(cè)試按鈕效果圖

16.設(shè)置“Set_Select”窗口界面【計(jì)算】按鈕關(guān)聯(lián)動(dòng)作函數(shù)名。

運(yùn)動(dòng)控制

在“Set_Select”窗口界面按下【計(jì)算】按鈕時(shí)仿真的效果圖。

運(yùn)動(dòng)控制

計(jì)算按鈕效果圖

17.在“Set_Select”窗口界面中關(guān)聯(lián)界面控件變量。

運(yùn)動(dòng)控制

18.在main.bas文件中添加“Set_Select”窗口界面按下【返回主界面】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'按下返回主界面按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB Goto_Main()

HMI_CLOSEWINDOW(13)

END SUB

運(yùn)動(dòng)控制

19.在main.bas文件中修改主界面按下【單次執(zhí)行】按鈕時(shí)響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)名。

'主界面按下單次執(zhí)行按鈕時(shí)響應(yīng)的函數(shù)

GLOBAL SUB btn_test()

'采集一幀圖像

btn_grab

'執(zhí)行測(cè)量測(cè)試部分代碼

btn_mea_test()

END SUB

運(yùn)動(dòng)控制

在主界面按下【單次執(zhí)行】按鈕時(shí)仿真的效果圖。

運(yùn)動(dòng)控制

20.在main.bas文件中修改主界面按下【連續(xù)執(zhí)行】按鈕時(shí)響應(yīng)的函數(shù)中執(zhí)行的任務(wù)函數(shù)內(nèi)容。

main_task:

while(1)

if (0 = run_switch) then

exit while

endif

'以下執(zhí)行相關(guān)定位操作

btn_grab()

btn_mea_test()

wend

END

在主界面按下【連續(xù)執(zhí)行】按鈕時(shí)仿真仿真執(zhí)行的效果圖。

運(yùn)動(dòng)控制

連續(xù)運(yùn)行效果圖1

運(yùn)動(dòng)控制

連續(xù)運(yùn)行效果圖2

在不同位置以不同角度放置時(shí),均能檢測(cè)到對(duì)應(yīng)尺寸。

本次,正運(yùn)動(dòng)技術(shù)VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)快速入門(五)——尺寸測(cè)量就分享到這里,更多精彩內(nèi)容請(qǐng)關(guān)注“ 正運(yùn)動(dòng)小助手”公眾號(hào)。

本文由 正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    聚徽-工控一體機(jī)有什么創(chuàng)新

    工控一體機(jī)作為新代的工業(yè)控制設(shè)備,具有多項(xiàng)創(chuàng)新點(diǎn),這些創(chuàng)新使得工控一體機(jī)能夠更好地滿足工業(yè)控制的需求,提高自動(dòng)化生產(chǎn)的效率和質(zhì)量。
    的頭像 發(fā)表于 09-14 09:34 ?123次閱讀

    藍(lán)海華騰參股公司頂控科技發(fā)布運(yùn)動(dòng)控制一體機(jī)系列產(chǎn)品

    藍(lán)海華騰參股公司深圳市頂控科技有限公司運(yùn)動(dòng)控制一體機(jī)系列產(chǎn)品上市!本次新品發(fā)布會(huì)發(fā)布三個(gè)系列產(chǎn)品,這三個(gè)
    的頭像 發(fā)表于 09-03 09:28 ?324次閱讀

    思道SEEKVIEU一體機(jī)電腦

    一體機(jī)
    jf_69621499
    發(fā)布于 :2024年09月03日 08:50:17

    機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)VPLC532E在汽車膠帶纏繞的開放式CNC應(yīng)用

    機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)VPLC532E在汽車膠帶纏繞的開放式CNC應(yīng)用
    的頭像 發(fā)表于 08-19 10:03 ?171次閱讀
    <b class='flag-5'>機(jī)器</b><b class='flag-5'>視覺</b><b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制</b><b class='flag-5'>一體機(jī)</b><b class='flag-5'>VPLC</b>532E在汽車膠帶纏繞的開放式CNC應(yīng)用

    VPLC系列機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)軸聯(lián)動(dòng)點(diǎn)膠上的應(yīng)用

    技術(shù)針對(duì)現(xiàn)有市場(chǎng)需求,開發(fā)了種基于VPLC系列機(jī)器視覺運(yùn)動(dòng)
    發(fā)表于 07-29 14:29

    聚徽觸控-工控一體機(jī)和 PLC 一體機(jī)有什么不同

    在工業(yè)自動(dòng)化領(lǐng)域,工控一體機(jī)和 PLC 一體機(jī)都扮演著重要角色。盡管它們?cè)谀撤N程度上有所重疊,但它們?cè)诠δ?、?yīng)用和設(shè)計(jì)結(jié)構(gòu)等方面存在顯著的不同。工控一體機(jī)和 PLC 一體機(jī)有什么不同,
    的頭像 發(fā)表于 06-21 10:05 ?256次閱讀

    聚徽觸控-工控一體機(jī)如何運(yùn)用在電力控制

    工業(yè)自動(dòng)化已經(jīng)成為了現(xiàn)代工業(yè)發(fā)展的重要趨勢(shì)。在這進(jìn)程中,工控一體機(jī)以其強(qiáng)大的功能和廣泛的應(yīng)用場(chǎng)景,成為了工業(yè)自動(dòng)化控制領(lǐng)域的核心設(shè)備之。特別是在電力
    的頭像 發(fā)表于 06-20 10:19 ?245次閱讀

    集特一體機(jī)

    顯卡一體機(jī)
    jf_67464575
    發(fā)布于 :2024年05月22日 09:05:55

    工業(yè)一體機(jī)在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用

    工業(yè)一體機(jī)在物聯(lián)網(wǎng)領(lǐng)域的應(yīng)用變得愈發(fā)重要,工業(yè)一體機(jī)作為種集計(jì)算、控制、通信于一體的設(shè)備,具備了在物聯(lián)網(wǎng)環(huán)境下應(yīng)用的獨(dú)特特點(diǎn).
    的頭像 發(fā)表于 05-18 16:54 ?187次閱讀

    基于VPLC711的曲面外觀檢測(cè)XYR運(yùn)動(dòng)控制解決方案

    中心線永遠(yuǎn)與產(chǎn)品表面垂直(曲面處相機(jī)中心線始終與切線方向垂直)。 (2)相機(jī)到被檢測(cè)產(chǎn)品的距離保持致,任何位置L1=L2 VPLC711機(jī)器視覺
    發(fā)表于 04-16 17:58

    機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)在喇叭跟隨點(diǎn)膠上的應(yīng)用

    等問題。 正運(yùn)動(dòng)技術(shù)視覺點(diǎn)膠整體解決方案: 在此背景下,正運(yùn)動(dòng)技術(shù)的視覺點(diǎn)膠整體解決方案脫穎而出,方案是基于VPLC
    發(fā)表于 04-16 17:37

    機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)在光伏匯流焊機(jī)器人系統(tǒng)的解決方案

    一體機(jī)結(jié)合SCARA機(jī)械手+機(jī)器視覺的電池片匯流焊解決方案。可解決不同角度來(lái)料、規(guī)格等光伏太陽(yáng)能電池板的串焊需求,實(shí)現(xiàn)生產(chǎn)效率和精度等大幅提升,同時(shí)將廢品率降至僅12%,并顯著加快數(shù)據(jù)處理速度,提高了
    發(fā)表于 02-28 15:01

    人臉考勤打卡一體機(jī)

    一體機(jī)
    jf_66410442
    發(fā)布于 :2024年01月09日 11:09:22

    基于VPLC711的XYR運(yùn)動(dòng)控制解決方案

    VPLC711機(jī)器視覺運(yùn)動(dòng)控制一體機(jī)機(jī)器
    發(fā)表于 11-13 17:06 ?375次閱讀
    基于<b class='flag-5'>VPLC</b>711的XYR<b class='flag-5'>運(yùn)動(dòng)</b><b class='flag-5'>控制</b>解決方案