1、引言
80年代末,隨著機器人學、DAI和分布式系統(tǒng)的研究與發(fā)展,機器人已朝向分布式、系統(tǒng)化和智能化的方向發(fā)展.尤其是基于MAS的多機器人協(xié)作問題正受到越來越多的關注.目前智能體(Agent)還沒有統(tǒng)一的定義,一般被認為是一個能作用于自身和環(huán)境,并能對環(huán)境做出反應的物理的或抽象的實體[1],是一個具有自主性、主動性、社會交互性及反應性的對象模型.MAS則是Agent的集合.每個Agent都是一個具有相同的問題求解方法的自治系統(tǒng),能利用局部信息進行自主規(guī)劃,并能通過規(guī)劃推理解決局部沖突實現(xiàn)協(xié)作,從而完成與自身相關的局部目標.依據(jù)MAS的特性來組織和控制多個機器人,使之能夠協(xié)作完成單個機器人無法完成的復雜任務是機器人學研究領域的新課題,具有重要的理論和現(xiàn)實意義.國外一些著名研究有:ACTRESS、CEBOT、 SWARM等系統(tǒng).
我們要實現(xiàn)的系統(tǒng)是以多個移動機器人為控制對象,以開闊區(qū)域為試驗環(huán)境,要完成多個隨機散布的機器人排成指定隊形的任務,每個機器人要有不同層次的合作能力.我們將機器人封裝為Agent和車體模型兩部分,其中Agent是廣義的機器人控制器,車體模型是機器人的物理實體.這樣,多機器人的合作就體現(xiàn)為多 Agent的合作,各機器人依據(jù)其子目標,動態(tài)地規(guī)劃各自的運動序列,在自主狀態(tài)下采用自主行為,在沖突狀態(tài)下采用合作行為,從而協(xié)作完成系統(tǒng)任務.本文就是基于這樣的背景提出了系統(tǒng)原型.
2、合作機制與控制結構
群體的智能行為要求多機器人之間必須能夠有效合作,這涉及多方面的問題,首先是如何組織機器人去完成任務,這是任務級的合作,體現(xiàn)為高層的組織形式與運行機制[2].多機器人間關系明確后,合作又體現(xiàn)為具體的運動協(xié)調規(guī)劃與控制問題,這是控制級的合作,用來解決局部沖突. 根據(jù)系統(tǒng)任務的要求,我們選取協(xié)商和競爭的合作方式,實現(xiàn)如下合作機制:在任務層,實現(xiàn)了基于競爭的子任務指定;在行為層,通過采用動態(tài)優(yōu)先級設定技術消解局部沖突,實現(xiàn)了資源的合理分配[3].
恰當?shù)剡x取系統(tǒng)控制結構是實現(xiàn)多機器人合作的前提條件.一般地,以系統(tǒng)中是否有組織智能體為標準[4],將系統(tǒng)分為集中式控制和分散式控制.集中式系統(tǒng)中由管理員負責規(guī)劃和決策,其協(xié)調效率比較高,但實時性、動態(tài)特性較差.而在分散式系統(tǒng)中,個體高度自治,并能借助于通訊手段合作完成任務.這種方式在容錯能力、可靠性和伸縮性等方面比集中式結構要好.根據(jù)單體機器人結構的劃分是否遵從笛卡爾方法[5],提出基于行為和基于功能的控制結構.基于行為的結構亦叫縱式分解結構,R.A.Brooks提出的包容結構[6]是一個典型.該結構具有靈活反應能力,利于實時任務的完成,但幾乎不具有智能,規(guī)劃能力差.基于功能的控制結構也叫橫式分解結構,分層遞階結構是一個典型.該結構對外界的反應不夠靈活,反應速度慢,但具有規(guī)劃和推理能力,能對環(huán)境做出合理反應.為適應系統(tǒng)分布式、智能化和協(xié)同化的要求,我們選取混合式控制結構,即規(guī)劃與響應相結合、橫式與縱式相結合、全局自主分布與局部集中管理相結合的結構.

3、系統(tǒng)模塊化設計原型
考慮到系統(tǒng)的分布式特點及機器人的同質性,為了便于系統(tǒng)實現(xiàn)和擴充,我們采用模塊化設計思想,依據(jù)系統(tǒng)控制結構的層次,按功能對系統(tǒng)進行模塊化分解,設計了具有可實現(xiàn)性的系統(tǒng)原型.從面向對象技術的角度來看,系統(tǒng)中的對象可分為機器人和系統(tǒng)管理員兩類,我們據(jù)此將系統(tǒng)分為管理員分系統(tǒng)和機器人分系統(tǒng)兩大部分.
3.1機器人分系統(tǒng)(包含多個機器人子系統(tǒng))
每個機器人子系統(tǒng)包含Agent和車體模型兩部分,其中,車體模型是包含了各種硬件設備的物理實體,在此不詳述.與之相對,Agent作為機器人智能的體現(xiàn)者,是推理、決策、規(guī)劃和控制的軟件執(zhí)行體,是一個功能完全的對象模型,由4部分組成.

3.1.1知識信息收集處理子系統(tǒng)
機器人在動態(tài)過程中規(guī)劃的依據(jù)就是Agent 具有的先驗知識和前一時刻收集的局部環(huán)境信息,機器人據(jù)此完成規(guī)劃和控制.主要包含下面幾個模塊:
(1) 讀取地圖信息 Read_Map():一般包含部分靜態(tài)障礙的信息.在機器人的初始化部分完成.
(2) CCD視覺信息接收處理 Receive_CCD():接收從攝像機中取得的視頻圖像,經變換得RGB圖像,然后轉換為灰度圖像,經數(shù)學形態(tài)學處理和邊界抽取等處理,最后可求得視域內障礙物和機器人的位置信息.用來探測較遠距離的障礙.
(3)超聲波信息接收處理 Receive_US():主要用于探測較近距離內或突現(xiàn)的障礙,給出障礙物的距離及其方向,在避障過程中起自我保護和監(jiān)控作用,使之具有較好的靈活反應能力.
(4)紅外信息接收處理 Receive_IR():紅外探測器易受外界光線的干擾,且不能提供障礙物在敏感區(qū)域內的具體位置,在本系統(tǒng)中起輔助避障的作用.
(5)Sensor信息融合 SensorInfo_Fusion():將CCD、US、IR的處理結果經綜合分析形成對環(huán)境的描述,放入規(guī)定的數(shù)據(jù)結構中,以確定靜、動態(tài)障礙物的位置、方向等.
(6)車體定位 Cur_Pos():從odometer中讀出車體的位置和前輪轉角,填入給定的數(shù)據(jù)結構.
上述幾個模塊主要完成了傳感器數(shù)據(jù)的采集與存儲,實際上還應包括機器人之間的網絡通訊數(shù)據(jù),這一部分數(shù)據(jù)也是很重要的輸入信息,放在后續(xù)的通訊模塊中說明.
3.1.2規(guī)劃推理子系統(tǒng)
規(guī)劃與控制是自主機器人的核心功能,主要負責完成機器人的行為規(guī)劃與行為控制,體現(xiàn)其智能程度,所以這部分功能實現(xiàn)比較復雜,在此只給出主要的功能模塊 (Agent子類的成員函數(shù)).
(1)全局路徑規(guī)劃 Global_Planner():是離線規(guī)劃,在系統(tǒng)初始化時完成.利用A*搜索算法給出一條在全局環(huán)境內最優(yōu)的路徑,做為機器人在自主狀態(tài)下跟蹤的理想路徑.
(2)局部路徑規(guī)劃 Local_Planner():運用動態(tài)子目標規(guī)劃算法完成動態(tài)過程中的局部路徑規(guī)劃.根據(jù)當前場景,按照算法調度下列模塊,求出動態(tài)子目標點作動態(tài)跟蹤的目標.
(3)靜態(tài)障礙檢測 Static_Collision():根據(jù)傳感器給出的當前視域內的靜態(tài)障礙(OBS)分布的相關數(shù)據(jù)信息,按照一定的碰撞檢測條件,判斷各OBS所在的空間是否與各機器人當前規(guī)劃段相沖突,有,則置標志,并返回與機器人相沖突的最近的OBS信息.
(4)靜態(tài)子目標點選取 Static_Subgoal():根據(jù)靜態(tài)障礙檢測的結果,按照一定原則,選取子目標點.
(5)動態(tài)沖突預測 Dynamic_Collision():利用傳感器給出的當前視域內的動態(tài)OBS分布的相關數(shù)據(jù)信息,依據(jù)利用通信交互的當前通信域內其他各機器人(也看作是動態(tài)OBS)的相關信息(位置、速度、目標),求出各動態(tài)目標間的最短距離以及取得時刻,以距離為檢測條件,判斷其他機器人和動態(tài)OBS是否與本機器人當前規(guī)劃段相沖突,有,則置標志,并返回與本機器人相沖突的最近的OBS信息.
(6)動態(tài)子目標點選取 Dynamic_Subgoal():根據(jù)動態(tài)沖突預測的結果,按照一定原則,選取子目標點.
3.1.3控制子系統(tǒng)
控制子系統(tǒng)的任務就是實時地接收控制命令,驅動伺服系統(tǒng)完成目標跟蹤的任務.在此,我們只給出規(guī)劃子系統(tǒng)和底層伺服子系統(tǒng)的接口模塊. 驅動執(zhí)行 Excution():實時地接收規(guī)劃結果,將其轉化成駛向子目標點的各種執(zhí)行動作.
3.1.4通信子系統(tǒng)
由于目前使用的各種傳感器還不能提供足夠的關于其他機器人和環(huán)境的實時信息描述,所以通信成為實現(xiàn)多機器人合作的關鍵,是系統(tǒng)動態(tài)運行過程中獲取信息的最基本手段,也是一種高效的信息交互方法.根據(jù)任務要求,我們建立了局域網平臺,并分別從同步和異步Socket類派生了對象,在傳輸方式上也采用流式和數(shù)據(jù)報兩種方式.因其功能較為復雜,在此只給出主要的功能模塊.
(1)等待接收初始化消息和任務命令 RInitInfo():機器人首先創(chuàng)建流式Socket,再建立與管理員和其他機器人的點對點的連接,最后等待接收管理員傳送的初始化消息和任務命令.
(2)等待接收同步信號 RSyncSignal():接收到管理員傳來的初始化信息和任務命令后,機器人自動完成數(shù)據(jù)加載,并完成自身的全部初始化,等待接收同步啟動信號.
(3)收/發(fā)協(xié)商數(shù)據(jù) Recieve/Send():機器人啟動運行后,需要與其他機器人交互信息完成合作.在每個采樣周期都廣播發(fā)送機器人的當前位置狀態(tài)數(shù)據(jù);當檢測到動態(tài)沖突后,相互沖突的機器人就以點對點的方式分送協(xié)商數(shù)據(jù),安全高效.
3.2管理員分系統(tǒng)
本系統(tǒng)中的管理員不同于集中式系統(tǒng)中的角色,它不做規(guī)劃和決策,只完成一些輔助功能:圖形仿真環(huán)境設置、初始化機器人(數(shù)據(jù)加載)、發(fā)送人工干預命令、圖形顯示、信息接收存儲等.
(1)環(huán)境設置 Set_Env():可采用三種方式(讀數(shù)據(jù)文件、對話框交互和鼠標點取)來設置圖形仿真環(huán)境(主要包含車、障礙及場景等),操作靈活,使用簡單.
(2)加載機器人初始化數(shù)據(jù)InitRobot():采用流式Socket建立和各機器人點對點的連接,然后向各機器人發(fā)送初始化信息和任務命令,完成數(shù)據(jù)加載.
(3)接收人工干預命令Command():能夠實時地接收人工干預命令,并即時地完成命令下達.
(4)發(fā)同步信號 SyncSignal():給各機器人發(fā)同步啟動信號,啟動機器人系統(tǒng)開始運行.
(5)接收并存儲數(shù)據(jù) CurData():周期性地接收各機器人的廣播數(shù)據(jù),存入一定的數(shù)據(jù)結構.
(6)圖形顯示和復演 Display():實時地顯示各機器人的運動狀態(tài),以利于觀察和控制實際系統(tǒng)的運作,且能在事后依據(jù)存儲的數(shù)據(jù),將現(xiàn)場及機器人完整的運動過程復現(xiàn).
4、仿真系統(tǒng)面向對象的程序實現(xiàn)
我們在局域網平臺上,按照C/S模型進行系統(tǒng)編程實現(xiàn).選用了面向對象的程序設計語言Visual C++ 5.0,共設計了九個類,其中兩個主類:管理員類Manager和機器人類Robot,Robot類中又包含Agent、Communication 、Sensor、CCD等七個子類,Agent類的成員函數(shù)對應于規(guī)劃和控制執(zhí)行子系統(tǒng),Communication類對應于通訊子系統(tǒng),其余的子類與知識信息收集子系統(tǒng)相關,是為真實系統(tǒng)預留的接口.Manager類的成員函數(shù)對應于管理員分系統(tǒng).利用面向對象技術設計實現(xiàn)的系統(tǒng)原型,易于修改和移植,且結構清晰、自然,貼近真實系統(tǒng).
5、小結
近年來多機器人協(xié)作問題已成為領域內的研究熱點.本文旨在設計實現(xiàn)一個試驗系統(tǒng),首先對多機器人的體系結構與合作機制進行了探討,然后針對具體任務和環(huán)境,對多機器人系統(tǒng)的結構和功能進行了模塊化分解,最后利用面向對象技術給出了系統(tǒng)原型,并通過仿真系統(tǒng)分析系統(tǒng)設計方案的可行性,逐步向建立實際系統(tǒng)過渡。
責任編輯:gt
-
機器人
+關注
關注
213文章
30898瀏覽量
221169 -
仿真
+關注
關注
54文章
4451瀏覽量
137908
發(fā)布評論請先 登錄
機器人系統(tǒng)的模塊化設計和仿真研究
評論