桂林電子科技大學(xué)電子工程與自動(dòng)化學(xué)院 黃金偉 王澤珺 陳 以 袁玉嬌 井慶澤 郭錦瑞 曾 恒
本文以一般實(shí)驗(yàn)室常用的智慧工廠生產(chǎn)線為背景平臺(tái),運(yùn)用MATLAB等對(duì)以機(jī)器視覺(jué)的倉(cāng)儲(chǔ)貨物圖像信息的處理,并以此算法為核心,通過(guò)PLC實(shí)現(xiàn)機(jī)器人對(duì)倉(cāng)儲(chǔ)貨物搬運(yùn)的控制。
現(xiàn)代圖像信息處理和識(shí)別技術(shù)的發(fā)展,被人們?cè)絹?lái)越多應(yīng)用于倉(cāng)儲(chǔ)物流中機(jī)器人的自動(dòng)搬運(yùn)控制上。本文以實(shí)驗(yàn)室常用的智慧工廠生產(chǎn)線為背景平臺(tái),利用自身機(jī)器視覺(jué),應(yīng)用MATLAB等進(jìn)行圖像信息采集、分析和處理,實(shí)現(xiàn)機(jī)器人對(duì)倉(cāng)儲(chǔ)貨物的自動(dòng)搬運(yùn)控制。
機(jī)械視覺(jué)的建立以攝像機(jī)的架設(shè)為基礎(chǔ),通過(guò)拍攝倉(cāng)儲(chǔ)貨物圖像,提取圖像特征等加以分析,從而獲取庫(kù)位貨物的信息,然后通過(guò)串口通訊向機(jī)器人(機(jī)械臂)發(fā)送相關(guān)指令,來(lái)達(dá)到搬運(yùn)貨物的目的。
系統(tǒng)由立體庫(kù)/貨倉(cāng)、加工、裝配、機(jī)器人搬運(yùn)等組成。除了機(jī)器人專用控制器之外,加工、裝配、質(zhì)檢與噴碼工作均有PLC承擔(dān)控制任務(wù),并與其他PLC之間通過(guò)以太網(wǎng)通信實(shí)現(xiàn)互連,構(gòu)成各種分布式的控制系統(tǒng)。
系統(tǒng)控制平臺(tái)上的圖像處理算法是實(shí)驗(yàn)的核心和關(guān)鍵,它制約著XYZ軸直角坐標(biāo)機(jī)械臂流程操作的效率和穩(wěn)定性。
MATLAB、OpenCV均是圖像處理的首選軟件,但相比之下,MATLAB語(yǔ)言代碼簡(jiǎn)明,功能較強(qiáng)大,調(diào)用各類函數(shù)方便,調(diào)試算法快捷,開發(fā)周期短,更貼近實(shí)際。
輸入設(shè)備是數(shù)字設(shè)備和成像設(shè)備的組合,獲取數(shù)字圖像是視覺(jué)系統(tǒng)最基本的功能。本著節(jié)約與普遍的原則,選擇比較普通的USB2.0/5.0MEGA PC產(chǎn)品化的彩色攝像頭作為輸入設(shè)備對(duì)倉(cāng)儲(chǔ)貨物場(chǎng)景以及其中的物體進(jìn)行圖像采集。
系統(tǒng)機(jī)械臂支持以太網(wǎng)與MODBUS通訊協(xié)議。機(jī)械臂用RS-485接口,并以485公線轉(zhuǎn)USB的接口接入系統(tǒng)。
對(duì)機(jī)械臂的初步調(diào)試,可以利用串口助手軟件進(jìn)行虛擬數(shù)據(jù)的發(fā)送仿真測(cè)試,待成功后以MATLAB編寫相關(guān)程序進(jìn)行進(jìn)一步的調(diào)試。
圖1為圖像處理軟件的流程圖,其各部分主要功能介紹如下。
圖1 軟件流程圖
在MATLAB軟件當(dāng)中,有專門的函數(shù)可以調(diào)用系統(tǒng)攝像頭或者擴(kuò)展攝像頭,并根據(jù)其屬性生成相應(yīng)分辨率的圖像或圖片。
實(shí)際中,所生成圖像并不是越清晰分辨率越高就越有利。相反受系統(tǒng)或計(jì)算機(jī)性能的影響,過(guò)于清晰和高分辨率的圖片,由于其對(duì)應(yīng)矩陣數(shù)據(jù)太龐大,會(huì)導(dǎo)致后期的數(shù)據(jù)處理中運(yùn)算時(shí)間過(guò)長(zhǎng),甚至無(wú)法正常運(yùn)算。為提高工作效率,一般選擇能正常處理圖片數(shù)據(jù)的合適分辨率。
開啟攝像頭,拍攝了庫(kù)位的相關(guān)圖像,讀取該圖像(矩陣),并根據(jù)圖像的數(shù)據(jù)大小判斷是否需要對(duì)圖像的大小進(jìn)行壓縮。如果調(diào)用輸入設(shè)備時(shí),對(duì)圖像采集的分辨率已進(jìn)行了限制,此時(shí)一般無(wú)需進(jìn)行二次壓縮,就可進(jìn)行下一步運(yùn)算。如果需要壓縮,要以imshow函數(shù)審查壓縮后的圖像是否滿足特征提取的需求。
每一張彩色圖像通常是由紅(R)、綠(G)、藍(lán)(B)三個(gè)分量來(lái)表示的,這些分量都處在0-255之間。圖像中的“R、G、B”的比例通過(guò)不同的灰度顏色來(lái)表示,通道中的白色表示這里的色光亮度最高,其亮度水平為255,相反黑色為0。
圖像識(shí)別的目的是為了區(qū)分倉(cāng)儲(chǔ)貨物的黑/白(原色),因此處理方案便為先灰度化,后二值化。根據(jù)環(huán)境設(shè)定閾值分離出黑色部分,或者直接分割圖像并判斷單個(gè)貨碼黑色像素占比是否達(dá)到一定比例以上,達(dá)到則為黑色貨碼,否則為原色貨碼。
通過(guò)調(diào)用相關(guān)函數(shù)I=rgb2gray(I)能夠?qū)斎朐O(shè)備獲取的彩色圖像進(jìn)行轉(zhuǎn)化,形成灰度圖,如圖2(b)。
圖2 原圖像與灰度圖像、二值圖像的對(duì)比
通過(guò)圖2的對(duì)比,可以發(fā)現(xiàn)灰度圖像本質(zhì)上是對(duì)原數(shù)據(jù)矩陣I的變化處理,圖像中的像素點(diǎn)都有矩陣之中的每?jī)蓚€(gè)元素對(duì)應(yīng)著,其灰度級(jí)由對(duì)應(yīng)著的元素的數(shù)值來(lái)進(jìn)行代表。I矩陣可以是雙精度。但通過(guò)對(duì)比圖像的變化發(fā)現(xiàn),雖然得到的圖片彩色已經(jīng)被過(guò)濾,但是無(wú)論是人眼還是計(jì)算機(jī),依然不能準(zhǔn)確分清黑色,這是由于原色貨碼與背景當(dāng)中的干擾所致。
繼續(xù)對(duì)圖像進(jìn)行二值化處理,調(diào)用函數(shù)I=im2bw(I),結(jié)果如圖2(c)。分析發(fā)現(xiàn),處理后的二值圖像確實(shí)能夠明顯區(qū)分黑白。若受環(huán)境因素等影響,難以提取圖像的有效特征和信息,可以在物理和程序上對(duì)圖像進(jìn)一步處理,如應(yīng)用濾波、降噪、補(bǔ)光等手段加以改善,也可以直接進(jìn)行多次圖像分割,最大化縮小環(huán)境等因素的干擾。
(1)圖像分割優(yōu)化
圖3為已分割的16個(gè)倉(cāng)儲(chǔ)圖像庫(kù)位當(dāng)中的黑色貨碼和原色貨碼,黑色貨碼的位置為1、3、6、8、9、11、14、16,而原色為2、4、5、7、10、12、13、15。
圖3 16庫(kù)位分割圖及17位輸出碼
為提取圖像特征信息,需對(duì)閾值分割后的圖像作進(jìn)一步優(yōu)化。思路是對(duì)于16個(gè)貨倉(cāng)庫(kù)位進(jìn)行裁剪,形成16個(gè)圖像塊,圖像塊大小約為一個(gè)庫(kù)位的面積。此做法可以避免背景當(dāng)中無(wú)關(guān)黑色像素帶來(lái)的影響,同時(shí)又不會(huì)影響圖像重要信息的特征提取。
調(diào)用imcrop函數(shù)可以實(shí)現(xiàn)該功能,A=imcrop(A,[x,y,a,b])。在此函數(shù)當(dāng)中,A為原圖像的矩陣,(x,y)為所截取圖像左上方點(diǎn)的坐標(biāo),而a,b為截取后圖像的長(zhǎng)和寬??梢愿鶕?jù)倉(cāng)儲(chǔ)庫(kù)位的實(shí)際長(zhǎng)度以及寬度對(duì)截取后圖像的長(zhǎng)寬進(jìn)行設(shè)置。
(2)特征提取與信息鑒別
圖像的特征提取是處理過(guò)程之中的核心。為有效區(qū)分黑色貨碼和原色貨碼,方案是根據(jù)處理和分割后的圖像進(jìn)行黑色像素?cái)?shù)量的計(jì)算和分析。原色貨碼在上面的圖像處理過(guò)程當(dāng)中已經(jīng)被劃分為白色,因此只需要計(jì)算出這16張截取圖像中的黑白像素?cái)?shù)總和,再測(cè)算出黑色像素或者白色像素的個(gè)數(shù),最后以黑色像素占總像素的百分比,設(shè)定合理的閾值,即可進(jìn)行判斷是否為所需貨碼。
實(shí)驗(yàn)中,黑色貨碼上身纏有黑色膠帶,計(jì)算占比約為整個(gè)貨碼表面積的35%~45%,而原色貨碼整體為暗銀色,無(wú)黑色膠布纏繞,黑色素占比理論上應(yīng)該為0%??紤]二值化處理中的誤差和環(huán)境等因素的影響,設(shè)定閾值為30%,并對(duì)輸出的17位數(shù)碼加以判斷,除去第一位固定為3,后16位依照其對(duì)應(yīng)的截圖予以分析。若庫(kù)位所在截圖的黑色像素占比大于30%,則該編號(hào)位的輸出定為“3”,否則為“0”。
以16號(hào)庫(kù)位(第一行、第一列)為例,對(duì)其進(jìn)行黑色像素及其所占百分比的計(jì)算。二值化處理后的圖像只有1和0兩個(gè)值,即黑和白。對(duì)1和0分別求和,得求和結(jié)果便分別是黑和白像素的總數(shù)。通過(guò)size函數(shù)得圖像I1矩陣的行數(shù)m1和列數(shù)n1,n1與m1相乘即為整個(gè)矩陣的大小,也即圖像的總像素點(diǎn)數(shù)。因此,可計(jì)算出16號(hào)庫(kù)位位置的截圖總像素點(diǎn)數(shù)為695,其黑色像素占比約33%,見(jiàn)圖4。
圖4 黑色像素占比計(jì)算
17位輸出碼33030030330300303,見(jiàn)圖4下部,該數(shù)據(jù)也切實(shí)符合了從一號(hào)庫(kù)位到十六號(hào)庫(kù)位“黑白黑白白黑白黑黑白黑白白黑白黑”的正確順序,此時(shí)只需要完善上位機(jī)與PLC之間的通信,正確的發(fā)送信息即可基本實(shí)現(xiàn)機(jī)械視覺(jué)的搭建。
系統(tǒng)通過(guò)攝像頭采集庫(kù)位信息,經(jīng)處理并以特征提取后發(fā)送至PLC。PLC依據(jù)指令,啟動(dòng)工作單元,機(jī)械臂對(duì)貨倉(cāng)進(jìn)行掃庫(kù),并提取庫(kù)存信息,獲取最近的符合條件的物料,就能不斷進(jìn)行操作。
依照工作單元裝置的I/O信號(hào)分配以及工作任務(wù)要求,這里的PLC選用ST30 CPU,它共有18點(diǎn)輸入和12點(diǎn)晶體管輸出。
為方便外接和操作,表1提供部分通訊、編程點(diǎn)位對(duì)照表。
表1 部分編程點(diǎn)位對(duì)照表
參考表1,可利用上位機(jī)以及相關(guān)組態(tài)軟件對(duì)系統(tǒng)流程進(jìn)行監(jiān)控與分析。
使用MODBUS/RTU代碼及通訊協(xié)議,CPU自帶的COM0。
(1)通信編程
通訊過(guò)程中,波特率為9600,8位數(shù)據(jù)位,1位停止位,無(wú)奇偶效驗(yàn)位。&DATA0位置開始的20個(gè)字為MODBUS讀取區(qū),也就是從40000到40020,按字讀取。占用存儲(chǔ)器中的VB1100~VB1119。
(2)狀態(tài)修改與操作
State=0為復(fù)位,1:復(fù)位完成→2:開始掃庫(kù)→3:掃庫(kù)完成→4:去等待位置→5:走到庫(kù)位前等待→6:走到目標(biāo)庫(kù)位→7:取貨物→8:走到物料臺(tái)→9:送貨→10:完成→返回到5。
選用MODBUS模式及其調(diào)試精靈,串口9600.N.8.1,設(shè)備地址1,啟動(dòng)PLC。開始讀取40018,地址八進(jìn)制21,22??梢宰x取兩個(gè)WORD,數(shù)據(jù)00,01表示狀態(tài)為0,并請(qǐng)求庫(kù)位1。
物料屬性:00無(wú),11原色;取料命令:00無(wú),01原色。
寫17個(gè)數(shù)據(jù),若模擬抓取1#、2#庫(kù)位貨物,寫入為:3/3/3/0/0/0/0/0/0/0/0/0/0/0/0/0/0/。發(fā)送1取。后續(xù)PLC等待命令。
結(jié)論:系統(tǒng)應(yīng)用MATLAB等軟件,并融合PLC控制、MODBUS串口通訊等技術(shù),完成了智慧生產(chǎn)線基于機(jī)器視覺(jué)的倉(cāng)儲(chǔ)貨物圖像信息識(shí)別和控制,使機(jī)器人有了“眼睛”,對(duì)倉(cāng)儲(chǔ)貨碼實(shí)施識(shí)別,以機(jī)械臂夾取并搬運(yùn)至貨物運(yùn)送站,經(jīng)加工后送出。本設(shè)計(jì)的系統(tǒng)具有良好的可控性、穩(wěn)定性和操作性,與普通生產(chǎn)線系統(tǒng)相比,提升了從貨物下單到貨物裝配送出的自動(dòng)化程度,節(jié)省了人力物力,較大地提高了貨物搬運(yùn)效率。