顏 軍 李 勇
1.北京控制工程研究所,北京 100190 2.中國空間技術研究院,北京 100094
隨著航天任務復雜度的提高,航天器需要自主規劃并執行命令,即航天器接受地面的高級任務目標,而在航天器的處理器上,根據當時的狀態自主完成具體的目標-任務分解及時間、資源調度,并在執行過程中,不斷根據實施的情況和環境的變化做出合理的調整,最終完成目標任務。對于多個航天器配合的任務尤其需要自主運行能力。美國國防高級研究計劃局提出了“F6”(Future, Fast, Flexible, Fractionated, Free-Flying)分離模塊航天器概念項目[1],其目的是將功能結構復雜的大衛星分解為若干小的衛星,每個小衛星是一個分離的模塊。小衛星具有基礎的平臺功能和某些特定的資源和功能,這些小衛星在一個小范圍內(比如幾百米)自由飛行,通過無線通信交換信息,協同工作。這就需要適應分離模塊衛星的分布協同的自主運行系統,而對于多Agent系統具有分布、并行、自主、交互等特點,適合于構建這樣的系統。
Agent是一個計算實體,擁有一定的計算資源,可存在于同一處理器中,也可分布于系統各組成部分的不同計算處理器中,多個Agent之間存在一定拓撲結構形式的組織,Agent之間可以通過消息進行通信,通過Agent的協調合作可以完成共同的任務目標。
Agent的中文譯法有意譯“主體”、“智能體”和音譯“艾真體”等。本文認為廣義的Agent可譯為“意主體”,和Agent發音比較接近,而且具有意愿、意圖、自主、主動等方面符合Agent特性的含義;而狹義的具有智能的Agent,可譯為“意智體”,以凸顯智能的含義。
多Agent技術已經在無人飛行器、潛水器、航天器等多個領域都被廣泛應用來實現多個分布系統的實時交互配合。
RAX[2]是美國NASA開發的遠程自主運行系統,以RA(Remote Agent)[3]的形式,實現了自主運行,在DS-1上進行了數日的實驗。RAX的系統結構分為規劃層、執行層和功能層,如圖1所示。功能層是傳統的航天器控制系統。規劃層的任務管理器負責管理一個長期的任務列表,將當前規劃時段的任務交給規劃調度器進行批處理方式的規劃;規劃專家根據執行器的執行情況和需求產生新的任務,并且為規劃調度器提供一些專業問題的解答。執行層的執行器執行計劃,并反饋當前系統狀態;模式識別與恢復基于模型來識別當前系統的狀態,如果發生偏差,則產生恢復指令交給執行器執行。RA系統的結構形式是具有規劃調度能力的自主運行系統的基本結構形式。

圖1 RAX系統組成結構
ASPEN[4]/CASPER[5]是JPL開發的規劃系統,在EO-1衛星飛行中進行了自主運行實驗。CASPER使用的是以反復修補(Iterative Repair)為特色的連續規劃,系統中規劃、執行、狀態估計模塊交替運行,同步模塊協調幾個模塊的數據同步和運行次序。只要提供當前狀態集、當前目標集和當前計劃,規劃工作可以從任意時刻開始,并以一個小的時間間隔(秒級)不斷更新。規劃的同時還可以通過不同的偏好指標來不斷改進計劃的性能。
IETXT-EXEC[6]的特色在于每個執行周期內的感知-規劃-動作的精確控制和跨多個周期的慎思規劃,為同時解決實時響應與慎思規劃提供了十分有益的方法。
CLARAty[7]系統主要特色是通過提供一個標準而豐富的功能層,使底層不同的硬件和上層的規劃系統配合起來工作。CLARAty系統的觀點是,系統的粒度不是簡單的隨功能-執行-規劃這樣的層次上升而加大,功能層既提供了底層的接口,也提供了可以完成復雜工作的高級接口,因而規劃也可以深入到更為細節的層次。
前面介紹的自主運行系統,RA系統引入了Agent的概念,但還沒有使用多Agent的方法。多Agent系統的引入,是從系統的功能模塊開始的,比如OA系統[8-9]中的系統等。這種多Agent系統,一般是對特定的應用場合,將系統分解為若干個相互配合工作的模塊Agent,使模塊增強了自主性和交互性,并對這些Agent進行管理(比如OA系統),使這些Agent的組織具有靈活性。這些系統有一定的規劃和優化能力,但并未使用搜索、調度等規劃方法。
從解決時間和資源約束的角度出發,多Agent的自主運行系統,是依靠多個Agent的交互配合,完成復雜分布系統的規劃調度問題的系統。這樣的系統有IDEA[10],IDEA由RA發展而來,將系統分解為多個相互配合的Agent,每個Agent具有相同的結構、描述方法和運行方式,從而簡化了Agent的設計。系統結構見圖2所示,上層的Agent稱為控制Agent,下層的Agent稱為受控Agent。Agent的目標寄存器接收上級發來的目標,在本級進行分解和規劃,產生下一級的任務,寫入下級的目標寄存器,成為下級系統的目標。系統可以有多層Agent結構,進行逐級分解。這種結構形式的多Agent系統的組織關系和結構還是相對簡單和固定。

圖2 IDEA系統組成結構
針對多航天器系統的應用場景,其他一些分層結構的多Agent系統出現了,如文獻[11-12]等,它們大多采用了編隊級規劃Agent,單星級規劃層Agent,衛星子系統級Agent三級來實現。編隊級規劃Agent負責編隊任務分解,單星級自主層對衛星各子系統的工作進行分配協調并進行故障處理,而子系統級Agent主要完成執行的功能并做出反饋。
對于多航天器系統,特別是分離模塊航天器的應用,需要多Agent系統具有靈活的組織形式,可以在使用的過程中不斷進行組織的演變和擴展,這種演變既包括衛星內部Agent組織的更新,也包括衛星間組織的增減和更替。由于分離模塊航天器個體數量多,要求各構成系統的Agent具有良好的通用性,以方便快速開發和構建各分離模塊的系統。
針對編隊衛星、分離模塊衛星系統分散而又協同工作的特點,設計了基于Agent的自主運行系統(Agent-Based Autonomous Running System, ABARS) 。系統結構采用了基于多Agent組織的分層結構,如圖3所示。

圖3 基于多Agent的自主規劃運行系統層次結構
真實的系統由多個“個體”組成,個體是物理上的實體,包括硬件和軟件,比如1顆衛星、1個機器人。個體中的一部分軟件被稱為“Agent容器”, 它包含和使用多種類型的Agent,負責多Agent系統的組織管理。其中具有規劃功能的Agent稱為“規劃Agent”、其他的類型還有“專家Agent”、“運算Agent”、“執行Agent”等。
系統的一個執行子系統被描述為一個“配置屬性”,執行子系統特定的取值被稱為“配置方案”,簡稱“方案”。方案還可以配有參數,類似RA中整合了動作與狀態的“token”概念,比如“衛星的姿態指向”是一個配置屬性,“指向鎖定”是一種方案,而“在t1時刻到t2時刻指向鎖定g方向”是該方案的一個配有參數的具體實例。與之類似,系統的資源描述為“資源屬性”,資源屬性的取值一般就是數值。
系統上層是規劃層,其主要組成部分是具有一定組織結構的多個規劃Agent。由面向航天應用的領域特點決定了這里使用的是解決時間和資源約束的規劃Agent。這些規劃Agent具有相同結構和基礎功能,它們的不同在于具有不同的領域知識,領域知識是通過知識描述文本來提供的,該文本使用統一的規劃知識描述語言。通過將一個標準的規劃Agent和一個規劃知識文件相結合,可以使各規劃Agent具有特定的角色和能力來完成系統中部分的規劃職能。規劃Agent的通用性,可以方便系統的構建和驗證。
規劃Agent的輸入是任務,任務由系統用戶或其他規劃Agent以消息數據包的形式發送而來,其中包含時間要求和任務參數。規劃Agent根據自身的領域知識,對任務進行分解和規劃調度,對時間和資源進行安排。多個規劃Agent形成具有一定層次關系的組織,上級規劃Agent分解輸出的子任務成為下級規劃Agent的任務。規劃Agent的輸出計劃方案,交給執行Agent來執行。規劃Agent之間可以是命令關系,也可以是協商關系,下級根據資源及狀態情況對上級的任務安排給出反饋,從而實現協同的規劃。相比IDEA中Agent之間的關系,這里規劃Agent間的關系更能體現Agent自主與協同相結合的特點,Agent之間的關系也更加靈活。
規劃Agent具有限定的定義和通用的功能,為了解決特定的規劃問題,可以使用專家Agent。一類專家Agent使用特有的知識描述方法和搜索引擎,用以解決特定領域的規劃問題,比如路徑規劃問題,科學觀測的規劃問題,航天器自身維護的規劃問題等。RAX中的規劃專家就可以歸入專家Agent的范疇。另一類專家Agent可以根據當前系統的狀態和獲取的數據自主的產生新目標,交給規劃Agent來進行規劃,比如ASE中根據觀測的結果對下一步的觀測進行規劃。系統中高層級的狀態診斷與恢復也可以通過專家Agent來實現,根據當前所知的狀態信息對可能的故障,依據知識模型,使用搜索推理方法,進行分析判斷,給出恢復的任務建議。專家Agent輸入是必要的系統的狀態信息,還可能有高級的需專業規劃的目標,輸出是給規劃Agent的任務目標。
規劃Agent的運算方式主要是搜索引擎使用領域知識進行搜索,而規劃Agent需要專業的計算能力剝離出來,由運算Agent來實現。運算Agent提供運算功能接口給規劃Agent調用,調用采用統一的接口,具體的調用參數和返回參數在規劃Agent的知識描述文本中進行說明。運算Agent與規劃Agent是同步的,即規劃Agent發出計算需求給運算Agent,等待運算Agent返回的計算結果再繼續下面的工作。相比CASPER系統中直接調用C語言程序模塊的方式,這里的運算Agent易于組織和更新。
通過這3類Agent的設計,可以將基于時間和資源的規劃、專業領域的規劃,以及專業的運算和優化這3個部分進行相對獨立的開發,以規劃Agent的組織為主要架構,另外2類Agent通過標準的Agent交互接口,根據需要配合在一起使用,就可以方便快速地建立起特定的規劃系統了。
規劃Agent形成的計劃提供給執行層,執行層由執行Agent構建,執行 Agent是規劃Agent和功能層間的接口,使規劃Agent的輸出實現統一。計劃就是各配置屬性在特定時段的方案集合。方案是預先制定的,可以理解為“控制方案”或“執行預案”,可能配有若干參數,在執行層有這些方案的執行方法,包括出現一些局部問題時的處理方法。執行層根據方案調用功能層的功能,形成閉環反饋,使系統按照方案來運行,出現偏差及時進行恢復。所以執行層可以在相當程度上具有魯棒性,當出現無法克服的問題時,向上級反饋故障,由規劃層進行進一步的故障診斷及進行新的規劃。
功能層為執行層提供底層硬件功能接口和數據反饋。功能層可以提供基礎的閉環控制,也可以提供豐富而復雜的功能,甚至跨個體的協作功能,就如CLARAty功能層設計中實現的那樣。當功能層的功能強大的時候,執行層甚至規劃層可以相對弱化。但功能層受其過程性代碼的限制,難于處理多種因素交織的復雜情況,且一般只能進行局部優化。
執行Agent將功能層反饋的數據進行處理,形成配置屬性、資源屬性以及一些參數的當前狀態或數值,根據需要將這些以消息數據包發送給指定的規劃Agent、專家Agent和運算Agent。
還有一類“通信Agent”,圖3中沒有標示,負責實現跨個體(例如多航天系統中的單個航天器)的通信,為多Agent組織提供標準的通信接口。
分離模塊衛星,可以采用多次發射的方法逐次構成衛星系統,并可以根據需要增加、替換、刪除系統中的分離模塊,所以要求系統結構要可以靈活的進行組織變化。多Agent系統具有這樣的能力,這里使用了Agent容器和Agent兩層結構來實現這種組織。
容器(Container)這個概念是從基于組件的軟件開發方法引入的,包含和使用組件模塊的程序稱為容器。包含和使用Agent這種特定軟件模塊的容器程序就是Agent容器。Agent容器之間通過個體間的有線或無線的物理網絡相連接,每個Agent容器有唯一的字符串ID和物理網絡地址,容器之間建立樹形的網絡廣播路徑。每個Agent容器加入系統時,指定一個根節點Agent容器而加入網絡,同時廣播自己的ID、類型、角色和物理地址等屬性給系統中的其他Agent容器,每個Agent容器維護一個其他Agent容器屬性的列表,同時實現與其他Agent容器的通信。
Agent容器是Agent組織的基礎環節,它提供Agent的配置管理,通過Agent列表實現添加、刪除、升級等一系列基礎而靈活的功能。每個Agent可以有其配置文件、知識文件,Agent容器記錄其中每個Agent的相關文件,記錄各Agent的狀態和信息,Agent容器可以將這些Agent的信息作為Agent容器的配置文件加以保存和恢復。
Agent容器中的Agent有唯一的字符串ID,通信時通過Agent容器和Agent兩級ID相結合來唯一確定一個Agent,這樣可以方便Agent的ID命名和系統的組織。Agent之間通過Agent容器實現交互,如果目標是內部的Agent,則Agent容器直接將消息發送給目標Agent,如果目標是其他Agent容器中的Agent,則Agent容器找到目標Agent容器的地址將消息發送過去,而接收方Agent容器再將消息轉交給目標Agent。
通過Agent容器的配置文件以及Agent的配置文件和知識文件,使Agent容器和Agent具有通用性和靈活性。可以在規劃Agent的知識文件中進行角色定義,實際使用時,角色與真實的Agent建立對應關系,在類似分離模塊衛星這樣的應用中,當真實系統的構成發生了變化時,只要調整角色與真實 Agent之間的對應關系即可適應這種變化。
對于一個真實的系統,規劃Agent組織的構成,可以采用編隊級、星級、分系統級這樣層次的方式,也可以根據系統的計算資源的分布和系統模塊的劃分來靈活進行安排。運算Agent要根據其所需要的數據信息、運算能力進行劃分,應與調用它的規劃Agent在同一計算處理器中,以保證調用的及時返回。執行Agent的劃分要考慮與實際功能層的接口,執行Agent與規劃Agent可以不是一對一的關系。一般只有規劃Agent與其他Agent容器中的規劃 Agent發生交互,其他類型的Agent沒有跨 Agent容器的交互。
在其他的多Agent系統中,與Agent容器具有類似功能的有“管理Agent”和OA系統中的“郵局(Post Office)”。Agent容器不是Agent社會中的一個角色,而是提供Agent生存和交互的支撐環境,包含和管理作為組件的 Agent,所以不同于管理Agent。Agent容器包含了OA中的郵局負責的Agent注冊和通信的功能,還管理Agent的配置屬性,可以根據配置文件方便的建立和恢復Agent容器中的Agent組織,這一點在仿真系統中表現得尤為明顯。
規劃Agent內部的結構見圖4,主要由知識處理、狀態處理、規劃、規劃輸出、交互協調、進程控制幾個部分組成,另外還包含知識庫、狀態庫、計劃庫等數據庫。系統在Agent之間使用統一的接口界面,由執行Agent來處理具體的功能調用接口。

圖4 規劃Agent的內部結構
知識處理是將知識描述文本進行處理,轉化為知識庫中的知識數據,一般只在初始階段或知識進行更新時才使用,角色定義及其變化也在知識庫中進行保存。狀態處理是基于執行層提供的狀態信息處理和更新狀態庫,狀態信息也可以在規劃Agent之間進行傳播。狀態更新可能會發現系統當前狀態與計劃不相符合,這就需要規劃Agent調整計劃,必要時還要與其他規劃Agent進行協商。
規劃是依據知識庫中的規劃知識對任務進行目標分解,解決時間和資源約束,并考慮當前狀態,形成計劃。規劃的過程中還要根據需要與其他規劃Agent進行協商,使用運算Agent進行專業的計算和優化。規劃的中間結果和形成的計劃都由計劃庫存儲和管理。規劃輸出是在每個規劃周期內向執行Agent提供計劃方案,類似IDEA的Plan Runner或IXTET-EXEC的Temporal Executive。
交互協調是負責Agent之間進行任務、協商等交互活動的信息和進程的管理,比如管理任務隊列、協商隊列,協商的回復處理等。進程控制負責狀態處理、規劃、協商、規劃輸出這幾個進程之間的協調運行。
從多Agent自主運行系統的設計中可以看出,通過Agent容器的組織方式以及對Agent的管理滿足了分離模塊系統的靈活組織和交互的需求。不同類型的Agent以及知識文件、配置文件的使用滿足了通用性強、易于構建的需求。系統中的個體對應一顆分離模塊衛星,分離模塊衛星的內部系統對應多個Agent,通過多Agent組織來完成多個分離模塊衛星的協同工作。
分離模塊航天器系統的關鍵技術涉及很多方面,比如小型通用部件技術、抗干擾的無線通信技術、多星的導航技術等,這里討論構造其自主運行系統所涉及的關鍵技術內容,可以分為結構描述、算法引擎、組織協調幾個層面,如表1所示。

表1 自主運行系統的技術構成
要設計自主運行系統,以上各方面的技術要素之間相互影響相互配合,各部分技術實現方案相互關聯,要綜合考慮才能制定合理的系統方案。其中系統結構和模型描述是重要基礎,而規劃、協商和調整相互交織的進程協調是難點。
此外還要建立可以針對不同場景進行構建和組織的仿真系統,實現Agent系統自主運行系統的特色和功能,進行實驗和驗證,為實際應用奠定堅實的基礎。
目前已經在Windows操作系統下構建了一個多Agent仿真系統AgSimu。Agent容器由一個單文檔的應用程序ApCont來實現,用應用程序中具有獨立線程的COM組件來實現Agent,Agent之間可以并行計算。
該多Agent仿真系統的開發思路借鑒了Matlab中的Simulink模型構建及組織方法。一個 Agent容器程序的實例包含多個Agent,對真實系統中的一個個體進行仿真。可以通過Agent菜單在個體中添加各類Agent,各Agent有自己的人機界面,可以對其進行個性化的配置,通過狀態窗口可以觀察各Agent的實時運行狀態。個體中各Agent及其配置屬性可以以Agent容器配置文件的方式加以保存,通過打開Agent容器配置文件可以方便地重建模型。
Agent容器程序可以運行于不同的計算機上,通過網絡進行通信,也可以多個Agent容器程序運行在同一臺計算機上,其進程相互獨立。Agent之間使用消息數據包經由Agent容器進行通信,Agent容器及Agent還可以依據其角色等屬性進行交互。
各類Agent組件可以單獨開發,各類Agent的通信接口是統一定義的,組件可以方便地加入容器程序以實現特定的功能。規劃Agent是通用的組件,專家Agent和運算Agent是依據不同算法的專用組件,執行Agent和通信Agent組件根據接口的不同而開發。容器程序可以更新,通過ini文件來更新可選Agent的種類。
本文就面向航天任務的自主運行系統的層次結構進行了分析和比較,結合自主運行系統的層次結構和Agent組織交互方法,提出了基于Agent的自主運行系統的方案,就其層次結構及組織方式進行了具體設計。使用了基于時間和資源約束的規劃Agent、面向特定領域的專家Agent、提供專業運算能力的運算Agent相結合的Agent系統,對規劃Agent的內部結構進行了進一步的設計,并建立了相應的仿真系統。系統的設計突出了靈活組織和易于構建的特點,適合分離模塊衛星的應用需求。
針對未來分離模塊衛星的實用需求,需要進一步研究的關鍵技術有:1)適應航天應用及多Agent協同需求的規劃知識及組織交互關系的描述方法;2)能夠發揮多Agent分布協作特點的規劃任務劃分方法及協商規劃技術;3)將體現分布計算的多Agent仿真系統與其他仿真系統相互配合、實時交互,實現多系統聯合仿真的分布交互仿真技術。
[1] 劉豪,梁巍. 美國國防高級研究局F6項目發展研究[J].航天器工程,2010,19(2):92-98.(LIU Hao, LIANG Wei.Development of DARPA’S F6 Program[J].Spacecraft Engineering, 2010,19(2):92-98.)
[2] Jonsson A K, Morris P H, Muscettola N, et al.Planning in Interplanetary Space:Theory and Practice [J].Artificial Intelligence Planning Systems, 2000:177-186.
[3] Muscettola N, Nayak P P, Pell B, et al.Remote Agent:to Boldly Go Where No Ai System Has Gone Before [J].Artificial Intelligence, 1998,103:5-47.
[4] Fukunaga A, Rabideau G, Chien S, Yan D.Towards an Application Framework for Automated Planning and Scheduling [C].Intl.Symp.of Artificial Intelligence, Robotics & Automation for Space, Tokyo, Japan, July 1997.
[5] Chien S, Knight R, Stechert A, et al.Using Iterative Repair to Improve the Responsiveness of Planning and Scheduling[C].The 5thInternational Conference on Artificial Intelligence Planning and Scheduling, Breck-enridge, CO, April 2000.
[6] Lemai S.IxTeT-eXeC Planning Plan Repair and Execution Control with Time and Resource Management[D].Ph.D.Dissertation, LAAS-CNRS and Institut National Polytechnique de Toulouse, France.
[7] Volpe R, Nesnas I, Estlin T, et al.The CLARAty Architecture for Robotic Autonomy[C].2001 IEEE Aerospace Conference, Big Sky, Motana, March 2001.
[8] Mueller J B, Surka D M, Udrea B.Agent-Based Control of Multiple Satellite Formation Flying[C].The 6thInternational Symposium on Artificial Intelligence, Robotics and Automation in Space: A New Space Odyssey, Montreal, Canada, June 2001.
[9] 吳云華,曹喜濱,鄭鵬飛,等.基于Multi-Agent的編隊飛行衛星體系結構研究[J].系統仿真學報,2007, 19(18): 4284-4287.(WU Yunhua, CAO Xibin, ZHENG Pengfei, et al.Research on Architecture for Formation Flying Satellites Based on Multi-Agent[J].Journal of System Simulation, 2007, 19(18): 4284-4287.)
[10] Muscettola N, Dorais G A, Fry C, et al.IDEA: Planning at the Core of Autonomous Reactive Agents[C].The Workshops at the AIPS-2002 Conference, Tolouse, France, April 2002.
[11] 張曉光,代樹武.基于多Agent的航天自主運行系統[J].計算機工程,2008, 34(6): 243-245.(ZHANG Xiaoguang, DAI Shuwu.System of Spacecraft Autonomy Based on Multi-Agent [J].Computer Engineering, 2008, 34(6): 243-245.)
[12] 張健,戴金海.面向多星協同的衛星自組織自主控制體系結構[J].國防科技大學學報,2005,27(5):95-98.(ZHANG Jian, DAI Jinhai.A Novel Satellite Autonomy Architecture with Self-organization for Multi-satellite Coordination [J].Journal of National University Of Defense Technology, 2005,27(5):95-98.)