摘 要: 目前由于機載設備的容量和處理能力有限,機器人完成復雜任務的能力受到限制。隨著無線網(wǎng)絡技術的快速發(fā)展,遠程控制機器人成為了可能。以云平臺為基礎,設計了一種具有海量處理能力的多機器人遠程實時控制系統(tǒng),通過機載攝像頭實時捕獲畫面并通過無線網(wǎng)絡傳給搭建在云平臺上的后臺處理系統(tǒng),后臺處理系統(tǒng)按照設定的規(guī)則對畫面做出判斷,并將控制指令返回給機器人執(zhí)行相應動作。
關鍵詞: 機器人遠程控制;云平臺;后臺控制系統(tǒng);實時性
0 引言
近年來由于技術發(fā)展和任務需要,仿人機器人的應用越來越廣泛[1-2]。隨著無線技術的快速發(fā)展,無線網(wǎng)絡傳輸數(shù)據(jù)的速度和穩(wěn)定性越來越高,使機器人的遠程控制成為可能。國內外學者對仿人機器人做了大量研究。參考文獻[3]詳細介紹了國內外仿人機器人的研究及理論現(xiàn)狀,提出了發(fā)展趨勢;參考文獻[4]實現(xiàn)了基于網(wǎng)絡的機器人遠程控制系統(tǒng),操作者通過網(wǎng)絡傳輸?shù)默F(xiàn)場實時畫面實現(xiàn)對遠程機器人的控制;參考文獻[5]以環(huán)境感知為前提,提出了多機器人系統(tǒng)的合作即時定位與地圖創(chuàng)建的方法;參考文獻[6]介紹了多機器人在多個研究領域的進展;參考文獻[7]以實時性和可靠性為前提,設計了一套遠程控制系統(tǒng)和開發(fā)庫;參考文獻[8]提出了一種基于Linux的新的遠程機器人控制系統(tǒng)的軟件體系結構并對遠程機器人的原理以及狀態(tài)監(jiān)控技術進行了詳細闡述。
當機器人遇到復雜情況時,由于機載設備容量和處理能力有限而顯得能力不足。將機器人感知的當前環(huán)境實時傳輸給遠程服務器,通過遠程服務器對信息實時處理并做出響應是克服該困難的有效方法。當多個機器人同時完成任務時,簡單的后臺處理器無法滿足計算需求,云計算為解決該問題提供了可能。
云計算[9-10]是指通過互聯(lián)網(wǎng)技術、虛擬化技術將大量異構的軟硬件資源結合起來,以服務的形式提供給用戶使用。
本文采用的設備是Darwin-op高級版—達爾文機器人,該機器人是一款高智能仿人機器人,自帶Ubuntu9.10操作系統(tǒng),包含高清攝像頭、陀螺儀、麥克風等專業(yè)傳感器,能夠穩(wěn)步行走和保持自身的平衡性,可以通過無線網(wǎng)訪問系統(tǒng)的資源,具有很好的視覺跟蹤和人機交互能力。
本文擬通過機載攝像頭將監(jiān)控信息實時傳輸給搭建在云計算平臺上的后臺集群,后臺集群通過對畫面的探測,搜索出目標信息,進而搜索數(shù)據(jù)庫中保存的指令序列傳給機器人,機器人做出相應的動作。
1 系統(tǒng)整體設計
1.1 系統(tǒng)組成
本系統(tǒng)有以下5部分組成,系統(tǒng)框架結構如圖1所示。
?。?) 機載攝像頭,每隔一定時間間隔采集一次當前所處的環(huán)境畫面并傳遞給預處理模塊。
?。?) 預處理模塊,為減小傳輸帶寬,對畫面進行一定比例的壓縮。
?。?) 通信模塊,負責機器人與后臺之間的交互,包括信息上傳和指令接收。
?。?) 控制模塊,根據(jù)后臺發(fā)出的指令做出相應動作。
?。?) 后臺數(shù)據(jù)處理集群,負責圖像的解析,并根據(jù)解析結果查詢數(shù)據(jù)庫,調取相應的指令信息反饋給機器人。
1.2 后臺數(shù)據(jù)處理集群
為了方便各個節(jié)點之間的協(xié)調工作,后臺處理集群采用master-worker架構。master節(jié)點主要負責:計算節(jié)點的管理和任務的接收與分配。
在計算節(jié)點管理方面,master節(jié)點維持一個計算節(jié)點列表,列表中的節(jié)點采用“心跳機制”,每隔一段時間向master節(jié)點報告其存活狀況,只有處于存活狀態(tài)的計算節(jié)點才參與任務的執(zhí)行。為增強適應性,后臺集群不僅要滿足當前所需,還要滿足將來不斷增加的負載需求,另外,本設計希望集群能夠在不停機的條件下擴展計算資源。為此,將計算節(jié)點設計為注冊機制,當新計算節(jié)點加入時首先向master節(jié)點申請加入,master節(jié)點接受后將該計算節(jié)點的信息(名稱、IP等)添加到計算節(jié)點列表中并反饋確認信息。
算法1 (master節(jié)點運行算法):
while true do
receive a task Ti
check next level process units’ workload
find a minimum workload unit Uj
allocate the task Ti to Uj
end while
在任務接收與分配方面,master通過TCP/IP協(xié)議與機器人進行通信。當master節(jié)點收到某個機器人上傳的信息時,master節(jié)點根據(jù)各個計算節(jié)點的負載情況將信息分配給負載最小的計算節(jié)點處理以達到負載均衡的目的,如算法1所示。各個節(jié)點的負載用CPU和內存的利用率評定:
其中,ψ1和ψ2為權重,滿足ψ1+ψ2=1。
在集群master和計算節(jié)點之間通過φMQ通信中間件進行通信[11],該中間件具有較高的通信速度和良好的穩(wěn)定性。為保證每個計算任務都能得到處理,采用REQ-REP通信模式。整個后臺處理集群的結構如圖2所示。
1.3 系統(tǒng)實現(xiàn)方法
信息流進入集群后以有向無環(huán)圖的形式在各個計算節(jié)點之間流動,每個計算節(jié)點視為一個處理單元。為了適應大負載及快速響應的需求,將整個系統(tǒng)設計為可橫向并行和縱向并行的形式。在橫向方面,將負責某個任務的處理單元設置為多份。當信息接收模塊接收到機器人的監(jiān)控圖像時,系統(tǒng)根據(jù)各個處理單元的負載情況將計算任務分配到負載較輕的處理單元。在縱向并行方面,采用分而治之的思想,每個計算任務分為多個階段處理。本文將處理過程設計為兩部分:一級處理單元和二級處理單元。如圖3所示。
將一級處理單元設置為檢測圖片中是否有人,二級處理單元設置為檢測圖片中是否有汽車。并且預設機器人執(zhí)行指令情況如下:⑴圖片中既無人又無汽車,機器人不動作;⑵圖片中僅有人,機器人打招呼;⑶圖中有汽車,機器人向一側移動;⑷圖中既有人又有汽車,機器人先打招呼再向一側移動。例如,當機器人將實時圖片上傳到后臺時,后臺系統(tǒng)根據(jù)各個處理單元的負載情況,將其分配到2號處理單元,2號處理單元調用人物探測功能,探測到有人存在,然后將結果和圖片傳遞到下游的二級處理單元中的6號,探測到?jīng)]有汽車存在,最后將兩個結果匯總提交給指令發(fā)送模塊,指令發(fā)送模塊查詢數(shù)據(jù)庫,向機器人發(fā)出打招呼指令。
此外,為了保證各個計算節(jié)點之間的負載均衡,一、二級處理單元之間為多對多的關系,如圖3所示。 在對機器人傳遞的圖片進行處理時,挖掘出其中比較重要的元素(人、汽車),并根據(jù)圖像中是否存在目標做出判斷。
圖像處理選用opencv作為工具箱。opnecv中圖像識別主要包括兩部分:訓練分類器和根據(jù)分類器對輸入的圖像進行檢測。以人臉識別為例,目前分類器大多基于Haar特征訓練得來(算法2)。具體操作如下:
(1)根據(jù)Haar特征使用大量樣本進行訓練(所有參與訓練的樣本必須歸一化為同樣大小的圖片),得到一個分類器。樣本分為正樣本和反樣本,正樣本為含有待檢測目標的樣本,反樣本為含有其他圖像的樣本。
(2)訓練完成后根據(jù)訓練產(chǎn)生的特征文件對感興趣的區(qū)域進行檢測。在人臉識別中當檢測區(qū)域有人臉時結果輸出1,表示含有目標圖像;否則輸出0,表示不含有目標圖像。
算法2(Haar訓練分類器算法):
begin
create Haar characteristic
number_of_classifier←0
while true do
input positive samples
input negative sample
if false alarm rate > R then
break
end if
if number_of_classifier > N then
break
end if
calculate Haar eigenvalue
train a strong classifier
Store classifier information into temp file
end while
store cascade information to XML file
check the function of classifier
end
在算法2中首先創(chuàng)建一個Haar特征,然后重復輸入正反樣本,訓練產(chǎn)生一個新的強分類器,此過程一直重復直到虛警率或產(chǎn)生分類器的數(shù)量達到規(guī)定的閾值為止。
系統(tǒng)后臺服務程序要對大量的物體進行檢測,每個物體對應一個訓練的分類器XML文件。前面提到為了增強縱向并行性將整個檢測過程采用分而治之的思想。將后臺程序設置為一級和二級處理單元,一級處理單元負責掃描前[N/2]數(shù)量的物體,二級處理單元負責掃描后[N/2]數(shù)量的物體。為了增強動態(tài)性,對處理的物體也采用動態(tài)注冊的方式,當有新的物體需要識別時,需要在物體列表中注冊,同時將XML文件放到指定的位置,將針對該物體的指令保存到數(shù)據(jù)庫中,如圖4所示。
機器人每隔一段時間通過機載攝像頭掃描當前環(huán)境,將采集當前環(huán)境的一幅圖片tar壓縮,然后通過TCP/IP協(xié)議傳輸?shù)胶笈_處理,等待該圖片對應的指令。具體流程如圖5所示。
另外,在機器人中預先設定各種動作的代號及相關的動作代碼,當一個指令序列到來時,機器人根據(jù)序列內容解析出動作代號,并根據(jù)代號執(zhí)行相應的動作。當需要改變面對某種情況所執(zhí)行的動作時,只要修改后臺數(shù)據(jù)庫中代號序列就可以重新編排動作,增強了靈活性。
2 實驗
在本實驗中測試整個系統(tǒng)的性能。首先測試利用opencv的圖像識別技術;然后通過模擬負載,測試后臺的處理性能;最后在真實環(huán)境中測試可行性。
實驗中使用Darwin-op機器人,后臺建立在由中國科學技術大學中科大-聯(lián)想云計算實驗室開發(fā)的瀚海星云云計算服務平臺上。該平臺目前提供IaaS層的服務,可以提供多種配置的Linux虛擬機。
2.1 Opencv圖像識別測試
在圖像識別測試中,以人臉識別和車輛識別為例進行測試。
在人臉識別中,使用opencv[12]示例中自帶的haarcascade_frontalface_alt.xml人臉識別分類器進行測試。如圖6所示,分別在無背景、單人真實環(huán)境以及多人真實環(huán)境下進行測試。通過對不同場景的測試,識別系統(tǒng)均可較好地識別出圖像中出現(xiàn)的人臉。
在對車輛進行識別時,建立了一個規(guī)模較小、包含2 000個樣本的數(shù)據(jù)集來訓練產(chǎn)生分類器,能識別圖片中出現(xiàn)的車輛(車輛識別中使用的訓練集僅限于小汽車)。如圖7所示。
2.2 后臺負載測試
在該部分中,通過模擬負載,不停地向后臺系統(tǒng)批量傳送大量監(jiān)控圖像來模擬多機器人遠程實時控制。在該實驗中,使用4臺單核處理器作為后臺服務集群,其中2臺負責人臉識別,2臺負責車輛識別。
如圖8所示,由于后臺系統(tǒng)在分配任務時總是將其分配到負載較輕的計算節(jié)點上,因此在整個運行過程中各個節(jié)點的負載保持在相對均衡的狀態(tài)。同時,由于使用多計算節(jié)點模式,從而能夠滿足同時控制多機器人的需求。
2.3 系統(tǒng)測試
在該部分根據(jù)預設指令測試整個系統(tǒng)的可行性。
在實驗過程中,使機器人1處于有人環(huán)境中,機器人2處于有汽車的環(huán)境中,這里用一個玩具車來代替。機器人1在遇到人時會做出打招呼的動作,機器人2在遇到車時會做出避讓動作。實驗表明兩個機器人都能夠完成預設的指令,整個過程檢驗了一個系統(tǒng)同時控制多個處于不同環(huán)境中的機器人的可行性。
3 結論
本文將機器人與云計算結合起來,把機器人作為信息的獲取媒介和任務的最終執(zhí)行者,將后臺處理系統(tǒng)架設在云平臺上,利用云平臺的海量處理能力來解決多機器人的控制問題,實驗表明本設計取得了良好的效果。但是,由于實驗條件所限,機器人采集的只有圖像信息,在未來的工作中會將其他傳感器獲得的信息加入到其中,使機器人能夠更加全面地感知周圍環(huán)境,并根據(jù)這些信息做出更加準確的決定。
參考文獻
[1] 徐莉,劉振方,王建丞,等.仿生機器人綜述[J].黑龍江科學,2013,4(7):57-61.
[2] 王田苗,陶永,陳陽.服務機器人技術研究現(xiàn)狀與發(fā)展趨勢[J].中國科學,2012,42(9):1049-1066.
[3] 陳兵,駱敏舟,馮寶林,等.類人機器人的研究現(xiàn)狀及展望[J].機器人技術與應用,2013(4):25-30.
[4] 張曉暉,劉丁,李攀.基于網(wǎng)絡的機器人遠程控制系統(tǒng)的實現(xiàn)與研究[J].機械科學與技術,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] 陳洋,陸宇平.機器人實時遠程控制系統(tǒng)及其開發(fā)庫的設計與實現(xiàn)[J]. 電子技術應用,2006,32(2):7-10.
[8] 薛廣濤,陳一民,張濤.基于Linux的遠程機器人控制系統(tǒng)研究[J]. 機器人,2001, 23( 3):261-265.
[9] 王波.虛擬化與云計算[M].北京:電子工業(yè)出版社,2009.
[10]陳全,鄧倩妮.云計算及其關鍵技術[J].計算機應用,2009,29(9):2562-2566.
[11] Hinthens P. ZeroMQ [M]. O’REILLY, 2013.
[12] Bradski G. Learning OpenCV [M]. O’REILLY, 2008.