技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 【正運(yùn)動(dòng)】機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(八)零件分揀系統(tǒng)

【正運(yùn)動(dòng)】機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(八)零件分揀系統(tǒng)

時(shí)間:2021-07-12 16:16:39來(lái)源:深圳市正運(yùn)動(dòng)技術(shù)有限公司

導(dǎo)語(yǔ):?在傳統(tǒng)分揀中一般采用人工分揀的方式 ,因工人操作會(huì)存在疲勞度的問(wèn)題,對(duì)于長(zhǎng)時(shí)間作業(yè)來(lái)說(shuō),顯然工作效率是無(wú)法滿(mǎn)足。即使采用工業(yè)機(jī)器人分揀方式,由于傳統(tǒng)的工業(yè)機(jī)器人一般采用示教或離線(xiàn)編程的方式工作,機(jī)器人到達(dá)目標(biāo)點(diǎn)的位置是固定的,每次動(dòng)作均為重復(fù)進(jìn)行,只能重復(fù)完成預(yù)先規(guī)定好的動(dòng)作。

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

  工件分揀是工業(yè)生產(chǎn)環(huán)節(jié)中重要的組成部分,其目的是將不同類(lèi)型的物料或工件分類(lèi)擺放到相應(yīng)的位置,避免不同的物料或工件產(chǎn)生混料,其步驟主要分為定位、識(shí)別、抓取和放置4個(gè)階段。

  在傳統(tǒng)分揀中一般采用人工分揀的方式 ,因工人操作會(huì)存在疲勞度的問(wèn)題,對(duì)于長(zhǎng)時(shí)間作業(yè)來(lái)說(shuō),顯然工作效率是無(wú)法滿(mǎn)足。

  即使采用工業(yè)機(jī)器人分揀方式,由于傳統(tǒng)的工業(yè)機(jī)器人一般采用示教或離線(xiàn)編程的方式工作,機(jī)器人到達(dá)目標(biāo)點(diǎn)的位置是固定的,每次動(dòng)作均為重復(fù)進(jìn)行,只能重復(fù)完成預(yù)先規(guī)定好的動(dòng)作。

  對(duì)于加工對(duì)象以及工作環(huán)境的感知能力低,以及物料或工件的來(lái)料方向不確定,使機(jī)器人的使用受到了限制。隨著機(jī)器視覺(jué)和人工智能的發(fā)展,機(jī)器人也能夠適應(yīng)分揀環(huán)境的需求,隨時(shí)變更作業(yè)對(duì)象和分揀工序。

  機(jī)器視覺(jué)分揀系統(tǒng)對(duì)工件或物料進(jìn)行位置和類(lèi)型的判斷是必要的,與傳統(tǒng)的機(jī)械分揀作業(yè)相比,使用正運(yùn)動(dòng)技術(shù)機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)分揀系統(tǒng)的工業(yè)機(jī)器人進(jìn)行分揀,不但工作效率高效準(zhǔn)確而且穩(wěn)定性強(qiáng),在工業(yè)分揀系統(tǒng)中具有較大的優(yōu)勢(shì)。

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

  機(jī)器視覺(jué)運(yùn)控一體機(jī)分揀系統(tǒng)案例分享視頻

  上期課程,我們講述了VPLC系列機(jī)器視覺(jué)運(yùn)動(dòng)控制一體機(jī)快速入門(mén)的實(shí)現(xiàn)多輪廓匹配功能,本期課程我們將和大家一起分享如何實(shí)現(xiàn)零件分揀的功能。

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

  教學(xué)視頻

  一檢測(cè)原理梯形圖介紹

  (一)檢測(cè)要求

  在工位上同時(shí)存在若干個(gè)圓環(huán)狀的零件、稍大尺寸的六邊形螺帽零件、稍小尺寸的六邊形螺帽零件。現(xiàn)在要求檢測(cè)出不同形狀零件的數(shù)量,并發(fā)送對(duì)應(yīng)零件的位置供機(jī)械手進(jìn)行抓取。

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

  (二)軟件算法

  先將圖片進(jìn)行二值化處理,其次計(jì)算黑色BLOB連通區(qū)域,將BLOB區(qū)域結(jié)果存放到列表后,對(duì)BLOB結(jié)果數(shù)據(jù)進(jìn)行分析比較。

  首先根據(jù)面積結(jié)果降序排序,將對(duì)應(yīng)序號(hào)顯示在BLOB結(jié)果中心,再根據(jù)不同形狀零件處理出來(lái)后的BLOB面積范圍進(jìn)行分類(lèi),并統(tǒng)計(jì)對(duì)應(yīng)數(shù)量,最后將BLOB的重心位置結(jié)果打印在命令與輸出窗口。

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

  二軟件實(shí)現(xiàn)梯形圖介紹

  (一)軟件實(shí)現(xiàn)

  1.打開(kāi)ZDevelop軟件:新建名稱(chēng)為“sorting.zpj”項(xiàng)目→新建“HMI”文件→新建“main.bas”文件,用于編寫(xiě)界面響應(yīng)函數(shù)→新建“global_variable.bas”文件用于存放全局變量并開(kāi)啟HMI自動(dòng)運(yùn)行任務(wù)→新建“detectParam.bas”文件用于初始化測(cè)量參數(shù)→新建“camera.bas”文件用于實(shí)現(xiàn)相機(jī)采集功能→文件添加到項(xiàng)目。

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

  2.設(shè)計(jì)HMI界面。

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

  3.在“global_variable.bas”文件中定義全局變量,定義完成后運(yùn)行“Hmi.hmi”文件。

  '''''全局變量大部分使用數(shù)組結(jié)構(gòu)'''''''注:basic編程中很多函數(shù)會(huì)以TABLE(系統(tǒng)的數(shù)據(jù)結(jié)構(gòu))做為參數(shù)''table 說(shuō)明 table 說(shuō)明''0 ' 自動(dòng)二值化閾值 4 暗區(qū)域的面積''2 亮區(qū)域的面積 6 連通區(qū)域的數(shù)量 ''20~24 圖像信息 '主任務(wù)狀態(tài)'0 - 未初始化'1 - 停止'2 - 運(yùn)行中'3 - 正在停止GLOBAL DIM main_task_statemain_task_state = 1

  '采集開(kāi)關(guān)'0 - 停止采集'1 - 請(qǐng)求采集GLOBAL DIM grab_switchgrab_switch = 0

  '相機(jī)個(gè)數(shù)GLOBAL cam_numcam_num = 0

  '相機(jī)種類(lèi),"zmotion;mvision;basler;mindvision;huaray"GLOBAL DIM CAMERA_TYPE(16)CAMERA_TYPE = "mvision"

  ' 定義主任務(wù)id - 10GLOBAL DIM main_task_idmain_task_id = 10

  '定義連續(xù)采集任務(wù)id - 9GLOBAL DIM grab_task_idgrab_task_id = 9

  '定義全局圖像變量GLOBAL ZVOBJECT grabImg '采集圖像GLOBAL ZVOBJECT binImg '采集圖像GLOBAL ZVOBJECT disImg '顯示圖像

  '定義常用顏色變量GLOBAL C_RED, C_GREEN, C_BLUE, C_YELLOWC_RED = RGB(255, 0, 0)C_GREEN = RGB( 0,255, 0)C_BLUE = RGB( 0, 0,255)C_YELLOW= RGB(255,255, 0)

  '檢測(cè)參數(shù):閾值模式(自動(dòng)閾值或手動(dòng)閾值)、低閾值、高閾值、最小面積、最大面積GLOBAL DIM d_detect_param(5) 'd開(kāi)頭表示數(shù)據(jù)結(jié)構(gòu)

  '顯示打印的字符GLOBAL ShowString(64)

  '定義結(jié)果變量數(shù)組,包括墊圈數(shù)量、大螺帽數(shù)量、小螺帽數(shù)量GLOBAL DIM d_num_rst(3)

  '定義檢測(cè)消耗時(shí)間GLOBAL DIM d_detect_time

  '***********定義讀取本地文件功能相關(guān)變量**************''注意,該功能只在使用仿真器時(shí)有效'定義是否使用本地圖片標(biāo)志GLOBAL DIM d_use_imgfile

  '定義本地圖片索引GLOBAL DIM d_index

  '定義讀取圖片的路徑GLOBAL DIM File_Name(100)

  '***********結(jié)束定義讀取本地文件功能相關(guān)變量**********

  '運(yùn)行HMI文件RUN "Hmi.hmi",1

  4.在“detectParam.bas”文件中初始化測(cè)量參數(shù)。

  end

  GLOBAL SUB init_detect_param() '初始化測(cè)量參數(shù) '初始化檢測(cè)參數(shù):閾值模式(自動(dòng)閾值 = 1 或 手動(dòng)閾值 = 0)、低閾值、高閾值、極性(黑或白)、最大、最小、反向(即結(jié)果取反,成功變成失敗、失敗變成成功) d_detect_param(0) = 0 '手動(dòng)閾值 d_detect_param(1) = 200 '低閾值 d_detect_param(2) = 255 '高閾值 d_detect_param(3) = 20000 '最小面積即像素個(gè)數(shù) d_detect_param(4) = 50000 '最大面積 for i=0 to 2 d_num_rst(i)=0 next d_use_imgfile = 1 '默認(rèn)使用本地圖片 d_index = 0 END SUB

  5.關(guān)聯(lián)HMI界面控件變量。

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

  6.在“main.bas”文件中添加HMI界面初始化函數(shù)并在Hmi系統(tǒng)設(shè)置中關(guān)聯(lián)初始化函數(shù)。

  end

  '注:'凡是要使用Region有關(guān)的算子在系統(tǒng)初始化時(shí)都要調(diào)用ZV_RESETCLIPSIZE(width, height)這個(gè)算子設(shè)置下圖像尺寸,以滿(mǎn)足相機(jī)分辨率,因?yàn)槟J(rèn)的是640*480尺寸

  'HMI界面初始化函數(shù)GLOBAL SUB hmi_init()

  ZV_RESETCLIPSIZE(2448, 2048)'根據(jù)圖像分辨率設(shè)置圖像區(qū)域的裁剪尺寸,此處圖像分辨率為2448x2048 ZV_LATCHSETSIZE(0, HMI_CONTROLSIZEX(10, 7), HMI_CONTROLSIZEY(10, 7)) '設(shè)置鎖存的大小 init_detect_param()'初始化測(cè)量參數(shù) ZV_SETSYSDBL("CamGetTimeout", 1000) '設(shè)置采集超時(shí) ZV_LATCHCLEAR(0) '清空鎖存通道0 END SUB

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

  7.在“camera.bas”文件中添加HMI界面中采集相關(guān)按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)。(說(shuō)明:具體實(shí)現(xiàn)函數(shù)前面兩篇課程內(nèi)容已經(jīng)有操作演示,此處不做贅述。)

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

  8.在“main.bas”文件中添加HMI界面中測(cè)試按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)。

  'HMI界面按下測(cè)試按鈕時(shí)響應(yīng)的函數(shù)GLOBAL SUB btn_test()

  TICKS=0 for i=0 to 2 d_num_rst(i)=0 next ZVOBJECT regionWhite, regionMask, regionBlack,re_connecte,circle_connect dim loop_num,bigNut_num,smlNut_num loop_num=0 bigNut_num=0 smlNut_num=0 ZV_REGENFULLIMG(grabImg,regionMask)'生成的覆蓋全圖的區(qū)域到re這個(gè)區(qū)域變量中 ZV_DILATE (grabImg,binImg,15,15) '對(duì)圖像進(jìn)行膨脹處理,分離輕微粘連的零件 '二值化處理 if d_detect_param(0) = 0 then '如果選擇手動(dòng)閾值模式 '根據(jù)低閾值和高閾值參數(shù)生成白色像素圖像regionWhite ZV_RETHRESH(binImg, regionMask, regionWhite, d_detect_param(1), d_detect_param(2)) '對(duì)白色像素區(qū)域進(jìn)行一次1*1的閉運(yùn)算 ZV_RECLOSING(regionWhite,regionWhite,7,7) else '如果選擇自動(dòng)閾值模式 Dim autoThresh '定義自動(dòng)閾值模式下的二值化閾值 '在grabImg圖像中的指定區(qū)域內(nèi)對(duì)圖像進(jìn)行自動(dòng)二值化處理,輸出二值化區(qū)域regionWhite ZV_REAUTOTHRESH(binImg, regionMask, regionWhite, 0) '對(duì)白色像素區(qū)域進(jìn)行一次1*1的閉運(yùn)算 ZV_RECLOSING(regionWhite,regionWhite,7,7) autoThresh = TABLE(0) ? "autoThresh = " autoThresh '打印提示信息,當(dāng)前二值化閾值 endif ZV_REDIFF (regionMask, regionWhite, regionBlack) '將regionMask區(qū)域(檢測(cè)區(qū)域)和regionWhite(白色像素區(qū)域)進(jìn)行差集運(yùn)算,結(jié)果為regionBlack(黑色像素區(qū)域) ZV_REAREA(regionBlack, 4) '計(jì)算黑色像素區(qū)域的面積(即像素?cái)?shù)量)存放到table(4)中 if(TABLE(4) >0) then '如果獲取到的黑色像素?cái)?shù)量大于0 ZV_RECONNECT(regionBlack,re_connecte) '計(jì)算區(qū)域的連通區(qū)域,存放到re_connecte列表中 zv_refilter(re_connecte,0,d_detect_param(3),d_detect_param(4),0)'對(duì)區(qū)域列表中的區(qū)域進(jìn)行過(guò)濾 zv_refilter(re_connecte,20,0.8,1.2,0) ZV_LISTCOUNT(re_connecte,6) '獲取列表中的連通區(qū)域的數(shù)量,存放到table(6)中 else TABLE(6)=0 endif ?"產(chǎn)品個(gè)數(shù)"TABLE(6) '打印提示信息 '繪制效果圖 Dim width, height ZV_IMGINFO (binImg, 20)'獲取grabImg的圖像信息 width = TABLE(20) height = TABLE(21) ZV_GRAYTORGB(binImg,disImg)'將灰度圖轉(zhuǎn)換到RGB圖像,用于繪制檢測(cè)結(jié)果圖像 ZV_REGION(disImg, regionMask, 0, ZV_COLOR(0,0,0)) '在disImg中繪制黑色的regionMask區(qū)域 ZV_REGION(disImg, regionWhite, 0, ZV_COLOR(255,255,255)) '在disImg中繪制白色的regionWhite區(qū)域 ZV_RESORT(re_connecte,0,0) '對(duì)BLOB結(jié)果進(jìn)行面積降序排序 for i=0 to TABLE(6)-1 ZV_LISTGET(re_connecte,circle_connect,i) '獲取列表中序號(hào)為i的元素,即依次獲取列表中零件連通區(qū)域 ZV_REAREACENTER(circle_connect,40) '計(jì)算每個(gè)零件的面積與中心位置,將數(shù)據(jù)放入TABLE(40)中 ShowString=TOSTR(i+1,1,0) '將BLOB的數(shù)量轉(zhuǎn)換成字符串變量 if (TABLE(40)>47000) AND (TABLE(40)<50000) then '篩選出墊圈 loop_num=loop_num+1 ?"序號(hào)"ShowString"是圓環(huán):位置為"TABLE(41),TABLE(42) endif if (TABLE(40)>33000) AND (TABLE(40)<36000) then '篩選出大螺帽 bigNut_num=bigNut_num+1 ?"序號(hào)"ShowString"是大螺帽:位置為"TABLE(41),TABLE(42) endif if (TABLE(40)>27000) AND (TABLE(40)<29000) then '篩選出小螺帽 smlNut_num=smlNut_num+1 ?"序號(hào)"ShowString"是小螺帽:位置為"TABLE(41),TABLE(42) endif ZV_TEXT(disImg,ShowString,TABLE(41),TABLE(42),140,ZV_COLOR(255,131,6)) '顯示結(jié)果文本 '?i+1,"面積"TABLE(40) next d_num_rst(0)=loop_num d_num_rst(1)=bigNut_num d_num_rst(2)=smlNut_num d_detect_time=ABS(TICKS) ZV_LATCH(disImg, 0) '在鎖存通道0中顯示結(jié)果圖像 END SUB

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

  9.在“main.bas”文件中添加HMI界面中運(yùn)行按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)。

  'HMI界面按下運(yùn)行按鈕時(shí)響應(yīng)的函數(shù)GLOBAL SUB btn_run() if(2 = main_task_state) then '如果主任務(wù)處于運(yùn)行狀態(tài),打印提示信息并退出函數(shù) ?"已經(jīng)開(kāi)啟連續(xù)運(yùn)行任務(wù),請(qǐng)勿重復(fù)操作!" return endif if (1 = main_task_state) then '如果主任務(wù)處于停止?fàn)顟B(tài) if (0 = PROC_STATUS(main_task_id)) then '如果任務(wù)未開(kāi)啟 main_task_state = 2 '主任務(wù)狀態(tài)設(shè)置為2,表示正在執(zhí)行連續(xù)任務(wù) RUNTASK main_task_id, main_task '開(kāi)啟主任務(wù) endif endifEND SUB

  '主任務(wù)實(shí)現(xiàn)函數(shù)main_task: while(1) if (3 = main_task_state) then '如果主任務(wù)狀態(tài)處于3即按下停止按鈕時(shí) main_task_state = 1 '將主任務(wù)狀態(tài)置為1 exit while '退出循環(huán) endif delay (500) '重復(fù)執(zhí)行采集和檢測(cè)函數(shù) if (d_use_imgfile=1) then if(d_index=3) then d_index=0 endif File_Name="分揀/"+TOSTR(d_index,1,0)+".bmp" '讀取本地圖片時(shí)圖片所在的路徑名稱(chēng) ZV_IMGREAD(grabImg,File_Name,1) d_index=d_index+1 else if cam_num = 0 then ?"請(qǐng)先掃描相機(jī)!" return endif CAM_SETPARAM("TriggerSoftware", 0) '發(fā)送觸發(fā)指令 CAM_GET(grabImg, 0) '獲取一幀圖像存放到grabImg變量中 endif btn_test() wendEND

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

  10.在“main.bas”文件中添加HMI界面中停止按鈕響應(yīng)的函數(shù)并關(guān)聯(lián)動(dòng)作函數(shù)。

  'HMI界面按下停止按鈕時(shí)響應(yīng)的函數(shù)GLOBAL SUB btn_stop()

  if (2 = main_task_state) then '如果主任務(wù)狀態(tài)處于3即正在連續(xù)執(zhí)行任務(wù)時(shí) main_task_state = 3 '將主任務(wù)狀態(tài)置為3,退出循環(huán) endif END SUB

  三操作演示梯形圖介紹

  (一)操作步驟

  查看運(yùn)行效果:將本次課程使用到的“分揀”圖像復(fù)制到ZDevelop軟件目錄下的flash文件夾項(xiàng)目→再將項(xiàng)目下載到仿真器中→使用本地圖片→單次采集→選用手動(dòng)閾值模式→設(shè)置閾值范圍→設(shè)置篩選的黑色像素區(qū)域的面積范圍→點(diǎn)擊測(cè)試,查看單次運(yùn)行效果→點(diǎn)擊運(yùn)行,查看連續(xù)運(yùn)行效果→結(jié)束。

  (二)效果演示

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

  本次,正運(yùn)動(dòng)技術(shù)視覺(jué)運(yùn)動(dòng)控制一體機(jī)應(yīng)用例程(八)零件分揀系統(tǒng),就分享到這里。

  本文由正運(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)源。


標(biāo)簽: 機(jī)器視覺(jué)工業(yè)機(jī)器人運(yùn)動(dòng)控制

點(diǎn)贊

分享到:

上一篇:【新時(shí)達(dá)】一秒10次輕松植毛...

下一篇:淺析智能傳感器技術(shù)原理

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。