APP下载

多Agent自主系统结构及其在分离模块航天器中的应用

2013-05-14

航天控制 2013年2期
关键词:航天器容器运算

颜 军 李 勇

1.北京控制工程研究所,北京 100190 2.中国空间技术研究院,北京 100094

随着航天任务复杂度的提高,航天器需要自主规划并执行命令,即航天器接受地面的高级任务目标,而在航天器的处理器上,根据当时的状态自主完成具体的目标-任务分解及时间、资源调度,并在执行过程中,不断根据实施的情况和环境的变化做出合理的调整,最终完成目标任务。对于多个航天器配合的任务尤其需要自主运行能力。美国国防高级研究计划局提出了“F6”(Future, Fast, Flexible, Fractionated, Free-Flying)分离模块航天器概念项目[1],其目的是将功能结构复杂的大卫星分解为若干小的卫星,每个小卫星是一个分离的模块。小卫星具有基础的平台功能和某些特定的资源和功能,这些小卫星在一个小范围内(比如几百米)自由飞行,通过无线通信交换信息,协同工作。这就需要适应分离模块卫星的分布协同的自主运行系统,而对于多Agent系统具有分布、并行、自主、交互等特点,适合于构建这样的系统。

1 Agent简介

Agent是一个计算实体,拥有一定的计算资源,可存在于同一处理器中,也可分布于系统各组成部分的不同计算处理器中,多个Agent之间存在一定拓扑结构形式的组织,Agent之间可以通过消息进行通信,通过Agent的协调合作可以完成共同的任务目标。

Agent的中文译法有意译“主体”、“智能体”和音译“艾真体”等。本文认为广义的Agent可译为“意主体”,和Agent发音比较接近,而且具有意愿、意图、自主、主动等方面符合Agent特性的含义;而狭义的具有智能的Agent,可译为“意智体”,以凸显智能的含义。

多Agent技术已经在无人飞行器、潜水器、航天器等多个领域都被广泛应用来实现多个分布系统的实时交互配合。

2 面向航天的自主运行系统结构及特色分析

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主要完成执行的功能并做出反馈。

3 基于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组织提供标准的通信接口。

4 多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组织,这一点在仿真系统中表现得尤为明显。

5 规划Agent的内部结构

规划Agent内部的结构见图4,主要由知识处理、状态处理、规划、规划输出、交互协调、进程控制几个部分组成,另外还包含知识库、状态库、计划库等数据库。系统在Agent之间使用统一的接口界面,由执行Agent来处理具体的功能调用接口。

图4 规划Agent的内部结构

知识处理是将知识描述文本进行处理,转化为知识库中的知识数据,一般只在初始阶段或知识进行更新时才使用,角色定义及其变化也在知识库中进行保存。状态处理是基于执行层提供的状态信息处理和更新状态库,状态信息也可以在规划Agent之间进行传播。状态更新可能会发现系统当前状态与计划不相符合,这就需要规划Agent调整计划,必要时还要与其他规划Agent进行协商。

规划是依据知识库中的规划知识对任务进行目标分解,解决时间和资源约束,并考虑当前状态,形成计划。规划的过程中还要根据需要与其他规划Agent进行协商,使用运算Agent进行专业的计算和优化。规划的中间结果和形成的计划都由计划库存储和管理。规划输出是在每个规划周期内向执行Agent提供计划方案,类似IDEA的Plan Runner或IXTET-EXEC的Temporal Executive。

交互协调是负责Agent之间进行任务、协商等交互活动的信息和进程的管理,比如管理任务队列、协商队列,协商的回复处理等。进程控制负责状态处理、规划、协商、规划输出这几个进程之间的协调运行。

6 多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的种类。

7 总结

本文就面向航天任务的自主运行系统的层次结构进行了分析和比较,结合自主运行系统的层次结构和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.)

猜你喜欢

航天器容器运算
2022 年第二季度航天器发射统计
Different Containers不同的容器
重视运算与推理,解决数列求和题
有趣的运算
难以置信的事情
2019 年第二季度航天器发射统计
2018 年第三季度航天器发射统计
2018年第二季度航天器发射统计
“整式的乘法与因式分解”知识归纳
拨云去“误”学乘除运算