文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.2016.09.017
中文引用格式: 苑瑋琦,魏智鵬,李德健,等. 高速視覺在線檢測(cè)系統(tǒng)的軟件抗干擾方法[J].電子技術(shù)應(yīng)用,2016,42(9):65-68.
英文引用格式: Yuan Weiqi,Wei Zhipeng,Li Dejian,et al. The software anti-interference method of high-speed visual online detection system[J].Application of Electronic Technique,2016,42(9):65-68.
0 引言
隨著工業(yè)4.0的到來,自動(dòng)化技術(shù)開始越來越多地在制造業(yè)市場(chǎng)中使用,而機(jī)器視覺在自動(dòng)化技術(shù)領(lǐng)域中具有舉足輕重的地位。作為近年來制造業(yè)中的關(guān)鍵技術(shù),機(jī)器視覺在線檢測(cè)技術(shù)的發(fā)展已經(jīng)被推上了風(fēng)口浪尖。然而,基于機(jī)器視覺的高速在線檢測(cè)技術(shù)成為了制約制造業(yè)發(fā)展的瓶頸。學(xué)者周文舉發(fā)表的文獻(xiàn)[1]對(duì)機(jī)器視覺的在線高速檢測(cè)系統(tǒng)作了比較前沿的描述。
近年來,國內(nèi)的生產(chǎn)企業(yè)大量引進(jìn)機(jī)器視覺在線檢測(cè)技術(shù),試圖用機(jī)器取代工人來節(jié)約生產(chǎn)成本。機(jī)器視覺在線檢測(cè)系統(tǒng)一般都是安裝在生產(chǎn)線作業(yè)流程當(dāng)中,故其檢測(cè)速度必須大于等于高速生產(chǎn)線現(xiàn)有的運(yùn)行速度。現(xiàn)有的高速拍照技術(shù)也已經(jīng)很成熟,但在線檢測(cè)技術(shù)卻面臨著如下問題:(1)速度達(dá)不到要求;(2)高速視覺檢測(cè)軟件運(yùn)行不穩(wěn)定;(3)漏檢誤檢率高。
本文針對(duì)現(xiàn)有的機(jī)器視覺在線檢測(cè)系統(tǒng)所遇到的問題,巧妙利用計(jì)算機(jī)的數(shù)據(jù)緩存機(jī)制[2]解決由計(jì)算機(jī)操作系統(tǒng)本身、負(fù)載差異和用戶操作所帶來的干擾問題。本設(shè)計(jì)以高速雪糕棒質(zhì)量在線檢測(cè)[3]應(yīng)用為案例講述詳細(xì)的設(shè)計(jì)方法。此設(shè)計(jì)方法不局限于雪糕棒質(zhì)量在線檢測(cè)系統(tǒng),還可以擴(kuò)展到其他領(lǐng)域產(chǎn)品的高速在線檢測(cè)系統(tǒng)中。
1 高速在線檢測(cè)系統(tǒng)架構(gòu)及工作原理
1.1 總體架構(gòu)
本文使用高速雪糕棒質(zhì)量在線檢測(cè)系統(tǒng)作為一般的高速視覺在線檢測(cè)系統(tǒng)模型,系統(tǒng)結(jié)構(gòu)圖如圖1所示。其中A、B、C、D分別為檢測(cè)雪糕棒的正面、左側(cè)、右側(cè)和反面攝像機(jī)。本系統(tǒng)以多攝像機(jī)在線檢測(cè)為例,同樣適用于單攝像機(jī)。
1.2 工作原理
系統(tǒng)運(yùn)行時(shí),機(jī)器生產(chǎn)出來的雪糕棒直接落入到圖1所示的儲(chǔ)箱中。儲(chǔ)箱下方是帶等間距凹槽的鏈條,儲(chǔ)箱中的雪糕棒自動(dòng)落入到凹槽中,電機(jī)帶動(dòng)鏈條運(yùn)動(dòng),將堆積的雪糕棒轉(zhuǎn)成流水線上等間距排列的雪糕棒,多余的雪糕棒由掃棒器掃回到儲(chǔ)箱中。光電傳感器正對(duì)著鏈條上凹槽的凹陷處,一個(gè)凹槽對(duì)應(yīng)一根雪糕棒,故每經(jīng)過一根雪糕棒,光電傳感器就會(huì)產(chǎn)生一個(gè)脈沖。4個(gè)攝像機(jī)的外觸發(fā)線并聯(lián)后連接到光電傳感器的信號(hào)輸出端,由一個(gè)脈沖同時(shí)觸發(fā)4個(gè)攝像機(jī)拍照。固定4個(gè)攝像機(jī)的位置,使得觸發(fā)時(shí)刻流水線上雪糕棒正好落入到攝像機(jī)的視場(chǎng)中心。攝像機(jī)采集圖像完成后通過USB3.0數(shù)據(jù)線把數(shù)據(jù)傳輸?shù)接?jì)算機(jī)。計(jì)算機(jī)接收到數(shù)據(jù)后開啟多線程并行處理4攝像機(jī)的圖像,并將處理結(jié)果存儲(chǔ)在結(jié)果緩存器中等待輸出。當(dāng)雪糕棒運(yùn)動(dòng)到第一個(gè)氣泵時(shí),從結(jié)果緩存器中取出當(dāng)前雪糕棒4個(gè)面的檢測(cè)結(jié)果,合并后輸出。輸出端由4個(gè)電磁閥分別彈出U(次優(yōu))、B(良)、C(中)和D(差)4個(gè)等級(jí)的雪糕棒,沒有缺陷的雪糕棒跟隨流水線落入到最末端的J(最優(yōu))級(jí)容器中。
2 干擾源分析
計(jì)算機(jī)運(yùn)行高速在線檢測(cè)軟件時(shí),計(jì)算機(jī)硬件和軟件等環(huán)境因素有時(shí)會(huì)掩蓋算法本身的優(yōu)劣。所使用的操作系統(tǒng)、編譯器、運(yùn)行框架等軟件的不同,可以影響它們的結(jié)果。即使是同一臺(tái)電腦、同一種操作系統(tǒng),CPU使用率和內(nèi)存占用情況不一樣,也會(huì)造成細(xì)微的差異。在高速視覺在線檢測(cè)系統(tǒng)中,這些微小的差異直接影響程序的穩(wěn)定性。本文總結(jié)出3種影響程序穩(wěn)定性的干擾源。
2.1 系統(tǒng)本身的干擾
Windows操作系統(tǒng)的多線程一直被認(rèn)為存在著很多問題,例如多線程的不確定性和沒有保障性,各個(gè)線程的運(yùn)行完全是以不可預(yù)料的方式和速度推進(jìn)。有時(shí)同一個(gè)程序運(yùn)行了N次,其結(jié)果也存在著一定的差異。用同一個(gè)算法進(jìn)行1 000次運(yùn)算所得到的時(shí)間曲線圖如圖2所示。從圖中可以看出系統(tǒng)本身的干擾導(dǎo)致檢測(cè)時(shí)間的波動(dòng)達(dá)到±5.5 ms。
2.2 負(fù)載干擾
當(dāng)負(fù)載差異[4]較大時(shí),檢測(cè)時(shí)間也會(huì)有一定的差異。在高速在線檢測(cè)系統(tǒng)中,目標(biāo)的檢測(cè)時(shí)間存在一般估計(jì)量,但是程序運(yùn)行過程中難以保證每次的檢測(cè)時(shí)間都不會(huì)超過一般估計(jì)量。隨機(jī)抽取1 000根雪糕棒進(jìn)行檢測(cè),并對(duì)檢測(cè)時(shí)間進(jìn)行統(tǒng)計(jì),得到系統(tǒng)本身干擾和負(fù)載干擾疊加的檢測(cè)時(shí)間曲線如圖3所示。從圖中可以看出系統(tǒng)干擾和負(fù)載干擾導(dǎo)致檢測(cè)時(shí)間波動(dòng)達(dá)到±22 ms。
2.3 其他進(jìn)程干擾
當(dāng)檢測(cè)軟件正在運(yùn)行時(shí),系統(tǒng)突然打開一個(gè)進(jìn)程,新的進(jìn)程會(huì)搶占CPU和內(nèi)存資源,使得當(dāng)前檢測(cè)時(shí)間突變。在雪糕棒在線檢測(cè)過程中,打開另一個(gè)進(jìn)程所帶來時(shí)間突變的曲線如圖4所示。從圖中可以看出其他進(jìn)程的開啟導(dǎo)致檢測(cè)時(shí)間整體升高了。
在高速視覺在線檢測(cè)系統(tǒng)[5]中,不管是由系統(tǒng)本身、負(fù)載差異還是用戶操作所帶來的干擾都是不可忽略的。這就決定了在高速視覺在線檢測(cè)系統(tǒng)中必需要有一種軟件抗干擾方法[6,7]可以緩解這些干擾,為高速視覺在線檢測(cè)系統(tǒng)的實(shí)現(xiàn)提供保障。
3 抗干擾方法的設(shè)計(jì)
通常的軟件抗干擾方法[8]有擴(kuò)頻技術(shù)、剔除異常數(shù)[9]、延時(shí)技術(shù)[10]等,擴(kuò)頻技術(shù)主要解決通信上的干擾問題,剔除異常數(shù)要耗費(fèi)大量CPU資源排除異常,延時(shí)技術(shù)會(huì)耗費(fèi)大量的時(shí)間。常用的軟件抗干擾方法無法滿足現(xiàn)在的高速視覺在線檢測(cè)系統(tǒng)。為此本文設(shè)計(jì)了基于計(jì)算機(jī)緩存機(jī)制的高速視覺在線檢測(cè)系統(tǒng)的軟件抗干擾方法。數(shù)據(jù)緩存機(jī)制可以有效地減少多線程運(yùn)算的擁塞,減輕計(jì)算機(jī)的負(fù)載,加快整個(gè)系統(tǒng)的運(yùn)行速度。通過部署結(jié)果緩存器,可以進(jìn)一步提高高速視覺在線檢測(cè)系統(tǒng)的性能。
本設(shè)計(jì)中光電傳感產(chǎn)生的脈沖同時(shí)觸發(fā)4個(gè)攝像機(jī)采集圖像,圖像采集完成后送入到計(jì)算機(jī)內(nèi)存中,4個(gè)攝像機(jī)對(duì)應(yīng)4個(gè)線程分別對(duì)各自的圖像進(jìn)行運(yùn)算。運(yùn)算的結(jié)果存儲(chǔ)在由拍照幀數(shù)作為地址偏移量的存儲(chǔ)器中。對(duì)于同一根雪糕棒,跟隨流水線先后分別經(jīng)過A、B、C和D 4個(gè)攝像機(jī)。當(dāng)經(jīng)過最末端的D攝像機(jī)并且D攝像機(jī)所對(duì)應(yīng)的線程運(yùn)算完畢時(shí),一根雪糕棒4個(gè)面的檢測(cè)結(jié)果均已存儲(chǔ)在結(jié)果緩存器中。從圖1中可以看出,最末端攝像機(jī)與最前端電磁閥之間存在著一定的距離,雪糕棒檢測(cè)完成后還需要在鏈條上運(yùn)動(dòng)這段距離才到達(dá)輸出端。本設(shè)計(jì)就是利用這一段的物理距離和計(jì)算機(jī)的緩存機(jī)制實(shí)現(xiàn)的抗干擾方法。顯然在這里檢測(cè)末端與輸出前端的距離與緩沖時(shí)間是成正比的,該距離可以在機(jī)械設(shè)計(jì)時(shí)改變。在此用雪糕棒的數(shù)量來衡量這段距離。檢測(cè)末端與輸出前端之間的雪糕棒數(shù)量n只需滿足如下數(shù)學(xué)關(guān)系即可:
式中,i表示雪糕棒序號(hào),ti表示第i根雪糕棒的檢測(cè)時(shí)間,T表示一根雪糕棒的平均檢測(cè)時(shí)間。由式(1)可知,當(dāng)n=1時(shí),有t1<T,緩沖時(shí)間為(T-ta);當(dāng)n=2時(shí),有t1+t2<2T,緩沖時(shí)間為2(T-ta);當(dāng)n=3時(shí),有t1+t2+t3<3T,緩沖時(shí)間為3(T-ta)。由此可知n越大緩沖時(shí)間越大,但是n增大的代價(jià)是計(jì)算機(jī)存儲(chǔ)空間和流水線長度的浪費(fèi)。由大量的雪糕棒樣本統(tǒng)計(jì)得到結(jié)果,每根雪糕棒的平均檢測(cè)時(shí)間ta=51.43 ms,產(chǎn)生干擾脈沖幅值大于2ta的概率為0.6%。雪糕棒生產(chǎn)廠商要求檢測(cè)的速度為15根/s,算得檢測(cè)時(shí)限T=66.66 ms。平均一根雪糕棒有Td=T-ta=15.23 ms的緩沖時(shí)間。計(jì)算機(jī)緩存的作用相當(dāng)于是把每次的緩沖時(shí)間都收集起來,供給干擾脈沖消耗。同時(shí),雪糕棒的檢測(cè)時(shí)間參差不齊,緩存機(jī)制使得各次的檢測(cè)時(shí)間可以互補(bǔ),處理時(shí)間短的線程把CPU騰讓出來供給處理時(shí)間長的線程使用。程序設(shè)計(jì)中,使用計(jì)數(shù)器對(duì)攝像機(jī)采集的幀數(shù)進(jìn)行計(jì)數(shù),每次開啟線程時(shí)把計(jì)得的幀數(shù)傳遞到線程處理函數(shù)中,線程處理完成后把結(jié)果存儲(chǔ)到以傳入的幀數(shù)為地址偏移量的循環(huán)隊(duì)列中。如此一來,檢測(cè)時(shí)間短的結(jié)果數(shù)據(jù)先入隊(duì),檢測(cè)時(shí)間長的結(jié)果數(shù)據(jù)后插隊(duì)。未使用緩存和使用緩存的檢測(cè)時(shí)間對(duì)比如圖5所示。未使用緩存時(shí),對(duì)單次的最長檢測(cè)時(shí)間M感興趣,使用緩存后,只對(duì)多次檢測(cè)的平均檢測(cè)時(shí)間N感興趣。緩存的使用實(shí)現(xiàn)了各次耗時(shí)不等檢測(cè)的時(shí)間互補(bǔ),合理利用了各次檢測(cè)的時(shí)間余量。經(jīng)過緩沖時(shí)間后,最終輸出的是與單次檢測(cè)時(shí)間長短無關(guān)的結(jié)果序列,從而使得系統(tǒng)具備了抗干擾能力。
4 實(shí)驗(yàn)結(jié)果與性能分析
抗干擾方法測(cè)試:從工業(yè)現(xiàn)場(chǎng)隨機(jī)抽出一部分雪糕棒,分別運(yùn)行未使用緩存和使用緩存的程序做了測(cè)試。測(cè)試過程中雪糕棒運(yùn)行速度從1根/s逐步提升到19根/s,通過多次測(cè)試并對(duì)結(jié)果觀察統(tǒng)計(jì)得到的實(shí)驗(yàn)數(shù)據(jù)如表1所示。
從實(shí)驗(yàn)結(jié)果看出,當(dāng)雪糕棒的運(yùn)行速度在10根/s以內(nèi)時(shí),平均檢測(cè)時(shí)間小于規(guī)定檢測(cè)時(shí)間,未使用緩存和使用緩存的程序運(yùn)行結(jié)果都不存在漏檢現(xiàn)象;當(dāng)速度超過10根/s后未使用緩存的測(cè)試結(jié)果開始出現(xiàn)漏檢,而使用緩存的程序還是正常運(yùn)行;當(dāng)檢測(cè)速度提升至15根/s時(shí),未使用緩存的程序出現(xiàn)了嚴(yán)重的漏檢現(xiàn)象;當(dāng)檢測(cè)速度在17根/s以內(nèi),使用緩存的程序均不會(huì)出現(xiàn)漏檢現(xiàn)象;當(dāng)速度提升至18根/s時(shí),使用緩存的程序檢測(cè)結(jié)果也開始出現(xiàn)了漏檢現(xiàn)象。該實(shí)驗(yàn)證明,緩存機(jī)制在高速視覺在線檢測(cè)系統(tǒng)中的應(yīng)用對(duì)程序運(yùn)行的穩(wěn)定性有很大的改善。
5 結(jié)論
本文所設(shè)計(jì)的基于計(jì)算機(jī)緩存機(jī)制的軟件抗干擾方法充分利用了空間換取時(shí)間思想,最終使得雪糕棒在線檢測(cè)系統(tǒng)的檢測(cè)速度從原來的10根/s提高到了17根/s,檢測(cè)速度提高了70%。由此可知,本文所設(shè)計(jì)的軟件抗干擾方法對(duì)系統(tǒng)本身、負(fù)載差異以及用戶操作所帶來的干擾具有一定的抵抗力,為一般的高速視覺在線檢測(cè)系統(tǒng)的高速、穩(wěn)定運(yùn)行提供了保障。
參考文獻(xiàn)
[1] 周文舉.基于機(jī)器視覺的在線高速檢測(cè)與精確控制研究及應(yīng)用[D].上海:上海大學(xué),2013.
[2] 吳繼棟.淺論計(jì)算機(jī)緩存的工作機(jī)制[J].計(jì)算機(jī)與信息技術(shù),2007,33(13):411-422.
[3] 苑瑋琦,李德健.雪糕棒輪廓質(zhì)量視覺在線檢測(cè)方法[J].計(jì)算機(jī)應(yīng)用研究,2015,11(33):1022-1030.
[4] 張金柱,洪佩琳,薛開平.負(fù)載自適應(yīng)的CoMP調(diào)度策略[J].中國科學(xué)院研究生院學(xué)報(bào),2012,5(29):644-651.
[5] 李曉飛.高速在線機(jī)器視覺檢測(cè)方法的研究[D].天津:天津理工大學(xué),2008.
[6] 史勇,謝曉霞.測(cè)控系統(tǒng)中的軟件抗干擾技術(shù)[J].現(xiàn)代電子技術(shù),2006,5(19):99-101.
[7] 孫亞楠.軟件抗干擾技術(shù)[J].電子質(zhì)量,2010,8(8):84-85.
[8] 王建新,楊世鳳,史永江,等.系統(tǒng)測(cè)試中的軟件抗干擾技術(shù)[J].國外電子測(cè)量技術(shù),2005(10):18-20.
[9] 張慧娟.異常數(shù)據(jù)檢驗(yàn)的幾種方法[D].秦皇島:燕山大學(xué),2012.
[10] 刁一峰,楊培剛,劉麗萍,等.軟件延時(shí)程序的分析與精確延時(shí)程序設(shè)計(jì)[J].沈陽工程學(xué)院學(xué)報(bào)(自然科學(xué)版),2014,10(4):356-358,369.