時間: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系列機器視覺é‹å‹•控制一體機快速入門(å…)——標定功能就分享到這里,更多精彩內容請關注“æ£é‹å‹•å°åŠ©æ‰‹â€å…¬çœ¾è™Ÿã€‚
  本文由æ£é‹å‹•技術原創,æ¡è¿Žå¤§å®¶è½‰è¼‰ï¼Œå…±åŒå¸ç¿’,一起æé«˜ä¸åœ‹æ™ºèƒ½åˆ¶é€ æ°´å¹³ã€‚æ–‡ç« ç‰ˆæ¬Šæ¸æ£é‹å‹•æŠ€è¡“æ‰€æœ‰ï¼Œå¦‚æœ‰è½‰è¼‰è«‹æ³¨æ˜Žæ–‡ç« ä¾†æºã€‚
  
  
上一篇:自主移動機器人四大基礎技術
下一篇:人工智能和3D打å°çš„進æ¥å¦‚何...
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.siyutn.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊