桂林電子科技大學電子工程與自動化學院 黃金偉 王澤珺 陳 以 袁玉嬌 井慶澤 郭錦瑞 曾 恒
本文以一般實驗室常用的智慧工廠生產線為背景平臺,運用MATLAB等對以機器視覺的倉儲貨物圖像信息的處理,并以此算法為核心,通過PLC實現機器人對倉儲貨物搬運的控制。
現代圖像信息處理和識別技術的發展,被人們越來越多應用于倉儲物流中機器人的自動搬運控制上。本文以實驗室常用的智慧工廠生產線為背景平臺,利用自身機器視覺,應用MATLAB等進行圖像信息采集、分析和處理,實現機器人對倉儲貨物的自動搬運控制。
機械視覺的建立以攝像機的架設為基礎,通過拍攝倉儲貨物圖像,提取圖像特征等加以分析,從而獲取庫位貨物的信息,然后通過串口通訊向機器人(機械臂)發送相關指令,來達到搬運貨物的目的。
系統由立體庫/貨倉、加工、裝配、機器人搬運等組成。除了機器人專用控制器之外,加工、裝配、質檢與噴碼工作均有PLC承擔控制任務,并與其他PLC之間通過以太網通信實現互連,構成各種分布式的控制系統。
系統控制平臺上的圖像處理算法是實驗的核心和關鍵,它制約著XYZ軸直角坐標機械臂流程操作的效率和穩定性。
MATLAB、OpenCV均是圖像處理的首選軟件,但相比之下,MATLAB語言代碼簡明,功能較強大,調用各類函數方便,調試算法快捷,開發周期短,更貼近實際。
輸入設備是數字設備和成像設備的組合,獲取數字圖像是視覺系統最基本的功能。本著節約與普遍的原則,選擇比較普通的USB2.0/5.0MEGA PC產品化的彩色攝像頭作為輸入設備對倉儲貨物場景以及其中的物體進行圖像采集。
系統機械臂支持以太網與MODBUS通訊協議。機械臂用RS-485接口,并以485公線轉USB的接口接入系統。
對機械臂的初步調試,可以利用串口助手軟件進行虛擬數據的發送仿真測試,待成功后以MATLAB編寫相關程序進行進一步的調試。
圖1為圖像處理軟件的流程圖,其各部分主要功能介紹如下。

圖1 軟件流程圖
在MATLAB軟件當中,有專門的函數可以調用系統攝像頭或者擴展攝像頭,并根據其屬性生成相應分辨率的圖像或圖片。
實際中,所生成圖像并不是越清晰分辨率越高就越有利。相反受系統或計算機性能的影響,過于清晰和高分辨率的圖片,由于其對應矩陣數據太龐大,會導致后期的數據處理中運算時間過長,甚至無法正常運算。為提高工作效率,一般選擇能正常處理圖片數據的合適分辨率。
開啟攝像頭,拍攝了庫位的相關圖像,讀取該圖像(矩陣),并根據圖像的數據大小判斷是否需要對圖像的大小進行壓縮。如果調用輸入設備時,對圖像采集的分辨率已進行了限制,此時一般無需進行二次壓縮,就可進行下一步運算。如果需要壓縮,要以imshow函數審查壓縮后的圖像是否滿足特征提取的需求。
每一張彩色圖像通常是由紅(R)、綠(G)、藍(B)三個分量來表示的,這些分量都處在0-255之間。圖像中的“R、G、B”的比例通過不同的灰度顏色來表示,通道中的白色表示這里的色光亮度最高,其亮度水平為255,相反黑色為0。
圖像識別的目的是為了區分倉儲貨物的黑/白(原色),因此處理方案便為先灰度化,后二值化。根據環境設定閾值分離出黑色部分,或者直接分割圖像并判斷單個貨碼黑色像素占比是否達到一定比例以上,達到則為黑色貨碼,否則為原色貨碼。
通過調用相關函數I=rgb2gray(I)能夠對輸入設備獲取的彩色圖像進行轉化,形成灰度圖,如圖2(b)。

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

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

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

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