中國礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 唐陽雨 秦雷雷 閔 玄
?
基于ARM的智能接水機(jī)器人設(shè)計(jì)方案與仿真
中國礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 唐陽雨 秦雷雷 閔 玄
【摘要】為了實(shí)現(xiàn)自動(dòng)完成循跡和接水的智能家居機(jī)器人,本文提出了一種基于嵌入式系統(tǒng)和51arduino控制的智能接水機(jī)器人設(shè)計(jì)方案。小車以s3c2440為核心,以51duino控制機(jī)械臂及電機(jī)。主板上拓展的攝像頭模塊用以圖像采集,用s3c2440進(jìn)行圖像處理,實(shí)現(xiàn)小車的自動(dòng)尋跡,在此基礎(chǔ)上,為使小車行駛過程中避開障礙物,另外拓展了紅外避障功能。用戶直接在ARM上設(shè)置命令,小車便可以自主完成找到目標(biāo)飲水機(jī),設(shè)計(jì)到達(dá)路徑,用機(jī)械臂點(diǎn)擊飲水機(jī)開關(guān),最后完成搬運(yùn)水杯回原地的一系列動(dòng)作。
【關(guān)鍵詞】視覺識(shí)別;OpenCV;自動(dòng)避障;機(jī)械臂;電機(jī)控制
隨著科技的高速發(fā)展,智能機(jī)器人早已走出了實(shí)驗(yàn)室,進(jìn)入各種領(lǐng)域中。智能車以其機(jī)動(dòng)性和靈活性,尤其受到追捧。大到軍事中的探測危險(xiǎn)和排除險(xiǎn)情,小到生產(chǎn)制造中的無人搬運(yùn),智能車無疑是這些領(lǐng)域中的佼佼者。近年來社會(huì)老齡化的問題日益加劇,尤其在中國,照顧老人成為當(dāng)代許多獨(dú)生子女的一大難題,在這樣背景下極大促進(jìn)了智能家居系統(tǒng)的發(fā)展。有人預(yù)言智能家居機(jī)器人在未來5年將像手機(jī)一樣普及。本文設(shè)計(jì)的是一種基于ARM的智能接水機(jī)器人,此前也有研究者進(jìn)行過類似的智能機(jī)器人設(shè)計(jì)。侯操等人設(shè)計(jì)的基于ARM的智能車無線視頻監(jiān)控系統(tǒng),是一款以s5pv210 處理器為核心的智能車無線視頻監(jiān)控系統(tǒng),內(nèi)置控制服務(wù)器和網(wǎng)絡(luò)視頻服務(wù)器,用戶通過上位機(jī)客戶端與服務(wù)器建立連接實(shí)現(xiàn)對系統(tǒng)的控制,也可以通過wifi 使用智能終端利用游覽器登錄web服務(wù)器實(shí)現(xiàn)控制操作[1]。但對于大多數(shù)的老年人而言,通過上位機(jī)客戶端或網(wǎng)頁來控制機(jī)器車不是件容易的事。本文設(shè)計(jì)的智能接水機(jī)器人摒除了用上位機(jī)進(jìn)行控制,是一款依靠視覺識(shí)別的智能機(jī)器人,無人控制,能自主尋找目標(biāo)并執(zhí)行任務(wù)。
1.1 智能車總體框架
以s3c2440為整個(gè)嵌入式系統(tǒng)的核心,嵌入linux系統(tǒng)。移動(dòng)載體用紅外傳感器進(jìn)行探測,實(shí)現(xiàn)避障功能,外接攝像頭模塊用于圖像采集,將openCV庫函數(shù)導(dǎo)入ARM進(jìn)行圖像處理實(shí)現(xiàn)視覺識(shí)別。ARM通過串口通信向51drino發(fā)送指令,51drino控制機(jī)械臂完成接水動(dòng)作,控制電機(jī)使小車正確移動(dòng)。
1.2 智能車主體
車身本身作為一種運(yùn)載工具,要求能平穩(wěn)的載重。模擬車采用履帶底盤,其重量大,使車身更穩(wěn)固。履帶與地面接觸面積大,缺點(diǎn)是速度慢。但本文設(shè)對速度沒有太高的要求。模擬車尺寸為285*225*115(長*寬*高),車重3.2kg,有5對負(fù)重輪,有較好的平穩(wěn)載重能力。車前裝有四自由度的機(jī)械手,具有較好的靈活性。經(jīng)實(shí)驗(yàn),機(jī)械臂完美載重100克。車身分為上下兩層,上層固定ARM主板,下層固定51duino開發(fā)板。圖1a、圖1b、圖1c分別是模擬車俯視圖、后視圖和實(shí)物圖:
圖1a 模擬車俯視圖
圖1b 模擬車后視圖圖1 智能車總體設(shè)計(jì)圖
圖1c 模擬車實(shí)物圖
圖2a 杯子設(shè)計(jì)圖
圖2b 飲水機(jī)設(shè)計(jì)圖
1.3 飲水機(jī)及水杯設(shè)計(jì)
飲水機(jī)和杯子都是特殊設(shè)計(jì)的,如圖2a和圖2b所示。飲水機(jī)機(jī)身布滿紅藍(lán)相間的條紋,飲水機(jī)的開關(guān)采用一個(gè)圓柱形純藍(lán)色按鈕,杯子有一個(gè)特制的長方體把手,把手兩側(cè)都有凹槽(圖中只畫出一側(cè)),左側(cè)面為純藍(lán)色。智能車通過顏色和形狀識(shí)別目標(biāo),當(dāng)智能車找到飲水機(jī)后,用機(jī)械臂按下開關(guān)持續(xù)4~8秒(根據(jù)用戶對水量需求的設(shè)定),帶杯子接完定量的水后,機(jī)械臂張開機(jī)械抓,伸向杯子把手,校準(zhǔn)使機(jī)械臂對準(zhǔn)凹槽,閉合機(jī)械抓卡緊凹槽,端走杯子。此方法能讓機(jī)械臂更平穩(wěn)得端著杯子,杯子不易松脫。
2.1 總體流程
圖3 視覺識(shí)別總體流程圖
利用ARM9(即S3C2440芯片)完成視覺識(shí)別的功能,然后由ARM9向51duino發(fā)送指令,控制智能車的前進(jìn)后退以及機(jī)械臂的抓取動(dòng)作。ARM9內(nèi)已經(jīng)嵌入Linux系統(tǒng),攝像頭直接通過USB口連接ARM9。在Linux中安裝motion軟件(ubuntu14.04下交叉編譯的開源小項(xiàng)目,能夠在嵌入式Linux上運(yùn)行),移植OpenCV圖像處理庫。由motion完成圖像采集功能,由OpenCV完成圖像識(shí)別的功能。找到飲水機(jī)后,精確判斷出按鈕的位置和杯子的位置,隨后由ARM將控制指令發(fā)送給51duino,控制機(jī)械臂按下按鈕或者拿起杯子。當(dāng)智能車進(jìn)行杯子抓取時(shí),圖像處理需要判斷出機(jī)械爪是否對準(zhǔn)凹槽內(nèi),如果已經(jīng)對準(zhǔn),機(jī)械爪扣緊,卡入凹槽,若沒有,進(jìn)行校準(zhǔn)。
2.2 目標(biāo)識(shí)別
智能小車上安裝了天敏720P高清攝像頭,二自由度舵機(jī)云臺(tái),可以進(jìn)行多視角圖像采集。
本文設(shè)計(jì)采用移植OpenCV庫進(jìn)行圖像處理。依據(jù)文獻(xiàn)[2],OpenCV具有如下優(yōu)點(diǎn):
①跨平臺(tái);②獨(dú)立性好;③源代碼公開;④具備強(qiáng)大的圖像和矩陣運(yùn)算能力;⑤運(yùn)行速度快。總之,有了OpenCV,科研開發(fā)人員只需添加自己的編寫程序,直接調(diào)用OpenCV中的函數(shù)即可實(shí)現(xiàn),這樣不僅降低了開發(fā)程序的難度,而且縮短了相關(guān)程序的開發(fā)周期。
實(shí)現(xiàn)智能小車自主接水的第一步是識(shí)別目標(biāo)飲水機(jī)的所在。在機(jī)器人視覺中,顏色是物體識(shí)別和認(rèn)知過程中必不可少的信息[3]。本文提出的設(shè)計(jì)是一種基于顏色特征的目標(biāo)識(shí)別。首先,要先選定使用的顏色空間。常用的顏色空間如RGB,YUV,HSV等。
在OpenCV中,RGB圖像的每個(gè)像素使用三個(gè)字節(jié)表示,RGB的通道順序?yàn)锽GR。如圖4[4]所示。
圖4 彩色RGB圖像的存儲(chǔ)示意圖
基于RGB色彩模式的識(shí)別,可以將飲水機(jī)設(shè)計(jì)成三原色之一。本文將其設(shè)計(jì)成藍(lán)色,因?yàn)榧揖迎h(huán)境中藍(lán)色的物品相對較少,紅色的物品如掛歷、春聯(lián)、獎(jiǎng)狀等會(huì)影響目標(biāo)識(shí)別。
圖5 改變顏色深度后R、G、B及色調(diào)、飽和度、亮度的變化值
當(dāng)物體為藍(lán)色時(shí),它的B通道的值就會(huì)大于R通道和G通道,而R通道和G通道的值差距不大,這點(diǎn)可以直接從windows畫圖工具的調(diào)色板中得出。如圖5所示。
由此可以選擇一種藍(lán)色深度,建立模型通過R、G、B三者間關(guān)系判斷是否目標(biāo)藍(lán)色飲水機(jī)。但這只是理想中的情況,現(xiàn)實(shí)中,采集的圖像的像素值會(huì)因?yàn)楣庹諒?qiáng)度、拍攝角度等發(fā)生改變,并且三個(gè)通道的值不是線性關(guān)系,因此不好判斷。但從圖6可以看出,藍(lán)色的深淺改變后,在色調(diào)、飽和度、亮度三者中只有亮度在改變,而色調(diào)和飽和度是不變的。因此考慮用YUV顏色空間來進(jìn)行處理。YUV顏色空間中,亮度Y和色差UV相互獨(dú)立且存儲(chǔ)容量?。?]。YUV 和RGB之間是線性轉(zhuǎn)換的,轉(zhuǎn)換公式如下:
為了劃分目標(biāo)和背景,要合理選擇目標(biāo)顏色的閾值,包括上閾值和下閾值。首先用攝像頭采集目標(biāo)飲水機(jī)圖像。
圖6a 飲水機(jī)的簡易模型
圖6b 切割出的目標(biāo)塊
截取圖中目標(biāo),分別作Y,U,V三個(gè)分量的直方圖:
圖7a Y分量直方圖
圖7b U分量直方圖
圖7c V分量直方圖
圖8目標(biāo)識(shí)別流程圖
V分量上沒有明顯變化,Y分量因光照等因素變化較大,所以最后選擇U分量進(jìn)行判斷。圖中可以看到U分量的范圍在[6,35]。
若只用一種顏色判定還是易受其他非目標(biāo)因素的干擾。為了進(jìn)一步提高判斷的準(zhǔn)確性,本文將飲水機(jī)設(shè)計(jì)成雙色紅藍(lán)條紋,紅藍(lán)條紋均勻,條紋的寬度盡量小,這樣可以使不同角度采集的圖片紅藍(lán)比例接近均勻。用同樣的方法找到合適的判定紅色的上下閾值。
記藍(lán)色閾值為V1,滿足閾值內(nèi)的像素點(diǎn)個(gè)數(shù)為N1,紅色閾值為V2,滿足的像素點(diǎn)個(gè)數(shù)N2。采集圖像后遍歷像素點(diǎn),滿足V1時(shí),N1++。滿足V2的,N2++。最后根據(jù)N1/N2的值判斷目標(biāo)是否出現(xiàn)在圖中。具體流程如圖9所示。N1/N2的范圍可以通過多角度采集圖像再綜合試驗(yàn)得出,本文在這不做更多描述。
機(jī)器人通過上述方法判斷目標(biāo)所在,當(dāng)行駛過程中目標(biāo)脫離檢索范圍時(shí)要重新檢索。機(jī)器人找到目標(biāo)飲水機(jī)后,即與飲水機(jī)的距離在設(shè)定范圍內(nèi)后,要進(jìn)行按鈕及水杯凹槽的檢索。將按鈕設(shè)計(jì)成圓形,水杯把手設(shè)計(jì)成矩形,由于這時(shí)機(jī)器人離目標(biāo)飲水機(jī)較近,背景環(huán)境比較固定,受環(huán)境中其他因素的干擾較小,可以直接通過調(diào)用opencv函數(shù)進(jìn)行邊緣提取等方法來找到目標(biāo)。
2.3 機(jī)器人避障
小車在行駛過程中難免受到家具等障礙物的妨礙,為使小車循跡過程完全智能,無需人為修正,除了擁有大腦之外,還必須讓小車擁有一雙“眼睛”,能夠自動(dòng)避開障礙物。避障分為探測和處理兩部分,首先探測到障礙物,然后由主控程序處理[6]。探測部分使用傳感器完成。自然界中,動(dòng)物通過感覺器官向大腦傳達(dá)感覺信號(hào),機(jī)器人所用的傳感器就相當(dāng)于動(dòng)物感覺器官的翻版。能充當(dāng)機(jī)器人眼睛的傳感器有很多,像超聲波傳感器、紅外傳感器、視感傳感器,觸碰傳感器等等。本文設(shè)計(jì)采用紅外傳感器。
2.4 紅外傳感器
紅外檢測方法具有以往氣敏原理、電導(dǎo)原理等常規(guī)方法的優(yōu)點(diǎn),比如量程寬、功耗低、靈敏度高、壽命長等[7]。紅外避障傳感器是一種主動(dòng)式傳感器,,即主動(dòng)對環(huán)境進(jìn)行探測,得到信號(hào)后代碼再對其做出決策。它有一對紅外信號(hào)收發(fā)二極管,發(fā)射管發(fā)射紅外信號(hào),紅外信號(hào)遇到障礙物后會(huì)被反射回來,然后紅外接收管會(huì)開啟接收反射信號(hào),拉低輸出電平 ,根據(jù)輸出電平的高低,主控電路可以判斷障礙物的距離。當(dāng)小車與障礙物的距離小于某個(gè)值時(shí),小車對其作出反應(yīng),選擇左轉(zhuǎn)或右轉(zhuǎn),然后繼續(xù)探測。原理如圖9所示。
圖9 紅外避障原理圖
圖10 機(jī)械臂俯視圖
如圖10所示,該機(jī)械臂是四自由度機(jī)械臂,共四個(gè)舵機(jī)(分別是上圖的1、2、3、4),能夠?qū)崿F(xiàn)機(jī)械臂的抬舉,轉(zhuǎn)動(dòng)以及抓取功能。51duino板(如上圖所示),是在51板的基礎(chǔ)上改造而成,能夠提供8個(gè)PWN通道,完全滿足機(jī)械臂的控制需求。機(jī)械臂的1和2號(hào)舵機(jī)能夠完成機(jī)械臂的抬舉伸縮功能,3號(hào)舵機(jī)完成機(jī)械爪的旋轉(zhuǎn)功能,4號(hào)舵機(jī)完成機(jī)械爪的閉合功能。
小車用兩個(gè)直流電機(jī)分別驅(qū)動(dòng)左右兩邊的5個(gè)負(fù)重輪。直流電機(jī)的使用簡單,只要給其兩個(gè)電極通上電,所通電流的方向不同電機(jī)的轉(zhuǎn)向便不同,由此可以讓小車實(shí)現(xiàn)前進(jìn)、后退、轉(zhuǎn)向。如下代碼定義所示,A,B指小車的兩個(gè)直流電機(jī),POLE1和POLE2分別指電機(jī)的兩個(gè)電極。當(dāng)控制小車前進(jìn)或后退時(shí),A,B往相同方向轉(zhuǎn)動(dòng),故兩個(gè)電機(jī)通相同方向的電流,前進(jìn)時(shí)和后退時(shí)的電流方向正好相反。當(dāng)控制消小車轉(zhuǎn)向時(shí),小車的兩個(gè)電機(jī)通相反方向的電流,左轉(zhuǎn)和右轉(zhuǎn)時(shí)給兩個(gè)所通電流的方向相反。
#define FORWARD A_POLE1=1; A_POLE2=0; B_POLE1=1;B_POLE2=0; //車體前進(jìn)
#define BACk A_POLE1=0;A_CON2=1;B_POLE1=0;B_POLE2=1; //車體后退
#define RIGHT A_POLE1=0;A_POLE2=1;B_POLE1=1;
B_POLE2=0; //車體左轉(zhuǎn)
#define LEFT A_POLE1=1;A_POLE2=0;B_POLE1=0;
B_POLE2=1; //車體右轉(zhuǎn)
#define STOP A_POLE1=0;A_POLE2=0;B_POLE1=0;
B_POLE2=0; //車體停止
本文設(shè)計(jì)的智能接水機(jī)器人,無需人為控制,可以完全智能得為用戶完成接水的工作,彌補(bǔ)了當(dāng)代一些遙控家具機(jī)器人的不足,為老年人及一些行動(dòng)不便的人帶來了極大的便利。但本系統(tǒng)的設(shè)計(jì)仍存在許多不足,有待進(jìn)一步的改進(jìn)。例如,家居環(huán)境的復(fù)雜性,系統(tǒng)光靠視覺識(shí)別和紅外避障可能在完成效率上不夠理想,甚至于長時(shí)間發(fā)現(xiàn)不了目標(biāo)所在。
參考文獻(xiàn)
[1]侯操,孫小平.基于ARM的智能車無線視頻監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2015,23(23)﹕190-192.
[2]秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測試,2011(7)﹕39-41.
[3]楊莉,杜艷紅,隋金雪,郭玉剛.一種基于顏色特征的目標(biāo)識(shí)算法[J].微計(jì)算機(jī)信息,2007,23(5-7)﹕195-196+220.
[4]于仕琪.Opencv入門教程.www.opencv.org.cn.席文平,張健.基于ARM的類人足球機(jī)器人視覺識(shí)別系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2015,34(9)﹕50-53.
[5]席文平,張健.基于ARM的類人足球機(jī)器人視覺識(shí)別系統(tǒng)的設(shè)計(jì)[J].微型機(jī)與應(yīng)用,2015,34(9)﹕50-53.
[6]譚秋林.MEMS 紅外瓦斯傳感檢測系統(tǒng)的研究[D].太原﹕中北大學(xué),2006.
[7]《無線電》編輯部.智能機(jī)器人制作大全[M].北京﹕人民郵電出版社,2015,08.
[8]譚秋林.MEMS紅外瓦斯傳感檢測系統(tǒng)的研究[D].太原﹕中北大學(xué),2006.
作者簡介:
唐陽雨(1994—),福建福州人,大學(xué)本科,現(xiàn)就讀于中國礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院。