蘭天翔, 劉 英
(南京林業(yè)大學機械電子工程學院,江蘇 南京 210037)
近年來,隨著倉儲物流行業(yè)的迅速發(fā)展,自動化立體倉庫的應用日益廣泛,機器人搬運技術在節(jié)省勞動力、降低生產(chǎn)成本、改善生產(chǎn)環(huán)境、提高生產(chǎn)效率等方面有著舉足輕重的作用,搬運機器人在搬運速度、抓取重量、軌跡優(yōu)化等方面不斷優(yōu)化,取得了很大的成效。
本文的搬運任務:在物料區(qū)有若干隨機擺放的藍色或黃色的塑料小物塊,尺寸為30 mm×30 mm×30 mm,需要將兩種顏色的物塊搬運至指定的放置區(qū),工作區(qū)域為2 000 mm×2 000 mm。針對該任務,本文設計并實現(xiàn)一種智能搬運機器人,如圖1所示。在實現(xiàn)搬運的基本功能的基礎上,探索機器視覺在搬運機器人中的應用,并且為了進一步提高搬運機器人的智能程度,實現(xiàn)一種搬運機器人自主的路徑規(guī)劃。
圖1 智能搬運機器人
智能搬運機器人系統(tǒng)主要由機械結構及其控制系統(tǒng)、圖形化用戶界面、機器視覺、路徑規(guī)劃等4個模塊組成,如圖2所示。
圖2 智能搬運機器人系統(tǒng)總框架圖
搬運機器人的機械結構及其控制系統(tǒng)的基本功能是提供工作所需要的運動和動力,其基本工作原理是通過控制搬運機器人上的各個運動件的運動,使搬運機器人上的末端執(zhí)行器執(zhí)行相應的動作功能。
機器人的樣式多種多樣,在不同的工作條件下,不同的機械結構的執(zhí)行效率大不相同,選擇合適的機械結構將大大提高工作效率。因此,根據(jù)工作場景選擇一種合適的機械結構十分重要。按照幾何結構類型分類,常用的機器人的機械結構有四類:圓柱坐標結構、球坐標結構、關節(jié)坐標結構和直角坐標結構。其中,直角坐標結構也叫做笛卡爾坐標結構,其特點是結構簡單,精度及剛度高,按直角坐標的形式進行動作。針對搬運任務,直角坐標結構能極大減少設計工作量以及降低編程控制難度,同時獲得較高的控制精度,因此本搬運機器人選用直角坐標結構。
為了降低成本、提高搬運機器人制造效率、降低維護成本,綜合考慮后,本搬運機器人采用模塊化設計的思路,選用同步帶型直線模組作為傳動機構。直線模組發(fā)展至今,被廣泛應用于工業(yè)機械手、貼片和涂膠等各類設備中。這種機械結構的特點有:精度高、占用空間小、運動速度快及壽命長等。
選用北京時代超群電器科技有限公司生產(chǎn)的DS45M72型同步帶型直線模組,取X方向有效行程為600 mm,Y方向有效行程為900 mm。電機型號為57EBP98ALC,并選用與該閉環(huán)步進電機相配套的HBS57AJ-XL型號的步進電機驅(qū)動器。運用Solid Works進行建模,如圖3(a)所示。并完成硬件搭建,如圖3(b)所示。
圖3 機械結構
在機器人系統(tǒng)中,下位機是指機器人系統(tǒng)中的從屬控制器或從屬設備,負責執(zhí)行上位機發(fā)送的指令,控制機器人的運動和操作。在本搬運機器人中,下位機作為控制系統(tǒng),兼顧電機驅(qū)動、輸入、譯碼、插補等。本搬運機器人控制系統(tǒng)從硬件平臺選型和軟件結構設計入手進行設計并實現(xiàn)。
控制系統(tǒng)的硬件平臺形式繁多,通常有三種方案,可編程序控制器(PLC)、標準的工業(yè)控制計算機和設計專用的微機控制系統(tǒng)。其中專用微控制器系統(tǒng)根據(jù)實際任務出發(fā),只需包含通用系統(tǒng)的部分功能,一般以夠用為準,其特點是造價低、靈活性強、體積小等。為降低成本,提高控制器專用性,綜合分析后,選用專用微控制器系統(tǒng)作為本搬運機器人的下位機硬件。
常用的微控制器有8位單片機和32位微控制器等。在搬運任務中,下位機需要處理的任務較多、計算量較大,8位單片機相較于32位微處理器計算速度慢、存儲空間小,不太能滿足本搬運機器人下位機要求。而隨著電子技術的發(fā)展,32位微處理器集成度越來越高,外設越來越豐富的同時,價格越來越低,32位微處理器的應用越來越廣泛,是現(xiàn)在以及未來的大趨勢,因此選擇32位微處理器作為本搬運機器人的下位機。選用型號為STM32F103的最小系統(tǒng)板作為本搬運機器人的下位機硬件平臺,并使用Keil μVision5集成開發(fā)環(huán)境進行程序編寫。
搬運機器人的下位機控制系統(tǒng),是一個實時多任務系統(tǒng),因此需要對其軟件結構進行設計。常用的控制系統(tǒng)軟件結構有多任務并行處理結構、前后臺型軟件結構、中斷型軟件結構等。本搬運機器人下位機軟件結構采用前后臺型軟件結構,如圖4所示。前后型軟件結構適合于單微處理器的數(shù)控裝置,這種軟件結構中,以一個實時中斷服務程序作為前臺程序,承擔與運動直接相關的插補、位置控制等實時性要求較高的功能;以一個循環(huán)執(zhí)行的程序作為后臺程序,承擔顯示、譯碼、數(shù)據(jù)處理等實時性要求不高的功能。在后臺程序循環(huán)工作的過程中,前臺程序通過中斷不斷地進行定時插入。
圖4 前后臺型軟件結構
設計并編寫了本搬運機器人專用的下位機軟件,如圖5所示。實現(xiàn)了輸入、譯碼、插補、電機驅(qū)動等功能,使下位機能通過按鍵或上位機發(fā)送的G代碼指令,控制搬運機器人執(zhí)行相應的動作。
圖5 程序框圖
上位機是操作者與機器人設備之間進行信息交換的接口,作為機器人系統(tǒng)中的主控制器,負責整個系統(tǒng)的高級控制和決策,是機器人系統(tǒng)中重要的一部分。上位機通常具有更高的計算能力和更強大的處理能力,可以進行復雜的算法運算、路徑規(guī)劃、決策等任務。在本搬運機器人系統(tǒng)中,需要將下位機、機器視覺、路徑規(guī)劃等通過上位機軟件有機結合起來,因此上位機的設計是十分重要的一部分。
針對本設計對上位機軟件的需求進行分析,為了實現(xiàn)機器視覺檢測、路徑規(guī)劃、控制搬運機器人運動等,本搬運機器人中上位機軟件的主要功能有:實現(xiàn)與下位機通信,并能發(fā)送相應的G代碼指令;實現(xiàn)通過圖形化按鍵等控制搬運機器人運動及執(zhí)行相應的功能;能夠顯示攝像頭采集到的圖形,并通過點擊相應的按鍵調(diào)用相關的圖像處理程序;實現(xiàn)點擊相應的按鍵調(diào)用路徑規(guī)劃算法程序等。因此,本設計中主要包括串口界面、控制界面和圖像處理界面三大部分。本搬運機器人使用python的標準Tk GUI工具包tkinter作為圖形化界面開發(fā)工具,使用Visual Studio Code開發(fā)平臺,對上位機軟件的進行設計與開發(fā)。
串口界面,如圖6所示。在搬運機器人中,上位機與下位機之間通過UART實現(xiàn)通信,上位機向下位機發(fā)送G代碼,下位機發(fā)送實時狀態(tài)信息給上位機,并打印在上位機接收區(qū)相應位置上以供操作者監(jiān)控搬運當前狀態(tài)。
圖6 串口界面
控制界面如圖7所示。在本搬運機器人中,設計并實現(xiàn)了對搬運機器人的控制界面,為了更直觀地反映出搬運機器人的運動路徑,設計并實現(xiàn)了圖形化的控制區(qū),并可以通過點擊鼠標實現(xiàn)對搬運機器人位置的控制,攝像頭捕捉到畫面經(jīng)過圖像處理后獲取到物塊位置和顏色信息也能在該區(qū)域直觀地顯示出來,并且預留了相應的按鍵調(diào)用路徑規(guī)劃算法程序,并將規(guī)劃出的路徑顯示在控制區(qū)畫面上。
圖7 控制界面
圖像處理界面如圖8所示。圖像處理是本設計中重要的一部分,設計并實現(xiàn)了圖像處理相關界面。
圖8 圖像處理界面
在機器人系統(tǒng)中,機器視覺的一般流程為:首先對工作區(qū)域進行完整與可靠的圖像采集,然后對圖像進行相應的處理,最后得到任務所需的參數(shù)。其中,圖像處理大致分為圖像預處理和特征提取兩個步驟。圖像預處理通過圖像去噪、圖像增強、圖像平滑、圖像二值化等方法,達到消除圖像中的噪聲、增強圖像的對比度、提高圖像的質(zhì)量等目的,以便更好地進行后續(xù)的圖像處理和分析。特征提取的目的是將圖像中的信息轉化為可量化的特征量,以便進行后續(xù)的分類、識別等任務。
針對本搬運機器人,為引導搬運機器人執(zhí)行機構完成路徑規(guī)劃和抓取等一系列動作,需要獲取所需抓取物塊的顏色和位置信息。使用普通RGB彩色攝像頭實現(xiàn)采集圖像,選用攝像頭型號為羅技C270。設計圖像處理流程:圖像矯正→圖像濾波→轉換HSV圖像→腐蝕與膨脹→閾值分割→獲取信息,流程圖如圖9所示。使用OpenCV編程實現(xiàn),為更方便地與上位機軟件協(xié)調(diào)工作,選用python作為編程語言。
圖9 圖像處理流程圖
采集一張圖像,如圖10(a)所示。由于相機與工作平面并不能保證絕對垂直,并且捕捉到原始圖像中的像素位置并不能直接映射成實際坐標位置,為了削弱由于相機位置不確定引起的誤差,因此需要進行矯正。使用OpenCV中warpPerspective()方法來實現(xiàn)透視矯正,如圖10(b)所示。圖像濾波可以有效降低圖片噪聲,常用的濾波器有均值濾波器、中值濾波器、高斯濾波器等。經(jīng)過實際測試,采用高斯濾波器進行濾波處理。使用OpenCV中GaussianBlur()方法實現(xiàn)高斯濾波處理,如圖10(c)所示。本圖像處理通過物塊顏色的特征獲取所需的信息,然而RGB色彩空間不能很好地反映出物體具體的顏色信息,而HSV色彩空間可以表達色彩的明暗,色調(diào),以及鮮艷程度,可以很好地反映顏色信息。OpenCV中提供cvtColor()方法,能將圖像轉換到HSV色彩空間,如圖10(d)所示。腐蝕和膨脹是圖像形態(tài)學中兩個核心操作,可以使用腐蝕和膨脹清除或強化圖像中的細節(jié)。由于后續(xù)操作中篩選顏色信息得到的圖像可能由于存在毛刺而導致誤差,因此需要對圖像進行腐蝕操作處理。使用OpenCV中提供erode()方法實現(xiàn)腐蝕處理,如圖10(e)所示。通過OpenCV中提供的inRange()方法,設定顏色的上下限,即可根據(jù)顏色信息篩選出物塊在圖像中的位置,并將圖像轉化為二值圖,如圖10(f)所示。至此,已經(jīng)得到表示某一顏色的二值圖,需要檢測其位置,可通過檢測二值圖連通區(qū)域的輪廓實現(xiàn)。OpenCV中提供的findContours()方法可以通過計算圖像梯度來判斷圖像的邊緣,然后將邊緣的點封裝成數(shù)組返回,通過調(diào)用該方法,就可實現(xiàn)物塊的位置信息的獲取,如圖10(g)所示。
圖10 圖像處理
針對搬運任務進行分析,其目的是將一定數(shù)量的物塊從取塊位置搬運到指定的放置位置,取塊位置的數(shù)量和放塊位置的數(shù)量相等。而對于任意一個取塊位置上的物塊,都可能被放入任意一個放塊位置。同理,任意一個放塊位置的物塊,都可來源于任意一個取塊位置。并且任意一個取塊位置的物塊都不可能放入另一個取塊位置。同理,任意一個放塊位置的物塊都不可能來源于另一個放塊位置。用圖與網(wǎng)絡的數(shù)學模型分析,將所有取塊位置和放塊位置組成一個非空有限集合V(G),所有V(G)中每一個可能存在的取塊位置vi與放塊位置的vj組成的無序?qū)M成一個非空有限集合E(G),E(G)中的每一個元素ek記為ek=(vi,vj)或ek=vivj=vjvi(k=1,2,…,m),稱為該圖的一條從vi到vj的邊。任意一個取塊位置?vi與任意一個放塊位置的?vj都相鄰,而任意一個取塊位置?vi與其他取塊位置不相鄰,任意一個放塊位置?vj與其他放塊位置不相鄰。將所有取塊位置組成一個非空有限集合X, 所有放塊位置組成一個非空有限集合Y,則V(G)=X∪Y,X∩Y=?,|X||Y|≠0(|X|表示集合X中的元素個數(shù)),X中無相鄰頂點對,Y中亦然。并且?xi∈X,?yj∈Y,有xiyj∈E(G),圖G為完全二分圖。
在搬運任務中,每一個取塊位置到每一個放塊位置的距離不盡相同,為了提高工作效率,需要規(guī)劃出一條盡可能短的路徑。又由上文分析可知,搬運任務抽象出的圖G為完全二分圖,需找出一組一一對應的取塊位置和放塊位置,那么搬運任務中的路勁規(guī)劃即對應圖與網(wǎng)絡中的匹配問題。將搬運任務抽象為數(shù)學問題:G為二分圖,頂點集V(G)=X∪Y,X={x1,x2,…,xn},Y={y1,y2,…,ym},且?xi∈X,?yj∈Y,有xiyj∈E(G),圖G的每邊加上權w(xiyj)≥0,表示xi到y(tǒng)j的距離系數(shù),求加權圖G上的權最大的完美對集。至此,分析出搬運任務的圖與網(wǎng)絡數(shù)學模型。
為解決上述問題,本搬運機器人使用庫恩-曼克萊斯(Kuhn-Munkres)算法,即KM算法,這個算法是在埃德蒙茲(Edmonds)提出的匈牙利算法的基礎上發(fā)展而來。匈牙利算法提出了在二分圖G中求最大對集的方法,基本思想是不斷地尋找增廣軌,如果找到,就互換匹配邊和非匹配邊,讓匹配邊增加一條,如果找不到匹配邊了,就表示已經(jīng)是最大匹配了。其算法的核心就是根據(jù)一個初始匹配不停地找增廣軌,直到?jīng)]有增廣軌為止。而KM算法在此基礎上稍加修改,提出了求加權圖G上權最大的完美對集的方法。
使用python編程語言將KM算法編寫為相應程序,并移植到上位機中。實際測試,通過機器視覺捕捉到所抓取物塊的顏色及位置信息如圖11所示,選取放塊位置后,進行路徑規(guī)劃,實際效果如圖12所示。
圖11 獲取物塊顏色及位置信息
圖12 路徑規(guī)劃
本文設計并實現(xiàn)了一種基于機器視覺的智能搬運機器人。選擇直角坐標結構作為搬運機器人的機械結構,選用同步帶型直線模組作為搬運機器人的傳動機構,使用三維建模軟件Solid Works對搬運機器人的機械結構進行建模,并搭建了實物。選用了STM32F103C8T6最小系統(tǒng)板作為下位機控制系統(tǒng)的硬件平臺,并編寫了相應的下位機軟件。使用python庫中tkinter作為圖形化用戶界面開發(fā)工具,完成上位機的編寫開發(fā),將下位機、機器視覺、路徑規(guī)劃等通過上位機軟件有機結合起來。選用OpenCV進行圖像處理,實現(xiàn)了通過攝像頭捕捉畫面,經(jīng)過圖像處理后,獲取物塊顏色及位置信息。通過學習圖與網(wǎng)絡模型及方法,然后運用圖與網(wǎng)絡中的基本概念,針對本搬運機器人的路徑規(guī)劃任務進行了分析,并建立了相應的圖與網(wǎng)絡的數(shù)學模型。使用KM算法生成路徑,并使用python編程語言將KM算法編寫為相應程序,實現(xiàn)了搬運機器人的路徑規(guī)劃。
雖然本文成功設計并實現(xiàn)了一種基于機器視覺的智能搬運機器人,但在具體實施過程中,通過不斷學習和反思,發(fā)現(xiàn)仍有許多方面有待提升,以及有更好的方案選擇可作為后期優(yōu)化。下位機部分,后續(xù)可設計專用化的電子電路硬件結構,選用算力更強的微處理器作為軟件功能的有力支撐。上位機部分,后續(xù)可加入更多功能,如通過上位機進行參數(shù)修改等。界面可做進一步優(yōu)化升級,使界面更加美觀。機器視覺部分,目前僅實現(xiàn)靜態(tài)檢測,后續(xù)可加入動態(tài)檢測的功能,以適應更多實際環(huán)境,如工業(yè)流水線。對于路徑規(guī)劃部分,目前使用的KM算法僅是在一定條件下的最優(yōu)路徑,后續(xù)可研究學習更加優(yōu)秀的前沿路徑規(guī)劃算法,規(guī)劃出更短的路徑,提高效率。