時間:2021-06-17 16:07:51來源:深圳市正運動技術有限公司
此前,我們依次講解了軟硬件介紹及計數實例、相機的基本使用、基于形狀匹配的視覺定位、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系列機器視覺運動控制一體機快速入門(六)——標定功能就分享到這里,更多精彩內容請關注“正運動小助手”公眾號。
本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。
上一篇:自主移動機器人四大基礎技術
中國傳動網版權與免責聲明:凡本網注明[來源:中國傳動網]的所有文字、圖片、音視和視頻文件,版權均為中國傳動網(www.hysjfh.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“中國傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
相關資訊
產品新聞
更多>2025-04-11
2025-04-08
2025-03-31
2025-03-26
2025-03-20
2025-03-13