中國礦業大學計算機科學與技術學院 唐陽雨 秦雷雷 閔 玄
?
基于ARM的智能接水機器人設計方案與仿真
中國礦業大學計算機科學與技術學院 唐陽雨 秦雷雷 閔 玄
【摘要】為了實現自動完成循跡和接水的智能家居機器人,本文提出了一種基于嵌入式系統和51arduino控制的智能接水機器人設計方案。小車以s3c2440為核心,以51duino控制機械臂及電機。主板上拓展的攝像頭模塊用以圖像采集,用s3c2440進行圖像處理,實現小車的自動尋跡,在此基礎上,為使小車行駛過程中避開障礙物,另外拓展了紅外避障功能。用戶直接在ARM上設置命令,小車便可以自主完成找到目標飲水機,設計到達路徑,用機械臂點擊飲水機開關,最后完成搬運水杯回原地的一系列動作。
【關鍵詞】視覺識別;OpenCV;自動避障;機械臂;電機控制
隨著科技的高速發展,智能機器人早已走出了實驗室,進入各種領域中。智能車以其機動性和靈活性,尤其受到追捧。大到軍事中的探測危險和排除險情,小到生產制造中的無人搬運,智能車無疑是這些領域中的佼佼者。近年來社會老齡化的問題日益加劇,尤其在中國,照顧老人成為當代許多獨生子女的一大難題,在這樣背景下極大促進了智能家居系統的發展。有人預言智能家居機器人在未來5年將像手機一樣普及。本文設計的是一種基于ARM的智能接水機器人,此前也有研究者進行過類似的智能機器人設計。侯操等人設計的基于ARM的智能車無線視頻監控系統,是一款以s5pv210 處理器為核心的智能車無線視頻監控系統,內置控制服務器和網絡視頻服務器,用戶通過上位機客戶端與服務器建立連接實現對系統的控制,也可以通過wifi 使用智能終端利用游覽器登錄web服務器實現控制操作[1]。但對于大多數的老年人而言,通過上位機客戶端或網頁來控制機器車不是件容易的事。本文設計的智能接水機器人摒除了用上位機進行控制,是一款依靠視覺識別的智能機器人,無人控制,能自主尋找目標并執行任務。
1.1 智能車總體框架
以s3c2440為整個嵌入式系統的核心,嵌入linux系統。移動載體用紅外傳感器進行探測,實現避障功能,外接攝像頭模塊用于圖像采集,將openCV庫函數導入ARM進行圖像處理實現視覺識別。ARM通過串口通信向51drino發送指令,51drino控制機械臂完成接水動作,控制電機使小車正確移動。
1.2 智能車主體
車身本身作為一種運載工具,要求能平穩的載重。模擬車采用履帶底盤,其重量大,使車身更穩固。履帶與地面接觸面積大,缺點是速度慢。但本文設對速度沒有太高的要求。模擬車尺寸為285*225*115(長*寬*高),車重3.2kg,有5對負重輪,有較好的平穩載重能力。車前裝有四自由度的機械手,具有較好的靈活性。經實驗,機械臂完美載重100克。車身分為上下兩層,上層固定ARM主板,下層固定51duino開發板。圖1a、圖1b、圖1c分別是模擬車俯視圖、后視圖和實物圖:

圖1a 模擬車俯視圖

圖1b 模擬車后視圖圖1 智能車總體設計圖

圖1c 模擬車實物圖

圖2a 杯子設計圖

圖2b 飲水機設計圖
1.3 飲水機及水杯設計
飲水機和杯子都是特殊設計的,如圖2a和圖2b所示。飲水機機身布滿紅藍相間的條紋,飲水機的開關采用一個圓柱形純藍色按鈕,杯子有一個特制的長方體把手,把手兩側都有凹槽(圖中只畫出一側),左側面為純藍色。智能車通過顏色和形狀識別目標,當智能車找到飲水機后,用機械臂按下開關持續4~8秒(根據用戶對水量需求的設定),帶杯子接完定量的水后,機械臂張開機械抓,伸向杯子把手,校準使機械臂對準凹槽,閉合機械抓卡緊凹槽,端走杯子。此方法能讓機械臂更平穩得端著杯子,杯子不易松脫。
2.1 總體流程

圖3 視覺識別總體流程圖
利用ARM9(即S3C2440芯片)完成視覺識別的功能,然后由ARM9向51duino發送指令,控制智能車的前進后退以及機械臂的抓取動作。ARM9內已經嵌入Linux系統,攝像頭直接通過USB口連接ARM9。在Linux中安裝motion軟件(ubuntu14.04下交叉編譯的開源小項目,能夠在嵌入式Linux上運行),移植OpenCV圖像處理庫。由motion完成圖像采集功能,由OpenCV完成圖像識別的功能。找到飲水機后,精確判斷出按鈕的位置和杯子的位置,隨后由ARM將控制指令發送給51duino,控制機械臂按下按鈕或者拿起杯子。當智能車進行杯子抓取時,圖像處理需要判斷出機械爪是否對準凹槽內,如果已經對準,機械爪扣緊,卡入凹槽,若沒有,進行校準。
2.2 目標識別
智能小車上安裝了天敏720P高清攝像頭,二自由度舵機云臺,可以進行多視角圖像采集。
本文設計采用移植OpenCV庫進行圖像處理。依據文獻[2],OpenCV具有如下優點:
①跨平臺;②獨立性好;③源代碼公開;④具備強大的圖像和矩陣運算能力;⑤運行速度快。總之,有了OpenCV,科研開發人員只需添加自己的編寫程序,直接調用OpenCV中的函數即可實現,這樣不僅降低了開發程序的難度,而且縮短了相關程序的開發周期。
實現智能小車自主接水的第一步是識別目標飲水機的所在。在機器人視覺中,顏色是物體識別和認知過程中必不可少的信息[3]。本文提出的設計是一種基于顏色特征的目標識別。首先,要先選定使用的顏色空間。常用的顏色空間如RGB,YUV,HSV等。
在OpenCV中,RGB圖像的每個像素使用三個字節表示,RGB的通道順序為BGR。如圖4[4]所示。

圖4 彩色RGB圖像的存儲示意圖
基于RGB色彩模式的識別,可以將飲水機設計成三原色之一。本文將其設計成藍色,因為家居環境中藍色的物品相對較少,紅色的物品如掛歷、春聯、獎狀等會影響目標識別。

圖5 改變顏色深度后R、G、B及色調、飽和度、亮度的變化值
當物體為藍色時,它的B通道的值就會大于R通道和G通道,而R通道和G通道的值差距不大,這點可以直接從windows畫圖工具的調色板中得出。如圖5所示。
由此可以選擇一種藍色深度,建立模型通過R、G、B三者間關系判斷是否目標藍色飲水機。但這只是理想中的情況,現實中,采集的圖像的像素值會因為光照強度、拍攝角度等發生改變,并且三個通道的值不是線性關系,因此不好判斷。但從圖6可以看出,藍色的深淺改變后,在色調、飽和度、亮度三者中只有亮度在改變,而色調和飽和度是不變的。因此考慮用YUV顏色空間來進行處理。YUV顏色空間中,亮度Y和色差UV相互獨立且存儲容量小[5]。YUV 和RGB之間是線性轉換的,轉換公式如下:

為了劃分目標和背景,要合理選擇目標顏色的閾值,包括上閾值和下閾值。首先用攝像頭采集目標飲水機圖像。

圖6a 飲水機的簡易模型

圖6b 切割出的目標塊
截取圖中目標,分別作Y,U,V三個分量的直方圖:

圖7a Y分量直方圖

圖7b U分量直方圖

圖7c V分量直方圖

圖8目標識別流程圖
V分量上沒有明顯變化,Y分量因光照等因素變化較大,所以最后選擇U分量進行判斷。圖中可以看到U分量的范圍在[6,35]。
若只用一種顏色判定還是易受其他非目標因素的干擾。為了進一步提高判斷的準確性,本文將飲水機設計成雙色紅藍條紋,紅藍條紋均勻,條紋的寬度盡量小,這樣可以使不同角度采集的圖片紅藍比例接近均勻。用同樣的方法找到合適的判定紅色的上下閾值。
記藍色閾值為V1,滿足閾值內的像素點個數為N1,紅色閾值為V2,滿足的像素點個數N2。采集圖像后遍歷像素點,滿足V1時,N1++。滿足V2的,N2++。最后根據N1/N2的值判斷目標是否出現在圖中。具體流程如圖9所示。N1/N2的范圍可以通過多角度采集圖像再綜合試驗得出,本文在這不做更多描述。
機器人通過上述方法判斷目標所在,當行駛過程中目標脫離檢索范圍時要重新檢索。機器人找到目標飲水機后,即與飲水機的距離在設定范圍內后,要進行按鈕及水杯凹槽的檢索。將按鈕設計成圓形,水杯把手設計成矩形,由于這時機器人離目標飲水機較近,背景環境比較固定,受環境中其他因素的干擾較小,可以直接通過調用opencv函數進行邊緣提取等方法來找到目標。
2.3 機器人避障
小車在行駛過程中難免受到家具等障礙物的妨礙,為使小車循跡過程完全智能,無需人為修正,除了擁有大腦之外,還必須讓小車擁有一雙“眼睛”,能夠自動避開障礙物。避障分為探測和處理兩部分,首先探測到障礙物,然后由主控程序處理[6]。探測部分使用傳感器完成。自然界中,動物通過感覺器官向大腦傳達感覺信號,機器人所用的傳感器就相當于動物感覺器官的翻版。能充當機器人眼睛的傳感器有很多,像超聲波傳感器、紅外傳感器、視感傳感器,觸碰傳感器等等。本文設計采用紅外傳感器。
2.4 紅外傳感器
紅外檢測方法具有以往氣敏原理、電導原理等常規方法的優點,比如量程寬、功耗低、靈敏度高、壽命長等[7]。紅外避障傳感器是一種主動式傳感器,,即主動對環境進行探測,得到信號后代碼再對其做出決策。它有一對紅外信號收發二極管,發射管發射紅外信號,紅外信號遇到障礙物后會被反射回來,然后紅外接收管會開啟接收反射信號,拉低輸出電平 ,根據輸出電平的高低,主控電路可以判斷障礙物的距離。當小車與障礙物的距離小于某個值時,小車對其作出反應,選擇左轉或右轉,然后繼續探測。原理如圖9所示。

圖9 紅外避障原理圖

圖10 機械臂俯視圖
如圖10所示,該機械臂是四自由度機械臂,共四個舵機(分別是上圖的1、2、3、4),能夠實現機械臂的抬舉,轉動以及抓取功能。51duino板(如上圖所示),是在51板的基礎上改造而成,能夠提供8個PWN通道,完全滿足機械臂的控制需求。機械臂的1和2號舵機能夠完成機械臂的抬舉伸縮功能,3號舵機完成機械爪的旋轉功能,4號舵機完成機械爪的閉合功能。
小車用兩個直流電機分別驅動左右兩邊的5個負重輪。直流電機的使用簡單,只要給其兩個電極通上電,所通電流的方向不同電機的轉向便不同,由此可以讓小車實現前進、后退、轉向。如下代碼定義所示,A,B指小車的兩個直流電機,POLE1和POLE2分別指電機的兩個電極。當控制小車前進或后退時,A,B往相同方向轉動,故兩個電機通相同方向的電流,前進時和后退時的電流方向正好相反。當控制消小車轉向時,小車的兩個電機通相反方向的電流,左轉和右轉時給兩個所通電流的方向相反。
#define FORWARD A_POLE1=1; A_POLE2=0; B_POLE1=1;B_POLE2=0; //車體前進
#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; //車體左轉
#define LEFT A_POLE1=1;A_POLE2=0;B_POLE1=0;
B_POLE2=1; //車體右轉
#define STOP A_POLE1=0;A_POLE2=0;B_POLE1=0;
B_POLE2=0; //車體停止
本文設計的智能接水機器人,無需人為控制,可以完全智能得為用戶完成接水的工作,彌補了當代一些遙控家具機器人的不足,為老年人及一些行動不便的人帶來了極大的便利。但本系統的設計仍存在許多不足,有待進一步的改進。例如,家居環境的復雜性,系統光靠視覺識別和紅外避障可能在完成效率上不夠理想,甚至于長時間發現不了目標所在。
參考文獻
[1]侯操,孫小平.基于ARM的智能車無線視頻監控系統設計[J].電子設計工程,2015,23(23)﹕190-192.
[2]秦小文,溫志芳,喬維維.基于OpenCV的圖像處理[J].電子測試,2011(7)﹕39-41.
[3]楊莉,杜艷紅,隋金雪,郭玉剛.一種基于顏色特征的目標識算法[J].微計算機信息,2007,23(5-7)﹕195-196+220.
[4]于仕琪.Opencv入門教程.www.opencv.org.cn.席文平,張健.基于ARM的類人足球機器人視覺識別系統的設計[J].微型機與應用,2015,34(9)﹕50-53.
[5]席文平,張健.基于ARM的類人足球機器人視覺識別系統的設計[J].微型機與應用,2015,34(9)﹕50-53.
[6]譚秋林.MEMS 紅外瓦斯傳感檢測系統的研究[D].太原﹕中北大學,2006.
[7]《無線電》編輯部.智能機器人制作大全[M].北京﹕人民郵電出版社,2015,08.
[8]譚秋林.MEMS紅外瓦斯傳感檢測系統的研究[D].太原﹕中北大學,2006.
作者簡介:
唐陽雨(1994—),福建福州人,大學本科,現就讀于中國礦業大學計算機學院。