姜媛媛, 魏衡華
(中國(guó)科學(xué)技術(shù)大學(xué) 自動(dòng)化系,安徽 合肥 230027)
近年來(lái)由于技術(shù)發(fā)展和任務(wù)需要,仿人機(jī)器人的應(yīng)用越來(lái)越廣泛[1-2]。隨著無(wú)線技術(shù)的快速發(fā)展,無(wú)線網(wǎng)絡(luò)傳輸數(shù)據(jù)的速度和穩(wěn)定性越來(lái)越高,使機(jī)器人的遠(yuǎn)程控制成為可能。國(guó)內(nèi)外學(xué)者對(duì)仿人機(jī)器人做了大量研究。參考文獻(xiàn)[3]詳細(xì)介紹了國(guó)內(nèi)外仿人機(jī)器人的研究及理論現(xiàn)狀,提出了發(fā)展趨勢(shì);參考文獻(xiàn)[4]實(shí)現(xiàn)了基于網(wǎng)絡(luò)的機(jī)器人遠(yuǎn)程控制系統(tǒng),操作者通過網(wǎng)絡(luò)傳輸?shù)默F(xiàn)場(chǎng)實(shí)時(shí)畫面實(shí)現(xiàn)對(duì)遠(yuǎn)程機(jī)器人的控制;參考文獻(xiàn)[5]以環(huán)境感知為前提,提出了多機(jī)器人系統(tǒng)的合作即時(shí)定位與地圖創(chuàng)建的方法;參考文獻(xiàn)[6]介紹了多機(jī)器人在多個(gè)研究領(lǐng)域的進(jìn)展;參考文獻(xiàn)[7]以實(shí)時(shí)性和可靠性為前提,設(shè)計(jì)了一套遠(yuǎn)程控制系統(tǒng)和開發(fā)庫(kù);參考文獻(xiàn)[8]提出了一種基于Linux的新的遠(yuǎn)程機(jī)器人控制系統(tǒng)的軟件體系結(jié)構(gòu)并對(duì)遠(yuǎn)程機(jī)器人的原理以及狀態(tài)監(jiān)控技術(shù)進(jìn)行了詳細(xì)闡述。
當(dāng)機(jī)器人遇到復(fù)雜情況時(shí),由于機(jī)載設(shè)備容量和處理能力有限而顯得能力不足。將機(jī)器人感知的當(dāng)前環(huán)境實(shí)時(shí)傳輸給遠(yuǎn)程服務(wù)器,通過遠(yuǎn)程服務(wù)器對(duì)信息實(shí)時(shí)處理并做出響應(yīng)是克服該困難的有效方法。當(dāng)多個(gè)機(jī)器人同時(shí)完成任務(wù)時(shí),簡(jiǎn)單的后臺(tái)處理器無(wú)法滿足計(jì)算需求,云計(jì)算為解決該問題提供了可能。
云計(jì)算[9-10]是指通過互聯(lián)網(wǎng)技術(shù)、虛擬化技術(shù)將大量異構(gòu)的軟硬件資源結(jié)合起來(lái),以服務(wù)的形式提供給用戶使用。
本文采用的設(shè)備是Darwin-op高級(jí)版—達(dá)爾文機(jī)器人,該機(jī)器人是一款高智能仿人機(jī)器人,自帶Ubuntu9.10操作系統(tǒng),包含高清攝像頭、陀螺儀、麥克風(fēng)等專業(yè)傳感器,能夠穩(wěn)步行走和保持自身的平衡性,可以通過無(wú)線網(wǎng)訪問系統(tǒng)的資源,具有很好的視覺跟蹤和人機(jī)交互能力。
本文擬通過機(jī)載攝像頭將監(jiān)控信息實(shí)時(shí)傳輸給搭建在云計(jì)算平臺(tái)上的后臺(tái)集群,后臺(tái)集群通過對(duì)畫面的探測(cè),搜索出目標(biāo)信息,進(jìn)而搜索數(shù)據(jù)庫(kù)中保存的指令序列傳給機(jī)器人,機(jī)器人做出相應(yīng)的動(dòng)作。
本系統(tǒng)有以下5部分組成,系統(tǒng)框架結(jié)構(gòu)如圖1所示。
(1) 機(jī)載攝像頭,每隔一定時(shí)間間隔采集一次當(dāng)前所處的環(huán)境畫面并傳遞給預(yù)處理模塊。
(2) 預(yù)處理模塊,為減小傳輸帶寬,對(duì)畫面進(jìn)行一定比例的壓縮。
(3) 通信模塊,負(fù)責(zé)機(jī)器人與后臺(tái)之間的交互,包括信息上傳和指令接收。
(4) 控制模塊,根據(jù)后臺(tái)發(fā)出的指令做出相應(yīng)動(dòng)作。
(5) 后臺(tái)數(shù)據(jù)處理集群,負(fù)責(zé)圖像的解析,并根據(jù)解析結(jié)果查詢數(shù)據(jù)庫(kù),調(diào)取相應(yīng)的指令信息反饋給機(jī)器人。
圖1 多機(jī)器人遠(yuǎn)程實(shí)時(shí)控制系統(tǒng)框架
為了方便各個(gè)節(jié)點(diǎn)之間的協(xié)調(diào)工作,后臺(tái)處理集群采用master-worker架構(gòu)。master節(jié)點(diǎn)主要負(fù)責(zé):計(jì)算節(jié)點(diǎn)的管理和任務(wù)的接收與分配。
在計(jì)算節(jié)點(diǎn)管理方面,master節(jié)點(diǎn)維持一個(gè)計(jì)算節(jié)點(diǎn)列表,列表中的節(jié)點(diǎn)采用“心跳機(jī)制”,每隔一段時(shí)間向master節(jié)點(diǎn)報(bào)告其存活狀況,只有處于存活狀態(tài)的計(jì)算節(jié)點(diǎn)才參與任務(wù)的執(zhí)行。為增強(qiáng)適應(yīng)性,后臺(tái)集群不僅要滿足當(dāng)前所需,還要滿足將來(lái)不斷增加的負(fù)載需求,另外,本設(shè)計(jì)希望集群能夠在不停機(jī)的條件下擴(kuò)展計(jì)算資源。為此,將計(jì)算節(jié)點(diǎn)設(shè)計(jì)為注冊(cè)機(jī)制,當(dāng)新計(jì)算節(jié)點(diǎn)加入時(shí)首先向master節(jié)點(diǎn)申請(qǐng)加入,master節(jié)點(diǎn)接受后將該計(jì)算節(jié)點(diǎn)的信息(名稱、IP等)添加到計(jì)算節(jié)點(diǎn)列表中并反饋確認(rèn)信息。
算法1 (master節(jié)點(diǎn)運(yùn)行算法):
在任務(wù)接收與分配方面,master通過TCP/IP協(xié)議與機(jī)器人進(jìn)行通信。當(dāng)master節(jié)點(diǎn)收到某個(gè)機(jī)器人上傳的信息時(shí),master節(jié)點(diǎn)根據(jù)各個(gè)計(jì)算節(jié)點(diǎn)的負(fù)載情況將信息分配給負(fù)載最小的計(jì)算節(jié)點(diǎn)處理以達(dá)到負(fù)載均衡的目的,如算法1所示。各個(gè)節(jié)點(diǎn)的負(fù)載用CPU和內(nèi)存的利用率評(píng)定:
其中,ψ1和ψ2為權(quán)重,滿足ψ1+ψ2=1。
在集群master和計(jì)算節(jié)點(diǎn)之間通過φMQ通信中間件進(jìn)行通信[11],該中間件具有較高的通信速度和良好的穩(wěn)定性。為保證每個(gè)計(jì)算任務(wù)都能得到處理,采用REQREP通信模式。整個(gè)后臺(tái)處理集群的結(jié)構(gòu)如圖2所示。
圖2 后臺(tái)集群架構(gòu)
信息流進(jìn)入集群后以有向無(wú)環(huán)圖的形式在各個(gè)計(jì)算節(jié)點(diǎn)之間流動(dòng),每個(gè)計(jì)算節(jié)點(diǎn)視為一個(gè)處理單元。為了適應(yīng)大負(fù)載及快速響應(yīng)的需求,將整個(gè)系統(tǒng)設(shè)計(jì)為可橫向并行和縱向并行的形式。在橫向方面,將負(fù)責(zé)某個(gè)任務(wù)的處理單元設(shè)置為多份。當(dāng)信息接收模塊接收到機(jī)器人的監(jiān)控圖像時(shí),系統(tǒng)根據(jù)各個(gè)處理單元的負(fù)載情況將計(jì)算任務(wù)分配到負(fù)載較輕的處理單元。在縱向并行方面,采用分而治之的思想,每個(gè)計(jì)算任務(wù)分為多個(gè)階段處理。本文將處理過程設(shè)計(jì)為兩部分:一級(jí)處理單元和二級(jí)處理單元。如圖3所示。
圖3 信息流流向圖
將一級(jí)處理單元設(shè)置為檢測(cè)圖片中是否有人,二級(jí)處理單元設(shè)置為檢測(cè)圖片中是否有汽車。并且預(yù)設(shè)機(jī)器人執(zhí)行指令情況如下:⑴圖片中既無(wú)人又無(wú)汽車,機(jī)器人不動(dòng)作;⑵圖片中僅有人,機(jī)器人打招呼;⑶圖中有汽車,機(jī)器人向一側(cè)移動(dòng);⑷圖中既有人又有汽車,機(jī)器人先打招呼再向一側(cè)移動(dòng)。例如,當(dāng)機(jī)器人將實(shí)時(shí)圖片上傳到后臺(tái)時(shí),后臺(tái)系統(tǒng)根據(jù)各個(gè)處理單元的負(fù)載情況,將其分配到2號(hào)處理單元,2號(hào)處理單元調(diào)用人物探測(cè)功能,探測(cè)到有人存在,然后將結(jié)果和圖片傳遞到下游的二級(jí)處理單元中的6號(hào),探測(cè)到?jīng)]有汽車存在,最后將兩個(gè)結(jié)果匯總提交給指令發(fā)送模塊,指令發(fā)送模塊查詢數(shù)據(jù)庫(kù),向機(jī)器人發(fā)出打招呼指令。
此外,為了保證各個(gè)計(jì)算節(jié)點(diǎn)之間的負(fù)載均衡,一、二級(jí)處理單元之間為多對(duì)多的關(guān)系,如圖3所示。 在對(duì)機(jī)器人傳遞的圖片進(jìn)行處理時(shí),挖掘出其中比較重要的元素(人、汽車),并根據(jù)圖像中是否存在目標(biāo)做出判斷。
圖像處理選用opencv作為工具箱。opnecv中圖像識(shí)別主要包括兩部分:訓(xùn)練分類器和根據(jù)分類器對(duì)輸入的圖像進(jìn)行檢測(cè)。以人臉識(shí)別為例,目前分類器大多基于Haar特征訓(xùn)練得來(lái)(算法2)。具體操作如下:
(1)根據(jù)Haar特征使用大量樣本進(jìn)行訓(xùn)練(所有參與訓(xùn)練的樣本必須歸一化為同樣大小的圖片),得到一個(gè)分類器。樣本分為正樣本和反樣本,正樣本為含有待檢測(cè)目標(biāo)的樣本,反樣本為含有其他圖像的樣本。
(2)訓(xùn)練完成后根據(jù)訓(xùn)練產(chǎn)生的特征文件對(duì)感興趣的區(qū)域進(jìn)行檢測(cè)。在人臉識(shí)別中當(dāng)檢測(cè)區(qū)域有人臉時(shí)結(jié)果輸出1,表示含有目標(biāo)圖像;否則輸出0,表示不含有目標(biāo)圖像。
算法2(Haar訓(xùn)練分類器算法):
在算法2中首先創(chuàng)建一個(gè)Haar特征,然后重復(fù)輸入正反樣本,訓(xùn)練產(chǎn)生一個(gè)新的強(qiáng)分類器,此過程一直重復(fù)直到虛警率或產(chǎn)生分類器的數(shù)量達(dá)到規(guī)定的閾值為止。
系統(tǒng)后臺(tái)服務(wù)程序要對(duì)大量的物體進(jìn)行檢測(cè),每個(gè)物體對(duì)應(yīng)一個(gè)訓(xùn)練的分類器XML文件。前面提到為了增強(qiáng)縱向并行性將整個(gè)檢測(cè)過程采用分而治之的思想。將后臺(tái)程序設(shè)置為一級(jí)和二級(jí)處理單元,一級(jí)處理單元負(fù)責(zé)掃描前[N/2]數(shù)量的物體,二級(jí)處理單元負(fù)責(zé)掃描后[N/2]數(shù)量的物體。為了增強(qiáng)動(dòng)態(tài)性,對(duì)處理的物體也采用動(dòng)態(tài)注冊(cè)的方式,當(dāng)有新的物體需要識(shí)別時(shí),需要在物體列表中注冊(cè),同時(shí)將XML文件放到指定的位置,將針對(duì)該物體的指令保存到數(shù)據(jù)庫(kù)中,如圖4所示。
圖4 待識(shí)別物體注冊(cè)流程圖
機(jī)器人每隔一段時(shí)間通過機(jī)載攝像頭掃描當(dāng)前環(huán)境,將采集當(dāng)前環(huán)境的一幅圖片tar壓縮,然后通過TCP/IP協(xié)議傳輸?shù)胶笈_(tái)處理,等待該圖片對(duì)應(yīng)的指令。具體流程如圖5所示。
另外,在機(jī)器人中預(yù)先設(shè)定各種動(dòng)作的代號(hào)及相關(guān)的動(dòng)作代碼,當(dāng)一個(gè)指令序列到來(lái)時(shí),機(jī)器人根據(jù)序列內(nèi)容解析出動(dòng)作代號(hào),并根據(jù)代號(hào)執(zhí)行相應(yīng)的動(dòng)作。當(dāng)需要改變面對(duì)某種情況所執(zhí)行的動(dòng)作時(shí),只要修改后臺(tái)數(shù)據(jù)庫(kù)中代號(hào)序列就可以重新編排動(dòng)作,增強(qiáng)了靈活性。
圖5 機(jī)器人端流程圖
在本實(shí)驗(yàn)中測(cè)試整個(gè)系統(tǒng)的性能。首先測(cè)試?yán)胦pencv的圖像識(shí)別技術(shù);然后通過模擬負(fù)載,測(cè)試后臺(tái)的處理性能;最后在真實(shí)環(huán)境中測(cè)試可行性。
實(shí)驗(yàn)中使用Darwin-op機(jī)器人,后臺(tái)建立在由中國(guó)科學(xué)技術(shù)大學(xué)中科大-聯(lián)想云計(jì)算實(shí)驗(yàn)室開發(fā)的瀚海星云云計(jì)算服務(wù)平臺(tái)上。該平臺(tái)目前提供IaaS層的服務(wù),可以提供多種配置的Linux虛擬機(jī)。
在圖像識(shí)別測(cè)試中,以人臉識(shí)別和車輛識(shí)別為例進(jìn)行測(cè)試。
在人臉識(shí)別中,使用opencv[12]示例中自帶的haarcascade_frontalface_alt.xml人臉識(shí)別分類器進(jìn)行測(cè)試。如圖6所示,分別在無(wú)背景、單人真實(shí)環(huán)境以及多人真實(shí)環(huán)境下進(jìn)行測(cè)試。通過對(duì)不同場(chǎng)景的測(cè)試,識(shí)別系統(tǒng)均可較好地識(shí)別出圖像中出現(xiàn)的人臉。
在對(duì)車輛進(jìn)行識(shí)別時(shí),建立了一個(gè)規(guī)模較小、包含2 000個(gè)樣本的數(shù)據(jù)集來(lái)訓(xùn)練產(chǎn)生分類器,能識(shí)別圖片中出現(xiàn)的車輛(車輛識(shí)別中使用的訓(xùn)練集僅限于小汽車)。如圖7所示。
圖6 Opencv人臉識(shí)別
在該部分中,通過模擬負(fù)載,不停地向后臺(tái)系統(tǒng)批量傳送大量監(jiān)控圖像來(lái)模擬多機(jī)器人遠(yuǎn)程實(shí)時(shí)控制。在該實(shí)驗(yàn)中,使用4臺(tái)單核處理器作為后臺(tái)服務(wù)集群,其中2臺(tái)負(fù)責(zé)人臉識(shí)別,2臺(tái)負(fù)責(zé)車輛識(shí)別。
圖7 Opencv車輛識(shí)別
如圖8所示,由于后臺(tái)系統(tǒng)在分配任務(wù)時(shí)總是將其分配到負(fù)載較輕的計(jì)算節(jié)點(diǎn)上,因此在整個(gè)運(yùn)行過程中各個(gè)節(jié)點(diǎn)的負(fù)載保持在相對(duì)均衡的狀態(tài)。同時(shí),由于使用多計(jì)算節(jié)點(diǎn)模式,從而能夠滿足同時(shí)控制多機(jī)器人的需求。
圖8 各個(gè)計(jì)算節(jié)點(diǎn)負(fù)載趨勢(shì)圖
在該部分根據(jù)預(yù)設(shè)指令測(cè)試整個(gè)系統(tǒng)的可行性。
在實(shí)驗(yàn)過程中,使機(jī)器人1處于有人環(huán)境中,機(jī)器人2處于有汽車的環(huán)境中,這里用一個(gè)玩具車來(lái)代替。機(jī)器人1在遇到人時(shí)會(huì)做出打招呼的動(dòng)作,機(jī)器人2在遇到車時(shí)會(huì)做出避讓動(dòng)作。實(shí)驗(yàn)表明兩個(gè)機(jī)器人都能夠完成預(yù)設(shè)的指令,整個(gè)過程檢驗(yàn)了一個(gè)系統(tǒng)同時(shí)控制多個(gè)處于不同環(huán)境中的機(jī)器人的可行性。
本文將機(jī)器人與云計(jì)算結(jié)合起來(lái),把機(jī)器人作為信息的獲取媒介和任務(wù)的最終執(zhí)行者,將后臺(tái)處理系統(tǒng)架設(shè)在云平臺(tái)上,利用云平臺(tái)的海量處理能力來(lái)解決多機(jī)器人的控制問題,實(shí)驗(yàn)表明本設(shè)計(jì)取得了良好的效果。但是,由于實(shí)驗(yàn)條件所限,機(jī)器人采集的只有圖像信息,在未來(lái)的工作中會(huì)將其他傳感器獲得的信息加入到其中,使機(jī)器人能夠更加全面地感知周圍環(huán)境,并根據(jù)這些信息做出更加準(zhǔn)確的決定。
[1] 徐莉,劉振方,王建丞,等.仿生機(jī)器人綜述[J].黑龍江科學(xué),2013,4(7):57-61.
[2] 王田苗,陶永,陳陽(yáng).服務(wù)機(jī)器人技術(shù)研究現(xiàn)狀與發(fā)展趨勢(shì)[J].中國(guó)科學(xué),2012,42(9):1049-1066.
[3] 陳兵,駱敏舟,馮寶林,等.類人機(jī)器人的研究現(xiàn)狀及展望[J].機(jī)器人技術(shù)與應(yīng)用,2013(4):25-30.
[4] 張曉暉,劉丁,李攀.基于網(wǎng)絡(luò)的機(jī)器人遠(yuǎn)程控制系統(tǒng)的實(shí)現(xiàn)與研究[J].機(jī)械科學(xué)與技術(shù),2007,26(6):808-811.
[5] Cheng Liying, Xue Dingyu, Cong Yang, et al. The research of environment perception based on the cooperration of muti-robot[C]. Chinese Control and Decision Conference,2012:1914-1919.
[6] ARAI T, PAGLLO E, PARKER L E. Advances in multi-robot systems [J]. IEEE Transctions on Robotics and Automation,2002,18(5):655-661.
[7] 陳洋,陸宇平.機(jī)器人實(shí)時(shí)遠(yuǎn)程控制系統(tǒng)及其開發(fā)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電子技術(shù)應(yīng)用,2006,32(2):7-10.
[8] 薛廣濤,陳一民,張濤.基于Linux的遠(yuǎn)程機(jī)器人控制系統(tǒng)研究[J]. 機(jī)器人,2001, 23( 3):261-265.
[9] 王波.虛擬化與云計(jì)算[M].北京:電子工業(yè)出版社,2009.
[10]陳全,鄧倩妮.云計(jì)算及其關(guān)鍵技術(shù)[J].計(jì)算機(jī)應(yīng)用,2009,29(9):2562-2566.
[11] HINTHENS P. ZeroMQ [M]. O’REILLY, 2013.
[12] BRADSKI G. Learning OpenCV [M]. O’REILLY, 2008.