桂林電子科技大學(xué)電子工程與自動化學(xué)院 黃金偉 王澤珺 陳 以 袁玉嬌 井慶澤 郭錦瑞 曾 恒
本文以一般實(shí)驗(yàn)室常用的智慧工廠生產(chǎn)線為背景平臺,運(yùn)用MATLAB等對以機(jī)器視覺的倉儲貨物圖像信息的處理,并以此算法為核心,通過PLC實(shí)現(xiàn)機(jī)器人對倉儲貨物搬運(yùn)的控制。
現(xiàn)代圖像信息處理和識別技術(shù)的發(fā)展,被人們越來越多應(yīng)用于倉儲物流中機(jī)器人的自動搬運(yùn)控制上。本文以實(shí)驗(yàn)室常用的智慧工廠生產(chǎn)線為背景平臺,利用自身機(jī)器視覺,應(yīng)用MATLAB等進(jìn)行圖像信息采集、分析和處理,實(shí)現(xiàn)機(jī)器人對倉儲貨物的自動搬運(yùn)控制。
機(jī)械視覺的建立以攝像機(jī)的架設(shè)為基礎(chǔ),通過拍攝倉儲貨物圖像,提取圖像特征等加以分析,從而獲取庫位貨物的信息,然后通過串口通訊向機(jī)器人(機(jī)械臂)發(fā)送相關(guān)指令,來達(dá)到搬運(yùn)貨物的目的。
系統(tǒng)由立體庫/貨倉、加工、裝配、機(jī)器人搬運(yùn)等組成。除了機(jī)器人專用控制器之外,加工、裝配、質(zhì)檢與噴碼工作均有PLC承擔(dān)控制任務(wù),并與其他PLC之間通過以太網(wǎng)通信實(shí)現(xiàn)互連,構(gòu)成各種分布式的控制系統(tǒng)。
系統(tǒng)控制平臺上的圖像處理算法是實(shí)驗(yàn)的核心和關(guān)鍵,它制約著XYZ軸直角坐標(biāo)機(jī)械臂流程操作的效率和穩(wěn)定性。
MATLAB、OpenCV均是圖像處理的首選軟件,但相比之下,MATLAB語言代碼簡明,功能較強(qiáng)大,調(diào)用各類函數(shù)方便,調(diào)試算法快捷,開發(fā)周期短,更貼近實(shí)際。
輸入設(shè)備是數(shù)字設(shè)備和成像設(shè)備的組合,獲取數(shù)字圖像是視覺系統(tǒng)最基本的功能。本著節(jié)約與普遍的原則,選擇比較普通的USB2.0/5.0MEGA PC產(chǎn)品化的彩色攝像頭作為輸入設(shè)備對倉儲貨物場景以及其中的物體進(jìn)行圖像采集。
系統(tǒng)機(jī)械臂支持以太網(wǎng)與MODBUS通訊協(xié)議。機(jī)械臂用RS-485接口,并以485公線轉(zhuǎn)USB的接口接入系統(tǒng)。
對機(jī)械臂的初步調(diào)試,可以利用串口助手軟件進(jìn)行虛擬數(shù)據(jù)的發(fā)送仿真測試,待成功后以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ī)性能的影響,過于清晰和高分辨率的圖片,由于其對應(yīng)矩陣數(shù)據(jù)太龐大,會導(dǎo)致后期的數(shù)據(jù)處理中運(yùn)算時間過長,甚至無法正常運(yùn)算。為提高工作效率,一般選擇能正常處理圖片數(shù)據(jù)的合適分辨率。
開啟攝像頭,拍攝了庫位的相關(guān)圖像,讀取該圖像(矩陣),并根據(jù)圖像的數(shù)據(jù)大小判斷是否需要對圖像的大小進(jìn)行壓縮。如果調(diào)用輸入設(shè)備時,對圖像采集的分辨率已進(jìn)行了限制,此時一般無需進(jìn)行二次壓縮,就可進(jìn)行下一步運(yùn)算。如果需要壓縮,要以imshow函數(shù)審查壓縮后的圖像是否滿足特征提取的需求。
每一張彩色圖像通常是由紅(R)、綠(G)、藍(lán)(B)三個分量來表示的,這些分量都處在0-255之間。圖像中的“R、G、B”的比例通過不同的灰度顏色來表示,通道中的白色表示這里的色光亮度最高,其亮度水平為255,相反黑色為0。
圖像識別的目的是為了區(qū)分倉儲貨物的黑/白(原色),因此處理方案便為先灰度化,后二值化。根據(jù)環(huán)境設(shè)定閾值分離出黑色部分,或者直接分割圖像并判斷單個貨碼黑色像素占比是否達(dá)到一定比例以上,達(dá)到則為黑色貨碼,否則為原色貨碼。
通過調(diào)用相關(guān)函數(shù)I=rgb2gray(I)能夠?qū)斎朐O(shè)備獲取的彩色圖像進(jìn)行轉(zhuǎn)化,形成灰度圖,如圖2(b)。

圖2 原圖像與灰度圖像、二值圖像的對比
通過圖2的對比,可以發(fā)現(xiàn)灰度圖像本質(zhì)上是對原數(shù)據(jù)矩陣I的變化處理,圖像中的像素點(diǎn)都有矩陣之中的每兩個元素對應(yīng)著,其灰度級由對應(yīng)著的元素的數(shù)值來進(jìn)行代表。I矩陣可以是雙精度。但通過對比圖像的變化發(fā)現(xiàn),雖然得到的圖片彩色已經(jīng)被過濾,但是無論是人眼還是計算機(jī),依然不能準(zhǔn)確分清黑色,這是由于原色貨碼與背景當(dāng)中的干擾所致。
繼續(xù)對圖像進(jìn)行二值化處理,調(diào)用函數(shù)I=im2bw(I),結(jié)果如圖2(c)。分析發(fā)現(xiàn),處理后的二值圖像確實(shí)能夠明顯區(qū)分黑白。若受環(huán)境因素等影響,難以提取圖像的有效特征和信息,可以在物理和程序上對圖像進(jìn)一步處理,如應(yīng)用濾波、降噪、補(bǔ)光等手段加以改善,也可以直接進(jìn)行多次圖像分割,最大化縮小環(huán)境等因素的干擾。
(1)圖像分割優(yōu)化
圖3為已分割的16個倉儲圖像庫位當(dāng)中的黑色貨碼和原色貨碼,黑色貨碼的位置為1、3、6、8、9、11、14、16,而原色為2、4、5、7、10、12、13、15。

圖3 16庫位分割圖及17位輸出碼
為提取圖像特征信息,需對閾值分割后的圖像作進(jìn)一步優(yōu)化。思路是對于16個貨倉庫位進(jìn)行裁剪,形成16個圖像塊,圖像塊大小約為一個庫位的面積。此做法可以避免背景當(dāng)中無關(guān)黑色像素帶來的影響,同時又不會影響圖像重要信息的特征提取。
調(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為截取后圖像的長和寬。可以根據(jù)倉儲庫位的實(shí)際長度以及寬度對截取后圖像的長寬進(jìn)行設(shè)置。
(2)特征提取與信息鑒別
圖像的特征提取是處理過程之中的核心。為有效區(qū)分黑色貨碼和原色貨碼,方案是根據(jù)處理和分割后的圖像進(jìn)行黑色像素數(shù)量的計算和分析。原色貨碼在上面的圖像處理過程當(dāng)中已經(jīng)被劃分為白色,因此只需要計算出這16張截取圖像中的黑白像素數(shù)總和,再測算出黑色像素或者白色像素的個數(shù),最后以黑色像素占總像素的百分比,設(shè)定合理的閾值,即可進(jìn)行判斷是否為所需貨碼。
實(shí)驗(yàn)中,黑色貨碼上身纏有黑色膠帶,計算占比約為整個貨碼表面積的35%~45%,而原色貨碼整體為暗銀色,無黑色膠布纏繞,黑色素占比理論上應(yīng)該為0%。考慮二值化處理中的誤差和環(huán)境等因素的影響,設(shè)定閾值為30%,并對輸出的17位數(shù)碼加以判斷,除去第一位固定為3,后16位依照其對應(yīng)的截圖予以分析。若庫位所在截圖的黑色像素占比大于30%,則該編號位的輸出定為“3”,否則為“0”。
以16號庫位(第一行、第一列)為例,對其進(jìn)行黑色像素及其所占百分比的計算。二值化處理后的圖像只有1和0兩個值,即黑和白。對1和0分別求和,得求和結(jié)果便分別是黑和白像素的總數(shù)。通過size函數(shù)得圖像I1矩陣的行數(shù)m1和列數(shù)n1,n1與m1相乘即為整個矩陣的大小,也即圖像的總像素點(diǎn)數(shù)。因此,可計算出16號庫位位置的截圖總像素點(diǎn)數(shù)為695,其黑色像素占比約33%,見圖4。

圖4 黑色像素占比計算
17位輸出碼33030030330300303,見圖4下部,該數(shù)據(jù)也切實(shí)符合了從一號庫位到十六號庫位“黑白黑白白黑白黑黑白黑白白黑白黑”的正確順序,此時只需要完善上位機(jī)與PLC之間的通信,正確的發(fā)送信息即可基本實(shí)現(xiàn)機(jī)械視覺的搭建。
系統(tǒng)通過攝像頭采集庫位信息,經(jīng)處理并以特征提取后發(fā)送至PLC。PLC依據(jù)指令,啟動工作單元,機(jī)械臂對貨倉進(jìn)行掃庫,并提取庫存信息,獲取最近的符合條件的物料,就能不斷進(jìn)行操作。
依照工作單元裝置的I/O信號分配以及工作任務(wù)要求,這里的PLC選用ST30 CPU,它共有18點(diǎn)輸入和12點(diǎn)晶體管輸出。
為方便外接和操作,表1提供部分通訊、編程點(diǎn)位對照表。

表1 部分編程點(diǎn)位對照表
參考表1,可利用上位機(jī)以及相關(guān)組態(tài)軟件對系統(tǒng)流程進(jìn)行監(jiān)控與分析。
使用MODBUS/RTU代碼及通訊協(xié)議,CPU自帶的COM0。
(1)通信編程
通訊過程中,波特率為9600,8位數(shù)據(jù)位,1位停止位,無奇偶效驗(yàn)位。&DATA0位置開始的20個字為MODBUS讀取區(qū),也就是從40000到40020,按字讀取。占用存儲器中的VB1100~VB1119。
(2)狀態(tài)修改與操作
State=0為復(fù)位,1:復(fù)位完成→2:開始掃庫→3:掃庫完成→4:去等待位置→5:走到庫位前等待→6:走到目標(biāo)庫位→7:取貨物→8:走到物料臺→9:送貨→10:完成→返回到5。
選用MODBUS模式及其調(diào)試精靈,串口9600.N.8.1,設(shè)備地址1,啟動PLC。開始讀取40018,地址八進(jìn)制21,22。可以讀取兩個WORD,數(shù)據(jù)00,01表示狀態(tài)為0,并請求庫位1。
物料屬性:00無,11原色;取料命令:00無,01原色。
寫17個數(shù)據(jù),若模擬抓取1#、2#庫位貨物,寫入為: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ī)器視覺的倉儲貨物圖像信息識別和控制,使機(jī)器人有了“眼睛”,對倉儲貨碼實(shí)施識別,以機(jī)械臂夾取并搬運(yùn)至貨物運(yùn)送站,經(jīng)加工后送出。本設(shè)計的系統(tǒng)具有良好的可控性、穩(wěn)定性和操作性,與普通生產(chǎn)線系統(tǒng)相比,提升了從貨物下單到貨物裝配送出的自動化程度,節(jié)省了人力物力,較大地提高了貨物搬運(yùn)效率。