視頻監(jiān)控工件螺絲是否正確鎖住
自動(dòng)鎖螺絲機(jī)已經(jīng)被廣泛應(yīng)用,在無視覺的自動(dòng)鎖螺絲機(jī)上,很多螺絲由于定位不準(zhǔn),
沒有被鎖上。當(dāng)然,很多人工鎖螺絲的工件上,更加容易出現(xiàn)此類問題。視覺監(jiān)視螺絲
有無鎖上,成為很多自動(dòng)化生產(chǎn)線,特別是無人車間必須解決的問題。
最近,筆者所在部門剛剛完成一個(gè)實(shí)際的螺絲有無上鎖的小CASE,順便整理出來供大家
分享。(注:筆者使用機(jī)器視覺大師進(jìn)行結(jié)果重現(xiàn), 用于實(shí)際工程的系統(tǒng)是FVS一體
式可編程機(jī)器視覺控制器系統(tǒng),兩個(gè)軟件的機(jī)器視覺算法是一致和兼容的。機(jī)器視覺大師
是沒有IO通信的,結(jié)果無法輸出到執(zhí)行機(jī)構(gòu)。)
下圖實(shí)際檢測(cè)的工件圖:
工件總共需要6顆螺絲,鎖住兩個(gè)小零件(不知道正確的叫法是什么),螺絲使用內(nèi)六角
扳手。每一顆螺絲都需要被確認(rèn)鎖上,如果任何一顆螺絲掉隊(duì),需要系統(tǒng)進(jìn)行報(bào)警,并
通知后續(xù)工位進(jìn)行處理。
整個(gè)視覺任務(wù)要求很簡(jiǎn)單,就是檢測(cè)螺絲有無,這種任務(wù)如有無,長(zhǎng)短,正反,一般當(dāng)仁不讓
地使用雙態(tài)識(shí)別算子。是的,就是用雙態(tài)識(shí)別算子,不過,如果要達(dá)到可靠的監(jiān)視功能,還是
需要一點(diǎn)點(diǎn)小技巧的,下面跟我一起來學(xué)習(xí)如果使用雙態(tài)識(shí)別算子實(shí)現(xiàn)任意多數(shù)量螺絲有無
鎖上的工程需求吧。
為了節(jié)省篇幅,筆者對(duì)機(jī)器視覺大師的一些基本操作不再介紹,直接進(jìn)入相關(guān)的操作環(huán)節(jié)。
添加雙態(tài)識(shí)別算子
下面是建立雙態(tài)算子進(jìn)行零件監(jiān)視的過程。
一、點(diǎn)擊菜單”控件” ->”定位類”->”雙態(tài)測(cè)量”添加到視場(chǎng),將算子拖動(dòng)到零件位置。
二、雙擊該算子,進(jìn)行參數(shù)設(shè)置和模板學(xué)習(xí)。顯示參數(shù)設(shè)置窗口。
選擇模板區(qū)形狀為環(huán)形(注意是環(huán)形),并且對(duì)稱顯示。關(guān)閉后,重新調(diào)整模板和搜索區(qū)大小。如下圖:

為什么使用環(huán)形的模板框呢?這里筆者想重點(diǎn)進(jìn)行說明。
檢測(cè)螺絲有無第一種方法可以拍攝和學(xué)習(xí)測(cè)螺絲上緊后的狀態(tài),然后使用排除法,將其它狀態(tài)進(jìn)行
排除,以此判斷螺絲是否鎖緊,如下圖:
,
第二種方法是拍攝和學(xué)習(xí)無螺絲的狀態(tài),同樣采用排除法進(jìn)行判斷螺絲有無鎖緊(這種方法是第一種
方法相反的情況),如下圖:
第二種方法的圖像讓人看起來更悅目,但是該方法有個(gè)缺陷,就是隨便有個(gè)物體擋住螺絲孔的話都
會(huì)產(chǎn)生螺絲已經(jīng)上緊的誤判。
由于螺絲為頭部?jī)?nèi)六角形狀,如下圖。在螺絲上緊以后角度可能會(huì)產(chǎn)生變化,圖像可能產(chǎn)生
旋轉(zhuǎn),如果使用第一種方法,將對(duì)識(shí)別結(jié)果產(chǎn)生不利影響。故使用環(huán)形模板區(qū),可以直接避
開這種干擾。
(螺絲頭部清晰放大圖)
三、在“學(xué)習(xí)”頁,點(diǎn)擊”學(xué)習(xí)模板一”進(jìn)行學(xué)習(xí)。
Cai
,
四、在”識(shí)別”頁,選擇”平方差”識(shí)別方法,最小分?jǐn)?shù)設(shè)置為0.9以上。
使用復(fù)制的方法,添加其它“雙態(tài)識(shí)別”算子,調(diào)整好位置以后,每個(gè)算子重新學(xué)習(xí)一遍。如下圖:
編寫腳本
點(diǎn)擊菜單”模式”->”編輯腳本”, 彈出”編輯腳本”對(duì)話框。選擇測(cè)量類型為“質(zhì)量檢測(cè)”。輸入判斷腳本語句。
good
上面的語句解釋如下:
part1 = (sight2.dual1.res == 0 and sight2.dual5.res == 0 and sight2.dual6.res == 0 )
這個(gè)語句進(jìn)行邏輯運(yùn)算,表示如果視場(chǎng)2零件1上面的螺絲1,5,6號(hào)螺絲都上緊的話,
結(jié)果為真,否者為假。
語句sight2.dual1.res表示為視場(chǎng)sight2的算子名稱為.dual1的檢測(cè)結(jié)果。由于我們僅對(duì)模板
一進(jìn)行學(xué)習(xí),該默認(rèn)結(jié)果索引值為0(從0開始計(jì))。如果結(jié)果為0,表示學(xué)習(xí)的模板一有檢測(cè)
到正確的模板,該區(qū)域是正常的。
if part1 and part2 then
mvs.good = 1
mvs.ng = 0
else
mvs.good = 0
mvs.ng = 1
end
這個(gè)語句可以解釋為如果視場(chǎng)2中零件1上的所有螺絲和零件2上的所有螺絲已經(jīng)上緊,
那么該次結(jié)果是合格的。可以將系統(tǒng)變量good設(shè)置為1,ng設(shè)置為0,否則表示有螺絲
沒有上緊,將good變量為0,ng設(shè)置為1。
質(zhì)量檢測(cè)類任務(wù)支持2個(gè)系統(tǒng)變量:good和ng,具體如下:
變量名
|
說明
|
類型
|
good
|
合格標(biāo)記
|
布爾(1為真,0為假)
|
ng
|
次品標(biāo)記
|
布爾(1為真,0為假)
|
sigh2
相機(jī)視場(chǎng)進(jìn)行演示
檢測(cè)運(yùn)行
點(diǎn)擊菜單”相機(jī)”->”測(cè)量運(yùn)行”,進(jìn)入檢測(cè)狀態(tài)。放置工件到視場(chǎng)位置,然后點(diǎn)擊”下一個(gè)”按鈕完成一次自動(dòng)測(cè)量。
分別任意拆下一個(gè)或多個(gè)螺絲模擬,總共進(jìn)行9次模擬,結(jié)果記錄如下:

合格字段數(shù)據(jù)值如果為1,表示當(dāng)此記錄的產(chǎn)品螺絲全部上緊,否則次品字段的數(shù)據(jù)將為1,表示有螺絲
沒有上緊或缺失。下圖是單次測(cè)試時(shí),每個(gè)雙態(tài)識(shí)別算子的讀數(shù)值,可以
看出每個(gè)算子的res讀數(shù)都為0,該次結(jié)果是合格的。
|