劉冀龍,尹 崗,趙建偉
(1.內(nèi)蒙古工業(yè)大學(xué)內(nèi)蒙古呼和浩特010051;2.中國(guó)礦業(yè)大學(xué)(北京)北京100089)
在采礦工業(yè)中,貨物搬運(yùn)與抓取是非常重要的工作,然而由于采礦行業(yè)的地形限制,大部分工作環(huán)境都非常惡劣,很多工作場(chǎng)合不適合人工操作[1]。隨著科學(xué)技術(shù)的發(fā)展,機(jī)器人技術(shù)與機(jī)器視覺(jué)技術(shù)日趨成熟,礦物搬運(yùn)機(jī)器人在特殊領(lǐng)域中有著廣泛應(yīng)用[2]。本文利用樹(shù)莓派3作為視覺(jué)處理設(shè)備,Arduino MEGA2560單片機(jī)作為下位控制機(jī)械臂,搭建出一套能夠進(jìn)行運(yùn)動(dòng)目標(biāo)顏色識(shí)別的機(jī)械臂控制系統(tǒng),可以跟蹤指定顏色的目標(biāo)進(jìn)行抓取。
礦物搬運(yùn)機(jī)器人分為底盤(pán)運(yùn)動(dòng)部分與機(jī)械臂抓取部分[3],其中本裝置是應(yīng)用于機(jī)械臂抓取部分而設(shè)計(jì)的。視覺(jué)處理部分由USB攝像頭與樹(shù)莓派3組成,運(yùn)動(dòng)控制部分由MEGA2560單片機(jī)、閉環(huán)步進(jìn)電機(jī)驅(qū)動(dòng)器FESS60與大型機(jī)械臂組成。
在視覺(jué)處理端,USB攝像頭固定在機(jī)械爪上方,使得機(jī)械爪與與攝像頭處于同一水平面,采集到的圖像傳入樹(shù)莓派3中進(jìn)行處理;樹(shù)莓派3內(nèi)移植開(kāi)源視覺(jué)開(kāi)發(fā)庫(kù)OpenCV,利用OpenCV進(jìn)行顏色識(shí)別與跟蹤[4];運(yùn)動(dòng)控制端MEGA2560單片機(jī)通過(guò)串口接收處理后的數(shù)據(jù),再控制FESS60對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)控制。由于樹(shù)莓派3的處理速度足以實(shí)現(xiàn)實(shí)時(shí)檢測(cè),因此整個(gè)系統(tǒng)是一套實(shí)時(shí)運(yùn)動(dòng)控制系統(tǒng)。
由于礦山環(huán)境的惡略性以及攝像頭需要安裝在機(jī)械爪上隨時(shí)運(yùn)動(dòng)[5],選用的攝像頭必須具有堅(jiān)固的外殼和自動(dòng)對(duì)焦、曝光補(bǔ)償?shù)裙δ埽@樣才能保證讀取到高質(zhì)量的圖像。
經(jīng)過(guò)實(shí)際測(cè)試后,綜合價(jià)格因素,選用OV5640自動(dòng)對(duì)焦攝像頭,其攝像頭具有以下特點(diǎn):
1)采用OV5640 CMOS Sensor
2)AF自動(dòng)對(duì)焦馬達(dá)鏡頭。M12 800萬(wàn)像素高清鏡頭。
3)支持自動(dòng)曝光控制AEC,自動(dòng)白平衡AEB與自動(dòng)增益控制AGC
4)全金屬外殼,外殼下方有固定孔位,便于安裝
當(dāng)攝像頭采集回圖像之后需要對(duì)原始圖像進(jìn)行處理,針對(duì)ARM嵌入式存儲(chǔ)空間小,CPU主頻較低的特點(diǎn),選擇算法優(yōu)化較為成熟,能夠跨平臺(tái)交叉編譯的開(kāi)源視覺(jué)庫(kù)Open Source Computer Vision Library(OpenCV)作為核心[6]。整體算法流程圖如圖1所示。
圖1 機(jī)械臂顏色追蹤算法流程圖
為了實(shí)現(xiàn)攝像頭的可替代性與通用性,在OV5640攝像頭可以外接USB2.0接口,采用Linux內(nèi)核中集成的 Video for Linux2(V4L2)接口傳輸圖像[7]。利用V4L2接口讀取到原始圖像之后需要對(duì)原始圖像進(jìn)行預(yù)處理,預(yù)處理之后就可以選擇合適的顏色閾值分割法對(duì)多顏色目標(biāo)進(jìn)行檢測(cè),分割出不同顏色之后選擇要抓取的目標(biāo)顏色,計(jì)算整個(gè)目標(biāo)的質(zhì)心與面積,再將目標(biāo)的位置通過(guò)串口發(fā)送給Arduino MEGA2560單片機(jī),MEGA2560驅(qū)動(dòng)機(jī)械臂進(jìn)行抓取。
在圖像處理中,最常用的顏色空間是RGB模型[8],常用于顏色顯示和圖像處理,但對(duì)于多顏色目標(biāo),RGB模型不容易進(jìn)行顏色分割,因此,需要用能夠直接進(jìn)行顏色信息分割的顏色模型。
HSV顏色模型是把H(色相),S(飽和度),V(亮度)當(dāng)做色值來(lái)定位顏色的空間[9]。其中色相的取值范圍是0~360度,用來(lái)表示顏色的類別。紅色是0度,綠色為120度,藍(lán)色則是240度。飽和度的取值范圍是0%~100%。用來(lái)表示顏色的鮮艷程度,灰色的飽和度是0%,純粹的顏色比如大紅(255,0,0)青色(0,255,255)等等的飽和度是100%。亮度的取值范圍是0%~100%,用來(lái)表示顏色的明暗程度,亮度為0%時(shí)為黑色,亮度為100%時(shí)為白色,介于0%~100%之間時(shí),則用來(lái)表示各個(gè)顏色的明暗程度[10]。
HSV在用于指定顏色分割時(shí),有比較大的作用。相對(duì)于RGB空間,HSV空間能夠非常直觀的表達(dá)色彩的明暗,色調(diào),以及鮮艷程度,方便進(jìn)行顏色之間的對(duì)比[11]。因此選擇HSV顏色分割法進(jìn)行顏色分割。使用OpenCV中內(nèi)集成的RGB轉(zhuǎn)HSV函數(shù)cvCvtColor(image,hsv,CV_BGR2HSV)就能實(shí)現(xiàn)顏色空間的轉(zhuǎn)換。不同的是OpenCV中H∈[0,180][12]。經(jīng)過(guò)實(shí)驗(yàn),識(shí)別藍(lán)色的取值是H在100到140,S和V都在90到255之間。圖2是識(shí)別藍(lán)色球的結(jié)果。
圖2 藍(lán)色球識(shí)別效果圖
經(jīng)過(guò)實(shí)際測(cè)試,S與V保持在90到255之間可以滿足所有的顏色選擇需求,只需要更改H值就能選擇不同的顏色進(jìn)行識(shí)別,表1是在日光下進(jìn)行實(shí)際測(cè)試后總結(jié)的一些常用顏色的H值范圍。
表1 常用顏色H值范圍
樹(shù)莓派3識(shí)別到目標(biāo)之后,需要將位置信息發(fā)送給Arduino MEGA2560單片機(jī),單片機(jī)作為機(jī)械臂控制核心控制機(jī)械臂動(dòng)作。為了簡(jiǎn)化發(fā)送的信息,采用象限規(guī)劃的方式進(jìn)行編碼,具體規(guī)劃方法如圖3所示。
圖3 象限規(guī)劃圖
如圖3所示,設(shè)計(jì)成四象限形式,在不同象限內(nèi)編碼不同的字符,當(dāng)目標(biāo)質(zhì)心處于四象限當(dāng)中的某一象限時(shí),樹(shù)莓派3通過(guò)串口給MEGA2560發(fā)送串口數(shù)據(jù),另外當(dāng)質(zhì)心坐標(biāo)與象限原點(diǎn)偏差不超過(guò)5個(gè)像素時(shí)時(shí),發(fā)送數(shù)據(jù)1,超過(guò)5個(gè)像素發(fā)送0,因此串口一共發(fā)送3位字符串?dāng)?shù)據(jù)給MEGA2560。
運(yùn)動(dòng)控制端主要包括MEGA2560單片機(jī)、閉環(huán)步進(jìn)電機(jī)驅(qū)動(dòng)器FESS60與大型機(jī)械臂,其中MEGA2560接收到串口發(fā)送的數(shù)據(jù)之后進(jìn)行循環(huán)判斷[13],驅(qū)動(dòng)FESS60控制大型機(jī)械臂進(jìn)行定位抓取等動(dòng)作。
本裝置中使用的是Arduino MEGA2560是一塊使用USB連接PC的單片機(jī),具有多達(dá)54路數(shù)字輸入輸出,特別適合需要大量IO接口的設(shè)計(jì)。處理器核心是ATmega2560,16路PWM輸出,16路模擬輸入,4路UART接口,一個(gè)16 MHz晶振,一個(gè)USB,一個(gè)電源插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕[14]。
FESS60閉環(huán)步進(jìn)電機(jī)驅(qū)動(dòng)器用來(lái)控制機(jī)械臂進(jìn)行動(dòng)作,F(xiàn)ESS60屬于混合步進(jìn)電機(jī)[15],采用脈沖控制,具有反饋系統(tǒng),同時(shí)兼具步進(jìn)電機(jī)與伺服電機(jī)的優(yōu)點(diǎn),適合低轉(zhuǎn)速運(yùn)行。
本裝置采用MEGA2560來(lái)產(chǎn)生脈沖,利用8路數(shù)字輸出控制4個(gè)步進(jìn)電機(jī),每?jī)陕窋?shù)字輸出控制一個(gè)點(diǎn)機(jī),其中DIR接口用來(lái)控制步進(jìn)電機(jī)正反轉(zhuǎn)方向,PUL接口用來(lái)輸入脈沖波形,所需的控制信號(hào)都用MEGA2560產(chǎn)生,其中一組步進(jìn)電機(jī)驅(qū)動(dòng)程序如下:
如以上程序所示,一個(gè)引腳控制電機(jī)正反轉(zhuǎn)方向,一個(gè)引腳產(chǎn)生一段高低電平脈沖來(lái)驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng)。
經(jīng)過(guò)本方案設(shè)計(jì)的機(jī)械臂定位裝置實(shí)物圖如圖4所示,大型機(jī)械臂可以跟蹤不同顏色圓球進(jìn)行動(dòng)作并順利抓取,對(duì)于運(yùn)動(dòng)的物體,機(jī)械臂可以跟隨物體進(jìn)行運(yùn)動(dòng),對(duì)于靜止的物體,可以定位到物體中心位置,當(dāng)攝像頭中心與目標(biāo)質(zhì)心相差5個(gè)像素以內(nèi)時(shí),機(jī)械爪向前運(yùn)動(dòng),當(dāng)目標(biāo)面積在攝像頭視野內(nèi)超過(guò)10 000時(shí)機(jī)械爪停止并合爪,分別測(cè)試紅色、綠色、藍(lán)色球都能完成抓取動(dòng)作。
圖4 機(jī)械臂抓取實(shí)驗(yàn)圖
本文設(shè)計(jì)的采用圖像處理技術(shù)的機(jī)械臂定位裝置以樹(shù)莓派3作為視覺(jué)檢測(cè)核心,控制器采用價(jià)格低廉的Arduino MEGA2560單片機(jī)與FESS60閉環(huán)步進(jìn)電機(jī)驅(qū)動(dòng)器作為控制核心,應(yīng)用簡(jiǎn)便快捷,經(jīng)過(guò)測(cè)試表明,該裝置能夠快速準(zhǔn)確地找到目標(biāo)并對(duì)確定的顏色進(jìn)行跟蹤,可以應(yīng)用到礦山地區(qū),安裝在礦物搬運(yùn)機(jī)器人上對(duì)某種礦物進(jìn)行抓取搬運(yùn),降低人工搬運(yùn)的危險(xiǎn),具有較高的實(shí)用價(jià)值。
[1]杜永志.采礦技術(shù)的特點(diǎn)及應(yīng)用分析[J].內(nèi)蒙古煤炭經(jīng)濟(jì),2016(10):18-19.
[2]苗登雨.重載搬運(yùn)機(jī)器人結(jié)構(gòu)設(shè)計(jì)與動(dòng)態(tài)性能分析優(yōu)化[D].合肥:合肥工業(yè)大學(xué),2014.
[3]趙彬,高宏力,張艷榮.搬運(yùn)機(jī)器人控制系統(tǒng)設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2014(12):183-186.
[4]沈鐳,高麗.中國(guó)西部能源及礦業(yè)開(kāi)發(fā)與環(huán)境保護(hù)協(xié)調(diào)發(fā)展研究[J].中國(guó)人口.資源與環(huán)境,2013(10):17-23.
[5]A Dziri.Real-time multiple objects tracking on Raspberry-Pi-based smart embedded camera[J].JournalofElectronicImaging,2016,25(4):41-45.
[6]陰亞芳,袁浩,廖延娜.基于機(jī)器視覺(jué)的光滑球面缺陷檢測(cè)系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2016(14):113-115.
[7]幕鑫.嵌入式人臉識(shí)別系統(tǒng)的研究與應(yīng)用[D].無(wú)錫:江南大學(xué),2013.
[8]S Lin,Y Chen,YK Lai,等.Fast capture of textured full-body avatar with RGB-D cameras[J].Visual Computer,2016:1-11.
[9]李慧霞.室內(nèi)智能移動(dòng)機(jī)器人規(guī)則物體識(shí)別與抓取[D].北京:北京交通大學(xué),2016.
[10]Jisuanji,F(xiàn)uzhu,Sheji,等.Relationship between Saturation and Brightness Value in HSV Color Space[J].Journal of Computer-Aided Design&Computer Graphics,2014,26(8):1272-1278.
[11]譚曉波,殷萇茗,周書(shū)仁.融合HSV空間與形態(tài)學(xué)的救生衣圖像分割[J].計(jì)算機(jī)應(yīng)用與軟件,2016(1):198-202.
[12]OpenCV 官 方手 冊(cè)[EB/OL].[2016-05-11].http://opencv.org/.
[13]張雁琳.基于Arduino的ZigBee無(wú)線傳感節(jié)點(diǎn)的硬件設(shè)計(jì)[J].電子設(shè)計(jì)工程,2015(24):162-165.
[14]Mega2560 官方手冊(cè)[EB/OL].https://www.arduino.cc/en/Main/ArduinoBoardMega2560.
[15]李國(guó)杰.混合式步進(jìn)電機(jī)靜音細(xì)分驅(qū)動(dòng)器及其應(yīng)用[D].杭州:杭州電子科技大學(xué),2014.