关键词:自主水下潜器;自主控制; ECA规则;规则库;主动数据库
1 概述
在海洋环境下工作的机构中,水下机器人及自主水下潜器(AUV)的开发和利用无疑是一个相当具有潜力的发展方向。海洋环境的不确定性对水下机器人及自主水下潜器(AUV)提出了更高的智能性、机动性等要求。AUV要实现在不同的工况下自主控制,单一的控制规则显然已经不能满足我们的需求。我们希望AUV的控制系统工作在最佳的工况下,实现最好的效益。这就给AUV的运动控制带来了一定的困难。常规的解决办法是对整个系统进行自适应控制,或者对控制参数进行现场寻优,但是这种控制方法的针对性很强而且比较单一,成本很高且不够灵活。所以有必要建立一个含有多控制规则并能够调根据任务使命和海况变化现场切换调用不同控制规则的控制规则库。
2 AUV控制规则库对控制的主动需求
通过对自主水下潜器(AUV)工作过程的了解和对其工作过程的不确定性分析。在动力装置运行过程中,自主水下潜器对控制过程中的主动需求如下:
1) 实时监控
系统实时采集AUV动力装置的运行数据,随时掌握装置的运行状况。包括状态监控、性能监控、功能监控、安全监控,以及故障监控等等。将运行特定数据记录在数据库当中,并与控制规则库中的事件参数进行比较,通过对运行过程的关键数据的监控和分析,将问题反馈给AUV的使命规划层。
2) 对出现的问题及时进行处理
对出现的问题(或使命)及时进行响应,能够主动根据使命的需求为AUV控制器匹配控制参数,然后进行控制参数与控制算法相结合形成相应的控制规则。从而满足使命规划层对行为层进行控制规则的调度与切换,确保动力装置的运行状态保持最佳。
3) 自适应,自组织功能
当运行状态发生了某一很大程度的变化,而规则库中没有与之相匹配的规则时,控制系统可以实时地进行寻优或者是通过自学习对某些控制规则进行修正。之后规则库将寻优之后或修正后的控制参数重新组织并且编辑入库,使得控制规则库可以扩充规则数量。
4) 用户可以添加整定好的规则入库。
在完成控制规则库的时候,可以咨询某方面的专家,事先向控制规库中添加已经整定好的控制规则和控制参数以丰富规则库的规则容量,减少系统以后运行的开支。
考虑到控制规则库在自主水下潜器结构里的重要性,这些主动性功能虽然表现形式各不相同,但都可采用主动数据库所提供的“主动性”以统一的机制来实现。
3 AUV运动控制规则库系统
自主水下潜器(AUV)运动控制系统是由事件(使命)驱动的,在控制系统中利用主动数据库技术,采用事件驱动的规则库,根据应用需要预先定义各种事件及其相应动作,允许不同的事件引发不同的动作。一个主动控制规则库系统功能上由一个传统数据库系统和一个事件驱动的知识库和相应的事件监视器组成。
知识库是一组由事件驱动的知识的集合,称为“事件库”。每一项知识表示在相应的事件发生时,如何来主动地执行其中包含的由用户预先设定的动作。事件监视器是一个随时监视知识库中的事件是否已经发生的监视模块,一旦监视到某事件已经发生时就主动地触发系统,按知识库中指明的相应知识执行其中预先设定的动作。可见,知识库中知识表示形式的不同,将获得各种不同的主动行为,在目前常采用事件驱动的“事件—条件—动作”规则 (ECA规则)表示这种知识。
1)ECA规则的设计
主动数据库最常用的方法是将规则系统与数据库技术相结合,以增强数据库的主动功能。ECA规则的含义为:当某一特定事件发生的时候,系统将检查规定的条件是否成立。如果这些条件满足,系统会触发相应的动作完成预先设定的工作。E——当事件发生时相应规则作出反应(可以是原子事件,也可以是一系列原子事件的复合);C——条件检查事件发生时前后情况; A——动作描述是如果相关事件发生和条件满足时通过规则执行任务。主动控制规则库工作原理如图l所示。
2)规则模型
ECA规则描述事件、条件、动作以及它们之间的耦合方式。事件部分前面已经说明,(主要是原
子事件或者复合事件),条件一般是一组数据库查询或一组逻辑表达式,动作部分可以是一组数据库操作或者用户第一的特定操作。ECA规则的耦合方式有E—C耦合和C—A耦合,前者描述规则的条件何时求值,后者描述条件为真时何时执行动作。这两种耦合方式及其组合给ECA规则带来了很大的灵活性,增强了规则的表达能力。事件驱动的“事件—条件—动作”有如下的一般方式:
RULE<规则名>[(<参数>……)]
WHEN(事件表达式)
IF<条件1> THEN<动作1>;
…………
IF<条件n> THEN<动作n>;(n 1)
END RULE[<规则名>]
图1.主动控制规则库工作原理图
这些主动规则受系统中的一个事件监视器的监视控制,该事件监视器主动的时刻监视着事实库。这样,用户可以通过设置各种不同的事件驱动规则,以一种统一的机制来实现诸多主动处理功能,从而满足各种客观的需求。
3)主动数据库的实现
使用嵌入程序语言来实现系统主动功能,按传统的方法设计一个接口把数据库的操作嵌入到应用程序中。对该规则库系统的操作是在主程序当中嵌入SQL语言来对数据库进行操作。由于在系统运行程序与数据库之间建立两种语言的接口,而这是相对比较容易实现的。
4)事件监视器的实现机制
实现主动数据库系统的关键在于实现一种有效的事件监视器。一方面它应有效地检测出各种事件的发生,另一方面不能因为事件监视器的加入运行而使原应用程序的执行速度发生太大地变化。这往往需要软硬件结合起来解决问题,特别当事件是一些中断性质的事件时,必须有相应硬件的支持。下面提供几种可供选择的实现机制。
(1)在单处理器系统中,事件监视器,不妨用在操作系统控制下的一个优先级高的独立进程来实现,以保证它能经常地运行,起到主动监视各种事件发生的作用。在事件库被分成块儿时,应该用一个指针批示对哪个事件库进行监视运行。
(2)在多处理器系统中,它可以独立分配一个处理器来完成,这时要解决多个处理器间的通信和同步问题。
(3)事件监视器的另一种实现途径是:在数据库管理系统中当执行到所有可能发生事件的地方或在预先设定的检查点上都会产生一个中断,使机器被迫切换到事件监视器来工作,以便核实当时发生的事件是否已被用户设置在事件库中了。然后,就触发执行其后跟的规则或规则组,否则就返回继续执行。
以上几种实现机制各有利弊,—般说,后一种软硬件结合的途径对于在单处理器上实现较简单的系统可能是颇具吸引力的。专门分配一个处理器来实现事件监视系统,自然对一些大型系统而言是比较理想的。
4 具体实现举例
数据库管理系统使用微软公司的SQL Server,控制系统的主程序使用C++实现,对数据库的操作使用ADO技术来实现。ADO(ActiveX数据对象)是Microsoft面向对象的数据库访问新技术,该技术基于COM组件,具有诸多优点,如跨语言、跨平台、跨操作系统等,适用于所有非Visual C++ OLE DB访问。ADO是一个数据库编程模块,它允许OLE DB从多种语言中访问,易于使用,速度快,内存支出少和磁盘遗迹小。有关ADO技术在很多资料当中都有相关介绍,这里就不详细介绍了。
以自主水下潜器(AUV)定深PID多规则切变控制来举例,实现示意图如图2所示。AUV做定深运动的时候会根据不同的使命及海况做不同姿态的定深运动,高速的时候通常使用升降舵就可以很容易的实现;低速的时候由于舵效不明显,通常使用垂直槽道推进器下拉从而使AUV下潜;有的时候为了完成特定使命我们需要AUV做快速定深、常规定深或更复杂的定深运动等等,当遇到以上这些情况时AUV会通过事件监视器来监视决策层的使命事件以及海况等等参数,查询控制规则库并且检索与事件匹配的PID定深控制规则或者控制参数,然后与对应控制算法进行函数封装后传递给控制器执行层进行AUV定深运动控制。PID控制对应的有三个属性:Kp、Ki、Kd,这样就可以实现一个控制算法可以选择多种控制参数组,从而形成多种控制策略来满足AUV定深运动控制对多种定深规则的切变换调用。当定深PID规则库建起来的时候可以针对不同的定深规则对规则库参数进行规则的添加、修改、删除、查询检索等功能。
图2. AUV定深PID控制举例
5 结束语
主动性功能对各种过程控制系统是非常重要的。利用面向对象技术及AI技术实现,增加了规则的知识表达能力,使其表达复杂事件及复杂操作的能力更加强大,同时也提高了系统规则推理机的工作效率。因为很多控制系统要求其中的应用软件、数据采集、控制反馈等具有高度的实时性、安全性、可靠性、容错性和交互性。主动性功能虽然表现形式各不相同,但通过主动数据库提供的主动机制可以以统一的机制来实现。本文在自主水下潜器(AUV)系统水下工作自主控制系统的设计中充分考虑系统的主动需求,利用主动数据库技术实现AUV控制系统的主动功能。 规则库中每条规则名称都是专业术语,避免了产生规则名冲突,在检索调用的时候速度很快、易于操作,从而满足控制器对多控制规则的实时需求。避免了从前要编写大量的不同的控制规则算法子程序进行调用,减少了整个系统的资源占用量。解决了从前控制规则单一的问题,使AUV控制系统更合理地实地在线控制,为现场作业提供良好的工作环境。
参考资料:
[1]萨师煊,王珊.数据库系统概论(第三版).北京:高等教育出版社,2000.2
[2]周志达,吴鹤龄,林国璋,高峰.主动面向对象数据库系统中主动规则的研究.北京理工大学学报,1998年12月,第38卷 第6期