蘇州工業(yè)職業(yè)技術學院機電工程系 王趙雨 徐 黎 仝 奧 劉 晨 周家豪 鹿 霖
使用OpenCV開源視覺庫,通過色域轉(zhuǎn)化、輪廓提取、角點識別等功能實現(xiàn)對指定產(chǎn)品零件的特征圖形識別。使用開源控制器樹莓派及其搭載的Pi Camera攝像頭獲取機器人攜行工件的原始圖像,并對圖像進行濾波,灰度轉(zhuǎn)化等處理,再對其輪廓進行提取、擬合等操作,最終獲得指定幾何形狀的識別結(jié)果并進行標定。結(jié)果表明,作為一項基于開源軟硬件的解決方案,可實現(xiàn)對指定零件上的三角形,圓形,正方形,矩形輪廓進行識別判斷,并可作為產(chǎn)線的一部分,與機器人進行聯(lián)動。
隨著中國制造向中國”智”造轉(zhuǎn)型升級,對生產(chǎn)效率的要求也日益提高,借助傳統(tǒng)的“打光透亮”和“大小格柵”方法對流水線上零件進行物理檢測質(zhì)檢和分類的工作變得越來越困難,對于借助機器視覺進行進一步精細核驗的需求越來越迫切。目前市場成熟的視覺軟件和成品智能相機源碼多為國外企業(yè)保密資料,國內(nèi)相關信息又過于零散,且成熟代碼多為基于商業(yè)軟件MATLAB、Halcon編寫。
本文主要研究了使用開源硬件樹莓派作為控制器,通過開源視覺庫OpenCV對某產(chǎn)線零件上典型特征圖形進行識別的方法,同時加入了機器人與樹莓派的數(shù)據(jù)通信作為流程控制與結(jié)果獲取。此類方法可以應用于工業(yè)生產(chǎn)中對于零件輪廓的分類和零件加工是否到位進行檢測,具有簡便可靠等特點,易于在生產(chǎn)中應用。本案例所使用的檢測對象即為某型號輪轂零件。
系統(tǒng)硬件框圖如圖1所示,使用IRB120機器人作為上位機使用socket指令與樹莓派進行TCP通信,用于下達拍攝指令及接收圖像識別結(jié)果;使用樹莓派自帶的CSI接口的Pi Camera攝像頭進行圖像拍攝,獲取目標的圖像數(shù)據(jù);樹莓派4B作為控制器,對采集到的圖像數(shù)據(jù)進行處理分析;HDMI顯示屏用于實時顯示結(jié)果。實際使用時,無屏幕顯示亦可。
圖1 系統(tǒng)硬件框圖
由于樹莓派搭載的操作系統(tǒng)為Raspberry Pi OS,屬于Linux系統(tǒng),所以在軟件安裝上與常用的Windows系統(tǒng)略有不同。其所有操作均通過終端(terminal)命令行執(zhí)行,下載OpenCV源碼需借助“wget-o”指令從目標網(wǎng)站(官方提供的是github鏈接)下載zip格式壓縮包。然后再使用“unzip“指令進行解壓。解壓后的庫文件經(jīng)“CMake”編譯后即可正常使用。如果不能正常編譯安裝,應首先考慮使用“sudo apt-get update&&upgrade”更新系統(tǒng)。此外如果希望程序能夠穩(wěn)定運行還需通過“sudo apt-get install”指令安裝必要的配套庫如OpenCV數(shù)值優(yōu)化庫“l(fā)ibatlas-base-dev gfortran”等。
圖2所示為該產(chǎn)線零件輪廓識別過程流程圖,IRB120機器人作為上位機下達指令,相機進行拍照,樹莓派對相機采集的圖像數(shù)據(jù)進行處理,包括圖像預處理,輪廓擬合與提取,角點檢測、形狀判斷,面積篩選,最終將識別結(jié)果反饋給IRB120機器人。整個過程可循環(huán)進行。
圖2 輪廓識別流程圖
通過攝像頭拍照獲取的原始圖像如圖3所示。主要識別中心位置的方形、三角形、長方形和圓形圖案。由于主要是對圖像做圖形識別,而讀入的初始圖像信息包含的無用信息和干擾項過多,如大量不可視的噪點以及做形狀識別所不需要的色彩信息,所以首先對圖像進行高斯模糊GaussianBlur()使某些不明顯的噪聲輪廓被率先濾除,然后再進行色域轉(zhuǎn)化,把原BGR圖成GRAY格式(如圖4所示)。
圖3 原始圖像
圖4 預處理后的圖像
圖像輪廓特指目標圖像中灰度值突變的區(qū)域邊界,目前業(yè)界多用Canny算子進行輪廓提取。經(jīng)過多次嘗試,測試設定閾值為25,75,使用默認內(nèi)核,內(nèi)核為3,使用Canny算子提取后輪廓如圖5所示??梢娔繕藞D案輪廓,但仍有很多其他邊緣輪廓,如輪轂、背景干擾線等。
圖5 Canny算子處理后的粗輪廓圖
在獲得的粗輪廓圖基礎上,再使用膨脹dilation和侵蝕erosion的圖形學運算可以進一步削減Canny算子提取出的干擾輪廓,以避免對后續(xù)識別產(chǎn)生影響。此處使用了10X10的矩形內(nèi)核,矩形內(nèi)核由getStructingElement中的參數(shù)MORPH_RECT確定,其他的還有十字形,橢圓形,分別適合不同場合。具體對照如圖6,A為處理前,B為處理后。
圖6 侵蝕膨脹處理對照圖
使用Canny生成的輪廓圖后,借助FindCounter函數(shù)對其進行輪廓檢測。FindCounter函數(shù)可將較為抽象的輪廓轉(zhuǎn)化為易于處理的點集。其參數(shù)首先為輸入圖像,其次是接收輪廓的容器此處使用vector二重容器。再次為輪廓層級。接著是一些如閾值等可選參數(shù)。為了實現(xiàn)圖形判斷,引入conPoly函數(shù)篩選出輪廓點集中含拐點的特殊點,其中填入counter.size()。接著使用approPolyDP對獲取的點集進行多邊形擬合,最后再通過drawContours函數(shù)將獲得的輪廓進行標定,效果如圖7所示??梢?,除了將檢測的輪轂中心圖案標定出來之外,仍舊還有很多干擾輪廓。
圖7 輪廓標定
故在通過FindCounter獲取點集之后,調(diào)用counterArea函數(shù)計算輪廓面積。將計算得到的輪廓面積,篩除其中小與1000的部分后再進行后續(xù)操作。最終獲得如圖8所示效果。至此,成功識別目標形狀,并分別予以標定。
圖8 篩選
FindCounter函數(shù)識別輪廓對于照明條件有較高的要求,如果照明條件不夠理想則會出現(xiàn)難以準確檢測的問題。目前已知的,也是最簡便的方法為在相機周圍加裝燈帶,可顯著提高準確率。另外在在不變修改照明條件的情況下,可以考慮將相機設置為鎖幀,亦可削弱一定的影響。
整個零件特征圖形識別流程由IRB120機器人進行控制,所以在設計中,通過在樹莓派上建立TCP服務器,而IRB120作為TCP客戶端對樹莓派做動作請求。在樹莓派上通過軟件編程實現(xiàn),并通過關鍵詞觸發(fā),實現(xiàn)對圖形識別流程的控制。機器人端則使用指定的socket指令實現(xiàn),且需開啟616-1 PC-interface選項支持。
本文使用樹莓派4B和隨機搭載的Pi Camera攝像頭搭建了簡易可靠的視覺檢測系統(tǒng),運用OpenCV對產(chǎn)線零件特征圖形進行識別檢測,結(jié)果顯示該系統(tǒng)可以輕松準確地檢測出正方形,圓形,三角形,矩形,且整個流程可由上位機IRB120機器人實現(xiàn)控制。相機端軟件依靠C++語言的固有特性,運行高效且對CPU處理能力要求不高,有利于多平臺移植,使用通用TCP/IP套接字通信,更便于接入工業(yè)網(wǎng)絡。同時完全未涉及付費或保密內(nèi)容,有利于進一步降低生產(chǎn)成本及推廣使用。