周佳峰 曹偉
摘要:移動機(jī)器人在生產(chǎn)生活當(dāng)中日益發(fā)揮重要作用,但移動機(jī)器人開發(fā)應(yīng)用卻比較困難,主要存在兩個問題:一是軟件模塊化和重用性,二是行為協(xié)同控制模型的理論支撐。針對上述問題,融合了已在學(xué)術(shù)界和工業(yè)界取得廣泛應(yīng)用的開源機(jī)器人軟件平臺一機(jī)器人操作系統(tǒng)( Robot Operaing System,ROS),以及多主體理論中,支撐主體內(nèi)部行為協(xié)同機(jī)制的反應(yīng)式包容模型( Subsumption Architecture),設(shè)計并實(shí)現(xiàn)了一個移動機(jī)器人行為協(xié)同開發(fā)框架?;跈C(jī)器人操作系統(tǒng)底層機(jī)制,把包容模型的基本控制元件封裝成API,在功能單元內(nèi)部提供基于有限狀態(tài)機(jī)的開發(fā)模板,在功能單元之間提供松散耦合的通信機(jī)制,并且提供了基于框架的應(yīng)用開發(fā)的模型設(shè)計方法學(xué)和應(yīng)用實(shí)現(xiàn)方法學(xué)。用戶使用本文框架開發(fā)移動機(jī)器人,因?yàn)榭蚣馨寻菽P椭械年P(guān)鍵控制元件封裝成API,使得用戶不用了解復(fù)雜的控制模型理論以及底層模塊執(zhí)行機(jī)制和通信機(jī)制,并且可以重用機(jī)器人操作系統(tǒng)提供的開源軟件包,幾乎沒有額外的學(xué)習(xí)代價,十分地方便高效。通過框架研究并且開發(fā)了具有三個行為層的自主漫游機(jī)器人以及具有六個行為層的安保巡邏機(jī)器人,在仿真器和實(shí)際場景中設(shè)置不同地圖環(huán)境,進(jìn)行機(jī)器人行為實(shí)驗(yàn),通過實(shí)驗(yàn)結(jié)果分析,進(jìn)一步驗(yàn)證了框架的易用性、可靠性和魯棒性。
關(guān)鍵詞:多主體理論;包容模型;機(jī)器人操作系統(tǒng);應(yīng)用開發(fā)框架;安保巡邏機(jī)器人
中圖分類號:TP311
文獻(xiàn)標(biāo)識碼:A
移動機(jī)器人在移動中執(zhí)行任務(wù),既可以通過人工指揮,又可以運(yùn)用人工智能技術(shù),實(shí)現(xiàn)面向特定應(yīng)用場景的自主性任務(wù)執(zhí)行。移動機(jī)器人在現(xiàn)代社會中已經(jīng)獲得廣泛應(yīng)用,融人到了生產(chǎn)和生活的眾多方面。移動機(jī)器人可以替代人類執(zhí)行各種操作,尤其是危險作業(yè),災(zāi)難救援機(jī)器人、農(nóng)業(yè)機(jī)器人、安保機(jī)器人、消防機(jī)器人、核泄漏事故檢測機(jī)器人等都是移動機(jī)器人的代表性應(yīng)用[1-5]。但是長期以來,為移動機(jī)器人開發(fā)應(yīng)用軟件比較困難,主要是存在以下兩個方面的問題:
(1)不同公司和科研院所開發(fā)的機(jī)器人功能模塊互不兼容,機(jī)器人應(yīng)用的軟件重用性難以被保證,機(jī)器人開發(fā)者想要開發(fā)一個應(yīng)用,往往要從底層的機(jī)器人驅(qū)動開始,耗費(fèi)了極大的工作量;
(2)缺乏對于移動機(jī)器人應(yīng)用開發(fā)的理論支撐,在機(jī)器人的行為模塊被開發(fā)出來之后,如何協(xié)調(diào)機(jī)器人的這些行為模塊,從而針對不同的應(yīng)用場景完成不同的任務(wù)。
針對上述第一個機(jī)器人軟件可重用性的問題,近些年,一些機(jī)器人軟件平臺被開發(fā)了出來。OROCOS[6]是一個開源的機(jī)器人控制軟件平臺,通過無鎖編程(lock-free programming)技術(shù),可以基于OROCOS開發(fā)實(shí)時性應(yīng)用。MRDS( MicrosoftRobotics Developer Studio)[7]是微軟開發(fā)的機(jī)器人軟件平臺,采用微軟的基于.NET技術(shù)的編程環(huán)境。OPRoS[8]是由韓國開發(fā)小組設(shè)計的一個基于組件的開源軟件平臺,它整合了IDE開發(fā)工具、測試工具等,具有易用性。OpenRTM-aistc9]是基于RT中間件開發(fā)的機(jī)器人軟件平臺,基于RTC (RT-compo-nents)思想,其控制結(jié)構(gòu)是分布式的。上述平臺提供了機(jī)器人軟件模塊化機(jī)制,但是基本沒有活躍的用戶群體,甚至有些平臺沒有開源社區(qū),可重用的代碼包很少,對于機(jī)器人軟件的重用支持的差。機(jī)器人操作系統(tǒng)ROS(Robot Operating System)[10]是一個開源的機(jī)器人軟件平臺,具有活躍的軟件社區(qū),全世界數(shù)以千計的程序員為其貢獻(xiàn)了豐富的可以被重用的開源代碼包。ROS開發(fā)的初衷就是鼓勵程序員的合作式開發(fā)和軟件重用。所以,ROS可以用來解決移動機(jī)器人開發(fā)面臨的第一個軟件模塊化和可重用的問題。
針對第二個機(jī)器人行為協(xié)調(diào)理論模型的問題,很多學(xué)者展開了這方面的研究。運(yùn)動模式( Motor-Schema)cll]方式為輸入的各個行為賦予權(quán)值,輸出的行為是所有輸入行為的加權(quán)平均,但是這種模型采用中心仲裁方式,不具有魯棒性?;诹憧臻g的機(jī)器人行為協(xié)同方式[12],可以利用行為之間在不同維度的映射關(guān)系,整合成機(jī)器人的整體行為,但是該種方法同樣由于其對中心計算節(jié)點(diǎn)的依賴性,缺乏魯棒性。在多主體理論當(dāng)中,基于行為的反應(yīng)式模型可以通過松散耦合的行為交互,構(gòu)建智能主體,包容模型[13]是其典型代表,基于分層行為控制的思想,協(xié)同機(jī)器人行為,構(gòu)建機(jī)器人智能,具有魯棒性。
近年來,研究者針對上述問題開發(fā)了一些典型的機(jī)器人編程框架,SMACH[14]框架采取有限狀態(tài)機(jī)的思想,解決移動機(jī)器人行為協(xié)同,但是這種方法的缺點(diǎn)就是魯棒性低,任何一個狀態(tài)節(jié)點(diǎn)失效,將導(dǎo)致整個系統(tǒng)無法工作。COROS[15]基于ROS開發(fā)了機(jī)器人編程框架,但是該方法只是封裝了一些基本可重用模塊組件,缺乏理論支撐,應(yīng)用驗(yàn)證也相對簡單。Buzz[16]從編程語言設(shè)計的角度為機(jī)器人開發(fā)提供了可行方案,把機(jī)器人一般的功能需求封裝為原子語言操作,工作具有啟發(fā)性,但是缺乏軟件平臺支撐,無法支持軟件可重用性。GSDF框架[17]以Buzz中的機(jī)器人原子語言模型作為理論支撐,融合ROS實(shí)現(xiàn)了機(jī)器人應(yīng)用開發(fā)框架,但是該方法關(guān)注底層通信與功能原語,無法提供多任務(wù)的系統(tǒng)級別的應(yīng)用開發(fā),其應(yīng)用范圍有限。
基于ROS的底層機(jī)制,融合包容模型,開發(fā)了一個移動機(jī)器人編程框架。提取了包容模型中的關(guān)鍵控制元件一消息禁止器和消息抑制器,基于ROS進(jìn)行封裝,提供了功能單元間通信機(jī)制以及功能單元內(nèi)部的行為描述模板。介紹了基于本文框架開發(fā)機(jī)器人應(yīng)用的方法學(xué)。本框架相比于上述平臺、模型和框架,針對移動機(jī)器人應(yīng)用開發(fā)的優(yōu)勢可以總結(jié)如下:
(1)用戶可以不用了解復(fù)雜的行為協(xié)同理論,框架底層機(jī)制對用戶透明,用戶直接復(fù)用本框架提供的API即可;
(2)ROS開源社區(qū)提供的豐富的開源軟件包可以在框架當(dāng)中被重用;
(3)本框架可以支撐魯棒的系統(tǒng)級別的機(jī)器人應(yīng)用開發(fā),具有開發(fā)高效性;
(4)熟悉Python或者C++編程的程序員使用本框架基本沒有額外的學(xué)習(xí)代價。
在實(shí)驗(yàn)階段,基于框架實(shí)現(xiàn)了由包容模型提出者Brooks最初設(shè)計的自主漫游移動機(jī)器人[16]并且實(shí)現(xiàn)了一個具有六層行為的安保巡邏機(jī)器人。通過在仿真和實(shí)際環(huán)境中的實(shí)驗(yàn)結(jié)果和分析,驗(yàn)證了框架的易用性、魯棒性和開發(fā)高效性。
其余部分組織如下,第1節(jié)介紹預(yù)備知識,介紹ROS的基本機(jī)制以及包容模型的基本思想和關(guān)鍵控制元件;第2節(jié)介紹移動機(jī)器人行為協(xié)同開發(fā)框架;第3節(jié)介紹基于框架開發(fā)機(jī)器人應(yīng)用的方法學(xué);第4節(jié)介紹基于框架的安保巡邏機(jī)器人應(yīng)用開發(fā);第5節(jié)是實(shí)驗(yàn)部分。
1 預(yù)備知識
移動機(jī)器人應(yīng)用開發(fā)框架基于包容模型多主體理論與機(jī)器人操作系統(tǒng)ROS,下面對其進(jìn)行介紹。
1.1 反應(yīng)式包容模型
多主體理論當(dāng)中,松散耦合的多個智能主體通過交互,可以構(gòu)建整體智能?;谛袨榈姆磻?yīng)式多主體理論中,多個行為通過松散耦合的方式交互,完成行為協(xié)同,包容模型是該反應(yīng)式理論的典型代表,該模型最初由Brooks提出。如圖(1)所示,表示基于包容模型的自主漫游移動機(jī)器人控制結(jié)構(gòu),方形模塊表示不同的功能單元,功能單元之間的連接線表示不同類型的消息流,功能單元之間采取松散耦合的方式進(jìn)行通信,不同的功能單元組合可以構(gòu)建行為層。圖(1)中帶有符號“I”的圓形模塊表示包容模型的控制元件之一——消息禁止器(In-hibitor),從消息禁止器之上流人的消息可以作為禁止信號,禁止經(jīng)過禁止器的消息流通,圓形模塊中的數(shù)字表示一次消息禁止的時間。圖(2)中帶有符號“S”的圓形模塊表示包容模型的另一個控制元件——消息抑制器( Suppressor),從消息抑制器之上流人的消息,可以替代下層流經(jīng)抑制器的消息,如果沒有消息流經(jīng)抑制器,原本流經(jīng)其的消息正常傳遞,圓圈中的數(shù)字表示一次消息抑制的時間單位。通過兩個控制元件,可以組合行為層,使得上層行為在抑制下層行為的同時,也可以包容下層的部分行為,從而實(shí)現(xiàn)移動機(jī)器人內(nèi)部的行為協(xié)同,構(gòu)建增長式的智能。
1.2 機(jī)器人操作系統(tǒng)-ROS
在ROS中,功能單元通過節(jié)點(diǎn)(Node)表示,節(jié)點(diǎn)之間可以通過松散耦合通信方式一發(fā)布/訂閱方式進(jìn)行消息通信。每一個節(jié)點(diǎn)通過一個操作系統(tǒng)進(jìn)程來執(zhí)行,節(jié)點(diǎn)內(nèi)部通過訂閱者接口( Subscriber)來訂閱某個話題(topic)上的消息,通過與接口綁定的回調(diào)函數(shù)來處理消息,回調(diào)函數(shù)可以通過消息觸發(fā)執(zhí)行。發(fā)布者接口( Publisher)負(fù)責(zé)在某個話題上發(fā)布消息,實(shí)現(xiàn)節(jié)點(diǎn)間異步通信。
2 移動機(jī)器人行為協(xié)同開發(fā)框架
基于機(jī)器人操作系統(tǒng)ROS,融合多主體理論中基于行為的反應(yīng)式模型,設(shè)計并實(shí)現(xiàn)了應(yīng)用于移動機(jī)器人的行為協(xié)同開發(fā)框架。
2.1 總體結(jié)構(gòu)
如圖(2)所示,表示移動機(jī)器人行為協(xié)同開發(fā)框架總體結(jié)構(gòu)。底層表示機(jī)器人操作系統(tǒng),為框架開發(fā)提供底層支撐,功能單元可以復(fù)用機(jī)器人操作系統(tǒng)中的開源軟件功能包,也可以自己編寫。消息禁止器和消息抑制器為框架中的消息流控制元件,基于機(jī)器人操作系統(tǒng)的機(jī)制,把其封裝成API,通過消息流控制元件的消息禁止和消息抑制功能,把功能單元組合成行為層,不同的行為層組合成了一個自主智能移動機(jī)器人。
2.2 消息流控制元件的封裝
消息流控制元件為包容模型中最重要的部分,包括消息禁止器和消息抑制器,消息禁止器可以通過上層禁止信號的到來阻斷下層消息流傳遞,消息抑制器可以把下層的消息流替換為從抑制器上層傳人的消息流。例如,圖(1)中的“wander”模塊的輸出消息線上插入了一個消息抑制器,就可以使得上層的“startlook”消息作為消息禁止信號,禁止下層的“heading”消息傳遞給“avoid”模塊,一次消息禁止的時間為3個單位;圖(1)中的“runaway”模塊的消息輸出線上,插入了一個消息抑制器,當(dāng)上層的“avoid”模塊有“heading”消息輸出的時候,就會替換下層“runaway”模塊本來的消息輸出,一次消息抑制的時間為20個單位。
在消息禁止器控制元件的封裝過程中,一個元件被封裝為一個機(jī)器人操作系統(tǒng)中的節(jié)點(diǎn)。在節(jié)點(diǎn)內(nèi)部有兩個回調(diào)函數(shù),一個被上層傳人的消息觸發(fā),一個被下層傳人的消息觸發(fā),每個回調(diào)函數(shù)內(nèi)部都會記錄一個時間戳,每一次回調(diào)函數(shù)的執(zhí)行都會觸發(fā)這個時間戳的更新,兩個回調(diào)函數(shù)之間通過共享變量機(jī)制,共享各自的時間戳。當(dāng)消息禁止器接收到一個從下層傳人的消息時候,觸發(fā)相應(yīng)的回調(diào)函數(shù),其內(nèi)部控制邏輯就會計算這兩個時間戳的差值,判斷其是否小于一個預(yù)先指定的閾值。如果小于這個閾值,下層消息就會被禁止,否則下層消息通過該回調(diào)函數(shù)被轉(zhuǎn)發(fā),即消息正常傳遞。
消息抑制器的封裝過程類似于消息禁止器的封裝,不同點(diǎn)是,消息抑制器在禁止下層消息傳遞的同時,在處理上層消息的回調(diào)函數(shù)中加入了一個消息發(fā)布者,負(fù)責(zé)轉(zhuǎn)發(fā)上層消息,從而使得下層傳人的消息替換為上層消息,完成消息抑制過程。
控制元件中傳人消息的話題、消息禁止和抑制時間被封裝為可以外部配置的參數(shù)。用戶使用這兩個控制元件時,只需在ROS提供的launch文件中,實(shí)例化控制元件節(jié)點(diǎn)API,并配置相應(yīng)參數(shù)即可。
2.3 功能單元之間的通信
在ROS中,功能單元通過節(jié)點(diǎn)執(zhí)行,節(jié)點(diǎn)之間可以通過異步方式進(jìn)行通信。采用發(fā)布/訂閱機(jī)制,一個節(jié)點(diǎn)把消息發(fā)布到某一個話題上,所有在這個話題上訂閱消息的節(jié)點(diǎn)都可以接受到這個消息,消息類型需要與話題上指定的消息類型相匹配。
在框架當(dāng)中,如圖(3)所示,表示功能單元之間以及與控制元件之間的通信方式,采用發(fā)布/訂閱機(jī)制,通信相連的功能單元需要配置相同的話題,底層支撐采用TCP/IP協(xié)議。例如,在圖(1)中,“sonar”模塊在相應(yīng)話題上發(fā)布了類型為“map”的消息,話題名稱為“/sonar/map”,那么在這個話題上訂閱消息的“feelforce”模塊和“collide”模塊,都可以接收到這個消息。通過這種方式,用戶基于本文開發(fā)框架,重用的開源功能單元模塊或者是自己重新編寫的功能單元模塊,都可以很方便地插入到想要開發(fā)的移動機(jī)器人應(yīng)用的控制模型當(dāng)中。
2.4 功能單元內(nèi)部的行為描述模板
機(jī)器人行為協(xié)同開發(fā)框架提供了功能單元內(nèi)部的行為描述模板,采用了有限狀態(tài)機(jī)的方式,共分為四種類別的狀態(tài):事件觸發(fā)調(diào)度狀態(tài)、副效應(yīng)狀態(tài)、條件觸發(fā)調(diào)度狀態(tài)、輸出狀態(tài)。通過四種狀態(tài)組成的有限狀態(tài)機(jī),可以作為行為描述模板開發(fā)功能單元,下面舉例進(jìn)一步解釋。
如圖(4)所示,表示的是圖(1)中“avoid”功能單元內(nèi)部的有限狀態(tài)機(jī)行為描述方式,此狀態(tài)機(jī)運(yùn)行在一個回調(diào)函數(shù)當(dāng)中,該函數(shù)負(fù)責(zé)處理到來的“heading”消息。監(jiān)控狀態(tài)負(fù)責(zé)訂閱“heading”消息。此狀態(tài)屬于事件觸發(fā)調(diào)度狀態(tài),“heading”消息的到來即為觸發(fā)狀態(tài)機(jī)調(diào)度的事件;規(guī)劃狀態(tài)根據(jù)“heading”消息存儲的信息與共享變量計算結(jié)果,這個共享變量的更新通過另一個回調(diào)函數(shù)來執(zhí)行,此狀態(tài)屬于副效應(yīng)狀態(tài),狀態(tài)的執(zhí)行帶來了內(nèi)部某些變量的改變,比如說本例狀態(tài)機(jī)中的結(jié)果變量。計算完畢后,轉(zhuǎn)入執(zhí)行狀態(tài);執(zhí)行狀態(tài)將結(jié)果與一個閾值相比較,如果大于閾值,轉(zhuǎn)入監(jiān)控狀態(tài),如果小于閾值,轉(zhuǎn)入輸出結(jié)果狀態(tài)。此狀態(tài)為條件觸發(fā)調(diào)度狀態(tài),觸發(fā)的條件即為計算結(jié)果與閾值的比較;發(fā)布狀態(tài)負(fù)責(zé)將計算得到的結(jié)果封裝成消息并且發(fā)布。此狀態(tài)屬于輸出狀態(tài),輸出的是計算結(jié)果。
3 基于行為協(xié)同框架的應(yīng)用開發(fā)方法學(xué)
提供了基于行為協(xié)同框架開發(fā)移動機(jī)器人應(yīng)用的方法學(xué),分為控制模型設(shè)計步驟和實(shí)際應(yīng)用開發(fā)步驟,總結(jié)如下。
3.3 基于行為協(xié)同框架的控制模型設(shè)計方法學(xué)
總結(jié)的基于行為協(xié)同框架的控制模型設(shè)計方法學(xué),主要是基于包容模型的層次行為設(shè)計的基本思想,采用自頂向下的方法,具體步驟如下。
(1)提出移動機(jī)器人應(yīng)用的總體需求;
(2)將總體需求分解為機(jī)器人的具體行為;
(3)分析具體行為由哪些功能模塊組成;
(4)分析消息流控制元件如何插入相應(yīng)功能模塊當(dāng)中,組成行為層;
(5)畫出基于包容模型的行為分層控制模型設(shè)計圖。
3.4 基于行為協(xié)同框架的實(shí)際應(yīng)用開發(fā)方法學(xué)
總結(jié)的基于行為協(xié)同框架的實(shí)際移動機(jī)器人應(yīng)用開發(fā)過程的方法學(xué),采用自底向上的思想,具體步驟如下:
(1)根據(jù)框架中的功能單元行為描述模板,開發(fā)相應(yīng)的功能單元,如果ROS中有相應(yīng)的開源代碼包,盡量實(shí)現(xiàn)軟件重用;
(2)使用框架提供的消息流控制元件API,配置相應(yīng)的消息參數(shù)和時間參數(shù),并且在launch文件中實(shí)例化。
(3)通過消息控制元件和功能單元組成相應(yīng)的行為層;
(4)把不同的行為層組合成一個完整的移動機(jī)器人應(yīng)用;
(5)在機(jī)器人仿真和實(shí)際環(huán)境中進(jìn)行驗(yàn)證。
4 基于框架的安保巡邏機(jī)器人應(yīng)用案例開發(fā)
安保機(jī)器人具有十分廣泛的應(yīng)用價值,例如家庭安保機(jī)器人、社區(qū)安保機(jī)器人、商場安保機(jī)器人等。本文基于提出的行為協(xié)同開發(fā)框架,設(shè)計了一個具有六層行為的安保巡邏機(jī)器人應(yīng)用案例,進(jìn)一步驗(yàn)證了本框架的易用性和開發(fā)效率的高效性。
4.1 安保巡邏機(jī)器人應(yīng)用需求分析
針對安保巡邏機(jī)器人的特點(diǎn),首先進(jìn)行需求分析,將安保巡邏機(jī)器人的總體需求總結(jié)如下:首先,安保巡邏機(jī)器人需要可以在已經(jīng)建立好地圖的指定區(qū)域內(nèi)巡邏,如果有入侵者到來,可以檢測到并采取一定措施,例如跟蹤入侵者、報警。當(dāng)上述行為模塊失效時候,為了提高機(jī)器人魯棒性,機(jī)器人還需要具有一定的容錯能力,比如基本的自我保護(hù)能力、漫游的能力、對環(huán)境的探索能力等。此外,遠(yuǎn)程的中心監(jiān)控室需要看到機(jī)器人看到的視頻畫面,而且當(dāng)機(jī)器人的巡邏安保行為失效的時候,比如機(jī)器人阻塞在某些障礙物之間無法移動,出現(xiàn)這些意外情況的時候,可以做到人工遠(yuǎn)程手動控制機(jī)器人。
4.2 安保巡邏機(jī)器人控制模型設(shè)計
如圖(5)所示,表示設(shè)計的安保巡邏機(jī)器人控制模型,根據(jù)4.1節(jié)總結(jié)的需求,共分為六個行為層,現(xiàn)將六個行為層描述如下:
(1)第一層:當(dāng)有外來物體靠近機(jī)器人時,機(jī)器人遠(yuǎn)離目標(biāo);
(2)第二層:機(jī)器人可以實(shí)現(xiàn)自主漫游行為,碰到障礙物的時候主動躲避;
(3)第三層:機(jī)器人會主動對環(huán)境的空閑區(qū)域進(jìn)行主動探索;
(4)第四層:機(jī)器人在已經(jīng)建立地圖的環(huán)境當(dāng)中,可以在預(yù)先標(biāo)定的目標(biāo)點(diǎn)之間實(shí)現(xiàn)巡邏。
(5)第五層:機(jī)器人可以通過人臉檢測,檢測可疑入侵者目標(biāo),自動跟蹤并發(fā)出警報;
(6)第六層:遠(yuǎn)端有一個與機(jī)器人通過無線通信相連接的計算機(jī),在計算機(jī)上可以看到機(jī)器人看到的畫面,手動標(biāo)識入侵者,手動控制機(jī)器人,實(shí)現(xiàn)遠(yuǎn)程控制和遠(yuǎn)程監(jiān)控。
4.3 安保巡邏機(jī)器人應(yīng)用開發(fā)
上一節(jié)設(shè)計了安保巡邏機(jī)器人的控制模型,下面介紹具體實(shí)現(xiàn)過程。
在第一層中,機(jī)器人通過“kinect”模塊獲取攝像頭得到的視頻信息以及深度圖像信息,“run-away”模塊采取手動編寫方式,通過深度點(diǎn)云信息,計算前方對象是否離自己過近,從而逃離或者原地不動?!皊moother”是速度平滑器模塊,復(fù)用開源節(jié)點(diǎn),減少機(jī)器人行進(jìn)過程中由于速度變化而產(chǎn)生的抖動。
在第二層中,“bumper”模塊傳遞機(jī)器人的碰撞信息,可以檢測到是否撞到了障礙物,“wander”模塊手動編寫,可以發(fā)出隨機(jī)漫游的速度指令,“avoid”模塊也通過手動編寫,可以融合這兩個消息,實(shí)現(xiàn)了帶有避障的漫游。第二層插入第一層的消息抑制器,可以通過漫游行為抑制逃離行為,并且實(shí)現(xiàn)了對于第一層速度平滑功能的包容。
在第三層中,“explore”模塊手動編寫,通過接收“kinect”模塊的深度信息,發(fā)現(xiàn)前方空曠區(qū)域,主動實(shí)現(xiàn)探索性地自主智能漫游,通過第三層插入第二層的消息抑制器,可以通過探索行為抑制漫游行為,并且實(shí)現(xiàn)了對于底層避障功能、速度平滑功能的包容。
在第四層中,復(fù)用了開源的機(jī)器人導(dǎo)航軟件包實(shí)現(xiàn)了“navigation”模塊,“patrol”模塊手動編寫,給“navigation”模塊發(fā)送目標(biāo)指令,并且接收其反饋,反饋消息中包含是否到達(dá)相應(yīng)目標(biāo)點(diǎn)信息,如果到達(dá),“patrol”模塊發(fā)送下一個目標(biāo)點(diǎn)指令,從而實(shí)現(xiàn)巡邏。通過第四層插入第三層消息抑制器,可以通過有帶有任務(wù)規(guī)劃的巡邏行為抑制較低層的探索行為。
在第五層中,復(fù)用了開源的視覺檢測模塊“de-tect”、視覺跟蹤模塊“track”以及機(jī)器人報警與發(fā)聲代碼包“alarm”和“sound_play”,當(dāng)“detect”通過人臉識別算法檢測到可疑目標(biāo)的時候,會把消息發(fā)布出來,“alarm”模塊會馬上接收到這個消息并且發(fā)給“sound_play”模塊報警,“track”模塊也會馬上接收到這個消息,“track”模塊同時還會接收機(jī)器人攝像頭捕捉的視頻消息,處理之后,跟蹤到可疑目標(biāo),框選出來?!癴ollow”模塊手動編寫,把目標(biāo)在視野中的位置和大小信息,通過視覺的近大遠(yuǎn)小原理,轉(zhuǎn)換為機(jī)器人相應(yīng)的速度指令,控制機(jī)器人移動。第五層插入第四層的消息禁止模塊,能馬上禁止機(jī)器人當(dāng)前的巡邏行為,根據(jù)視野內(nèi)當(dāng)前可疑目標(biāo),進(jìn)行跟蹤算法的計算,從而最終輸出跟蹤行為,通過插入到第四層的消息抑制器,把巡邏行為替換為跟蹤行為,實(shí)現(xiàn)可疑者跟蹤。
在第六層中,“remote terminal”表示與機(jī)器人通過無線通信相連的遠(yuǎn)程計算機(jī),“manual detect”是手動檢測模塊,可以手動人工框選目標(biāo),通過消息抑制器,替代下層自動框選的目標(biāo),“manual con-trol”通過遠(yuǎn)程計算機(jī)的人工控制命令,控制機(jī)器人移動,通過消息抑制器,替代下層的機(jī)器人自主移動的指令。
通過以上六層行為中功能模塊的組織和消息元件的插入,實(shí)現(xiàn)了一個智能的安保巡邏機(jī)器人應(yīng)用。
5 實(shí)驗(yàn)
5.1 自主漫游移動機(jī)器人實(shí)驗(yàn)
基于提出的行為協(xié)同開發(fā)框架,實(shí)現(xiàn)了由Brooks最初提出的由包容模型構(gòu)建的三個行為層的自主漫游移動機(jī)器人應(yīng)用,控制模型如圖(1)所示。
5.1.1 實(shí)驗(yàn)設(shè)置
如圖(6)所示,表示自主漫游移動機(jī)器人實(shí)驗(yàn)環(huán)境設(shè)置,圖(6a)的環(huán)境表示的是兩個空曠的走廊當(dāng)中有一個方形的障礙物,圖(6b)的環(huán)境表示地圖中有零散分布的障礙物。圖(6)中的圓圈為機(jī)器人,綠色范圍表示聲吶傳感器的有效范圍,紅色線條表示激光傳感器掃描線。
為仿真機(jī)器人配置了12個聲吶傳感器,這12個聲吶傳感器總共覆蓋的角度為360度,最大探測范圍為3米,最小的探測范圍為0.3米;配置了1個激光傳感器,覆蓋的角度是270度,最大探測到的距離配置為8米,最小的探測距離配置為0米。仿真環(huán)境基于ROS提供的STDR仿真器[18]構(gòu)建。
5.1.2 實(shí)驗(yàn)結(jié)果和分析
在第1級別的行為能力之下,機(jī)器人會找到一片比較空閑區(qū)域停留在原地,直到有另外的目標(biāo)向其移動。如圖(7)所示,表示自主漫游移動機(jī)器人的在第2級和第3級的行為能力下的實(shí)驗(yàn)結(jié)果。在圖(7a)和圖(7b)中,機(jī)器人在第2級相應(yīng)行為能力之下,會在兩種地圖之中作無目的漫游,而且,第2級的行為同時也會包容第1級的行為,如果將要碰到某個障礙物,例如墻壁、地圖邊緣,會執(zhí)行主動避障的行為。在圖(7c)和圖(7d)當(dāng)中,機(jī)器人在第3級相應(yīng)行為能力之下,會通過上層的激光傳感器,探索到空曠區(qū)域的位置信息,并且向其移動,完成更高的級別的自主漫游行為。同時,第1級和第2級的行為模塊在第3級當(dāng)中也發(fā)揮著十分重要的作用,機(jī)器人在漫游的同時也可以完成避障。如果機(jī)器人周圍障礙物較多的話,就會長時間探索不到比較空曠的區(qū)域,此時,機(jī)器人行為降級,恢復(fù)到第2級的隨機(jī)漫游行為。實(shí)驗(yàn)結(jié)果驗(yàn)證了本文提出的應(yīng)用于移動機(jī)器人的機(jī)器人行為協(xié)同開發(fā)框架的易用性、可靠性、魯棒性。
5.2 安保巡邏機(jī)器人實(shí)驗(yàn)
5.2.1 實(shí)驗(yàn)設(shè)置
如圖(8)所示,表示安保巡邏機(jī)器人的實(shí)驗(yàn)環(huán)境配置。圖(8a)表示本文所使用的地面移動機(jī)器人TurtleBot[19],該機(jī)器人包括一個Kobuki底盤,一個Kinect攝像頭以及一臺筆記本電腦。Kobuki底盤上面帶有碰撞傳感器,碰撞傳感器可以通過壓力感應(yīng)原理,檢測到正前方、左前方以及右前方的障礙物。Kinect傳感器可以獲取RGB-D信息,最大的探測距離為3.5米,最小的探測距離為1.2米。
圖(8b)表示實(shí)驗(yàn)環(huán)境,中間有一個乒乓球桌作為障礙物,乒乓球桌四面是機(jī)器人可以通行的通道。
5.2.2 實(shí)驗(yàn)結(jié)果和分析
如圖(9)所示,表示實(shí)際環(huán)境下的安保巡邏機(jī)器人的實(shí)驗(yàn)結(jié)果,圖中的白色箭頭表示移動機(jī)器人TurtleBot的運(yùn)動軌跡,機(jī)器人在不同的控制層次之下,會展示出相應(yīng)的不同行為能力,同時,高級別的行為能力會包容低級別的一部分的行為能力。
在第1級別行為能力之下,如圖(9a)所示,當(dāng)有目標(biāo)靠近機(jī)器人的時候,機(jī)器人會逃離目標(biāo),以執(zhí)行自我保護(hù)行為;
在第2級別的行為能力之下,如圖(9b)所示,機(jī)器人會執(zhí)行隨機(jī)漫游的行為,同時保證避障,當(dāng)碰撞到障礙物時候,執(zhí)行一定的避障行為;
在第3級別的行為能力之下,如圖(9c)所示,機(jī)器人會執(zhí)行探索空曠區(qū)域的行為,例如圖中機(jī)器人通過kinect傳感器,探索到了空曠的可通行通道,就會大致沿著這個方向行進(jìn),從而實(shí)現(xiàn)智能自主的探索行為。
在第4級別的行為能力之下,如圖(9d)所示,在預(yù)先建立好地圖的環(huán)境當(dāng)中,指定了四個巡邏點(diǎn)(乒乓球桌的四個角),機(jī)器人就會沿著這些巡邏點(diǎn)執(zhí)行巡邏行為。
在第5級別的行為能力之下,如圖(9e)所示,前方粘貼人臉圖片的TurtleBot為可疑入侵機(jī)器人,當(dāng)機(jī)器人在正常巡邏的過程當(dāng)中,通過人臉檢測功能,檢測到入侵機(jī)器人,就會執(zhí)行跟蹤行為并且報警。如果可疑機(jī)器人快速逃走導(dǎo)致其消失在視野當(dāng)中,那么機(jī)器人就會降級其行為能力,恢復(fù)巡邏功能。
在第6級別的行為能力之下,如圖(9f)所示,遠(yuǎn)程終端(乒乓球桌上的筆記本電腦)通過無線網(wǎng)絡(luò)與機(jī)器人建立通信連接,此時,在遠(yuǎn)程終端上就可以看到機(jī)器人看到的畫面,遠(yuǎn)程終端之上,如果機(jī)器人無法自動識別可疑者,可以通過人工手動框選目標(biāo)的方式,指定可疑目標(biāo),也可以通過手動控制功能,在遠(yuǎn)程終端上向機(jī)器人發(fā)送速度運(yùn)動指令,人工遠(yuǎn)程控制機(jī)器人移動。當(dāng)人工指令不發(fā)出的時候,機(jī)器人降級其行為能力,恢復(fù)到之前的巡邏行為或者自主檢測跟蹤行為(根據(jù)視野中有無可疑入侵者目標(biāo))。
如果此安保機(jī)器人應(yīng)用通過其他移動機(jī)器人框架開發(fā),例如基于有限狀態(tài)機(jī)的SMACH[14]框架,下面與本文實(shí)驗(yàn)進(jìn)行對比分析。在機(jī)器人運(yùn)行過程中,使巡邏節(jié)點(diǎn)失效(關(guān)閉巡邏任務(wù)進(jìn)程)。對于本文應(yīng)用來說,機(jī)器人會通過視覺傳感器降級執(zhí)行帶有探索的漫游行為(行為級別3),對環(huán)境依舊有巡邏功能,并且發(fā)現(xiàn)入侵者的時候,依舊會進(jìn)行跟蹤;對于SMACH應(yīng)用來說,機(jī)器人巡邏行為會馬上失效,狀態(tài)轉(zhuǎn)換無法被觸發(fā),整個系統(tǒng)癱瘓,應(yīng)用不具有可靠性和魯棒性。此外,對于其他中心仲裁的框架,例如Motor Schema、多路復(fù)用選擇器等,當(dāng)中心仲裁節(jié)點(diǎn)的運(yùn)行進(jìn)程意外關(guān)閉,整個系統(tǒng)癱瘓;本文框架把行為協(xié)同節(jié)點(diǎn)(消息禁止器與消息抑制器)分布到各個行為層當(dāng)中,實(shí)現(xiàn)分布式行為仲裁,進(jìn)一步提高了框架的可靠性和魯棒性。
在機(jī)器人原型過程中,通過基于本文框架開發(fā)的安保巡邏機(jī)器人的實(shí)際實(shí)驗(yàn),進(jìn)一步驗(yàn)證了本文提出的開發(fā)框架在實(shí)際機(jī)器人的應(yīng)用開發(fā)方面,具有易用性、可靠性、魯棒性。
6 結(jié)論
多主體理論中,各個主體可以通過交互構(gòu)建整體智能,基于行為的反應(yīng)式多主體理論中,主體可以通過對環(huán)境的反應(yīng)實(shí)現(xiàn)智能,包容模型是反應(yīng)式體系結(jié)構(gòu)的代表,具有魯棒、容錯、分布式協(xié)同的優(yōu)點(diǎn)。機(jī)器人操作系統(tǒng)ROS是開源機(jī)器人軟件平臺,有豐富的可重用的開源機(jī)器人軟件功能包。本文融合ROS與包容模型開發(fā)了一個移動機(jī)器人行為協(xié)同框架,為移動機(jī)器人開發(fā)提供了方便。本文通過使用該開發(fā)框架,分別在仿真器和實(shí)際環(huán)境中實(shí)現(xiàn)了自主漫游機(jī)器人和安保巡邏機(jī)器人,進(jìn)一步驗(yàn)證了框架的開發(fā)高效性。在接下來的工作中,會把框架向多機(jī)器人擴(kuò)展,研究多機(jī)器人行為協(xié)同開發(fā)框架。
參考文獻(xiàn)
[1]欒偉玲,韓延龍,張曉霓,等,用于核救災(zāi)機(jī)器人的電機(jī)驅(qū)動器安全防護(hù)[J].機(jī)械工程學(xué)報,2017(21):9-15.
[2]陳順立,農(nóng)業(yè)機(jī)器人路徑優(yōu)化及軌跡跟蹤研究一基于遺傳算法[J]農(nóng)機(jī)化研究,2017,39(8):17-21.
[3]薛金言,張斌,武瀚,智能校園巡邏安保機(jī)器人設(shè)計[J].無線互聯(lián)科技,2017 (16):131-132.
[4]徐振亞,姜樹海,森林消防機(jī)器人執(zhí)行機(jī)構(gòu)的設(shè)計與仿真[J].制造業(yè)自動化,2017(12 ):67-70.
[5]劉呈則,嚴(yán)智,鄧景珊,等.核電站應(yīng)急機(jī)器人研究現(xiàn)狀與關(guān)鍵技術(shù)分析[J].核科學(xué)與工程,2013,33(1):97-105_
[6]BRUYNINCKX H_ Open robot control software: the OROCOS pro-ject [C]//Proceedings 2001 ICRA. IEEE intemational conferenceon robotics and automation( Cat.No.OICH37164).IEEE, 2001,3:2523-2528.
[7] JACKSON J.Microsoft robotics studio:a technical introduction[J]. IEEE robotics&automation magazine, 2007, 14(4):82-87.
[8]JANC C, LEE S, JUNG S, et al.OPRoS:a new component basedrobot software platform[J].ETRI Journal: 2010, 32(5 ):646-656.
[9] ANDO N,SUEHIRO T,KOTOKU T.A software platform forcomponent based RT -system development:openRTM -aist[M]//Simulation, Modeling, and Programming for Autonomous Robots.Springer Berlin Heidelberg: 2008: 87-98.
[10] QUICLEY M,CONLEY K,GERKEY B,et al.ROS: an open-source Robot Operating System[C]//ICRA Workshop on OpenSource Software. 2009, 3(3.2):5.
[11] ARKIN R C.Motor schema-based mobile robot navigation[J].The International Journal of Robotics Research, 1989,8(4):92-1 12
[12] ANTONELLI, GIANLUCA. FILIPPO ARRICHIELLO,et al.Experiments of formation control with multirobot systems using the null-space-based behavioral control [J]. IEEE Transactionson Control Systems Technology: 2009: 1173-1182.
[13]BROOKS R S.A robust layered control system for a mobile robot[J]. IEEE J, 1986,2( 1):14-23.
[14] BOHREN J, COUSINS S. The SMACH high-level executive [ROSNews][J].IEEE Rohotics&Automation Magazine: 2010, 17 (4): 18-20.
[15]KOUBAA, SRITI M F,BENNACEUR H,et al.COROS:a multi-agent software architecture for cooperative and autonomousservice robots [J]. Studies in Computational Intelligence:2015. 604:3-30.
[16] PINCIROLI C,BELTRAME G.Buzz:a programming language forrobot swarms[J].IEEE Software, 2016, 33( 4):97-100.
[17] CHANGX, CAI Z, WANGY, et al.GSDF:a generic developmentframework for swarm robotics[C]// International Conference onIntelligent Robotics and Applications. Springer,Cham,2017:659-670.
[18] MANOST,CHRIS Z,ArisT.STDR二維分布式機(jī)器人仿真器.http://wiki.ros.orgstdr_simulator[EB/OL].2014.
[19] TULLY F,MELONEE W.TurtleBot地面移動機(jī)器人實(shí)驗(yàn)平臺.http://wiki.ros.orgRobots/TurtleBot[EB/OL]. 2017.