日期:2023-01-24 阅读量:0次 所属栏目:计算机应用
摘 要:态势估计是目前的一个研究重点,但是还鲜有一门态势估计的专用语言。本文通过使用编译技术、人工智能技术和三维技术等设计和实现了一门态势估计专用语言。该语言在态势估计和信息融合等领域拥有广泛的用途。
关键词:态势估计专用语言;SDL;信息融合
引言
态势估计已经成为当前信息融合的研究热点,在机器人、环境监控、敌我识别等民用和军用领域得到了广泛的应用。相对于态势估计的蓬勃发展而言,态势估计专用语言的研究在国际国内都处于刚刚起步的阶段。现在的绝大多数计算机程序设计语言都属于通用语言,例如C#、VC++等,这些语言及其开发平台本身功能十分强大,但是由于它们关注的是语言的通用性,因此在态势估计方面的能力并不是很强,例如不能直接支持推理规则的表达、不能直接支持时间空间推理等。而其它一些人工智能语言例如Clips等,则由于开发时间较早,与现在的很多流行语言或开发应用平台之间的接口较差,并且不支持态势显示。因此,鉴于态势估计的广泛应用以及现有的程序语言现状,澳大利亚的几位科学家提出了一门专用于态势估计的新语言SDL?[3]?[4],本文将对SDL语言的实现技术进行研究。
2 SDL简介
SDL(Situation Description Language)是澳大利亚Greenhill、Venkatesh、Pearce以及等科学家提出的一门专用于态势估计的新语言。SDL支持面向对象建模和对象继承,支持嵌入推理规则,支持时间空间推理,拥有多假设(HYPOTHESIS)机制。与其它一些通用语言相比,SDL更贴近人的思维,能有效减少现实世界和计算机世界之间的不一致,在构建态势估计系统方面拥有优势。目前,国内对SDL的研究还比较少。
3 SDL实现的研究
3.1 总体框架
SDL的实现具体包括SDL编译器、SDL推理系统和SDL可视化系统等三部分,可以将这三部分统称为SDL应用框架。SDL编译器是SDL应用框架的基础,它的主要任务是将SDL源代码经过词法、语法分析、语义分析等处理以后编译成目标代码(C#语言)。推理系统是SDL的核心,它为SDL中的规则、模式、态势事件等语言结构提供了支持,并且为时间推理和空间推理提供数据结构、运算符、表现形式等支持。可视化系统是SDL的对外窗口,通过它程序员可以进行态势显示、时间关系显示、空间关系显示和推理过程可视化等。
图 1是SDL应用框架对SDL源代码的处理流程。从图中可以看出,SDL源代码首先经过SDL编译器的编译形成C#代码,C#代码再经C#编译器编译以后形成可执行程序。由于SDL编译器将SDL源代码中相应的推理部分和态势显示部分转换成调用SDL推理系统和SDL可视化系统的C#代码,因此可执行程序需要在SDL推理系统和SDL可视化系统的支撑下才能运行。
图 1 SDL应用框架的处理流程
3.2 SDL编译器
SDL编译器使SDL语言不仅仅拥有对态势的描述能力,而且拥有执行能力。编译器的输入为使用SDL编写的源代码。出于减少开发时间以及借用第三方编译系统提高目标代码优化程度的考虑,选择C#作为目标代码。因此从这一点说SDL编译器有点像VS2005中的C#编译器,都是先将源代码编译成一种中间形式,然后利用第三方编译器编译成最终的可执行文件。SDL编译器拥有典型的编译器处理流程:词法分析-->语法分析-->语义分析-->中间代码生成-->中间代码优化-->目标代码生成-->目标代码优化。符号系统和出错处理贯穿于流程的始终。
在词法、语法分析的实现时,选择ANTLR进行自动代码生成。之所以不采用lex/yacc,是因为ANTLR相对于两者有很多的优点。通过定义好SDL的词法、语法规则,并且在规则中嵌入基于断言的动作,然后使用ANTLR对规则文件进行编译,就可以得到指定语言的SDL词法、语法分析器。基于断言的(predicated)动作指的是在执行动作之前,先对断言进行判断,如果为真,执行该动作,否则不予执行。存在两类断言:语义断言(semantic predicate)和语法断言(sytanx predicate)。例如fieldSelector规则。
fieldSelector: (DOT IdentRef:Ident )* ((LPAREN )=>functionSelector)? ;
fieldSelector规则是一种语法断言,分析器将试探下一个记号是否为LPAREN,如果是,那么进行回溯,开始进行functionSelector的分析。
在语义分析时,我们重点关注的是SDL类型系统。通过使用<类型操作符、类型操作数>的形式统一对SDL类型进行表达。类型操作符指出了SDL类型所属的基本类型,类型操作数则进一步给出了SDL类型的更加详细的信息。这种形式也就决定了在类型等价判断的时候,依据的是结构等价而不是名字等价。类型系统的主要操作接口有:类型构造器、类型系统初始化接口、类型增加接口、类型判等接口、类型ID发生器等。
通过使用ANTLR树生成语法,可以生成SDL的中间代码AST。在AST上,通过使用节点重用等技术,可以进一步生成DAG以进行中间代码的优化工作。目标代码的生成则主要是通过遍历DAG,按照遍历顺序进行代码生成。在SDL的代码生成过程中,需要重点考虑两类代码的“通信”问题。在SDL的MODULE中,存在两种形式的代码,一类是过程调用、加减乘除之类的代码,不妨将其称为普通代码,它们主要对应源代码中除ruleDecl外的语言元素;一类是在ruleDecl中的推理规则、假设创建等关于推理的代码,不妨将其称为推理代码。为了更好的和SDL推理系统进行交互,这两种代码的生成方式是不同的。普通代码生成的目标代码在CModuleClass类中。而推理代码生成的目标代码在CCustomerBinder类中。两个类之间的信息交互采用友元或者回调函数的方式进行解决。
为了方便编译器的调试,实现了符号系统、类型系统、中间语言等的可视化。图2和图3分别是符号系统和类型系统的可视化输出示例,从图中可以看出SDL编译器将源代码中的符号正确的加入到符号系统中。图3展示了部分SDL类型的结构表达式,类型操作符是类型系统为每个SDL类型分配的唯一ID号,所以是数字。
图2符号系统的可视化输出示例
图3 类型系统的可视化输出示例
3.2 SDL推理系统
SDL推理系统的重要功能是依据专家的知识进行当前态势理解和未来态势预测,也可以抽象为一个利用专家知识和当前已知事实对具有层次结构的复杂抽象假设(也称态势假设)进行动态分类的过程。SDL推理系统可以分为知识库、推理机、知识获取器、中间数据库和人机接口等几部分。重要的语言组成元素有事实、推理规则、模式、态
势事件、态势假说等。
事实(Fact)指的是人类对于客观世界,客观事物的状态、属性、特征的描述,以及对事物之间关系的描述。SDL以面向对象的形式等表示事实,并且提供事实的加入(NEW)、回收(Retract)等操作。
规则是知识库中以产生式形式描述的知识,是SDL最为重要的语言要素之一,规则的加入使SDL拥有智能。规则由两部分组成:前提条件和结论。SDL中存在两种规则:前向链路规则(Forward Rule)和事件规则(Event Rule),图4是规则的EBNF范式。
ruleDecl -->RULE Ident (forwardRule eventRule) END Ident;
forwardRule -->IF condList THEN statementList;
eventRule-->EVENT^ pattern WHEN cond
( activeCondition )?( inactiveCondition )?;图4 规则的EBNF范式
前向链路规则类似于一般产生式系统的规则,主要用于规则推理,condList是规则的前提条件,也称规则前件,statementList是规则的行为部分,也称规则后件。事件规则(eventRule)主要用于在满足cond条件的时候,创建pattern事件,可以用其模拟态势事件的产生和消亡。前向规则实现时主要是通过将SDL规则代码编译成调用推理引擎的相应C#代码。事件规则的实现则采用的是规则重写技术,即先将其转变成两条前向规则,然后调用前向规则的实现算法进行实现。
3.3 SDL可视化系统
可视化系统是一门现代语言非常重要的一部分,本课题通过利用OpenGL开发了SDL的三维可视化系统,可以在态势估计中直观的显示当前三维战场态势,可以形象的表示方向关系、拓扑关系,用户可以自行增减三维模型库。可视化系统中比较重要的是:地形建模、地形漫游、实体建模以及其它可视化效果。
本课题使用DEM数据进行真实地形建模。基于DEM的地形建模的基本思想是:在获取目标地形DEM数据的前提下,使用OpenGL将DEM数据可视化的显示出来,同时为了让用户逼真的体验到该地形地貌,实现了地形漫游的功能,用户可以通过键盘控制自己的行动。为了可以查看某些细节地形,可以对图像进行放大或缩小。在地形渲染中,使用了基于四叉树的LOD(Level Of Detail)算法。算法的主要思想是:将地形数据使用四叉树的形式进行管理,看得见的地方使用高细节描述,看不见的地方使用低细节描述。随着视角的变化,看得见和看不见的地方也跟着变化。因此每次需要渲染的几何单元数减少了,帧速(FPS)自然得到提高。
地形漫游的实现原理可以根据图5进行解释。图5中,a是视线方向1和x轴的夹角,b是由视线方向1变换成视线方向2增大的角度。R可以看作是人的视觉半径,其大小无关。从图中可以看出,如果需要左拐弯,那么只需增大a,右拐弯减小a,沿视线方向前进时,不需要改变a的大小,只需沿视线方向改变视点的位置。地形漫游的实现主要基于OpenGl的gluLookAt()函数。其输入为视线与y轴的夹角g_Angle(相当于90-a)、当前视点位置(g_eye[0], g_eye[1], g_eye[2]),以及改变以后的视点位置(g_look[0], g_look[1], g_look[2])。
图5 地形漫游的实现原理
三维建模也是三维态势显示的一个重要组成部分,它包括三维实体建模(例如飞机、雷达)、三维标号的表示等,其中三维实体建模是重点。为了避免对于所有的模型都需要程序员通过基本图形组合而成,可视化系统使用3DS Max模型对三维实体进行建模。在3DS模型建好以后, 可以使用Scott Ellington提供的开源类库ThreeD进行显示。
4总结
态势估计技术是信息融合中的研究热点之一,在军用和民用领域都得到了广泛的应用,但是鲜有一门态势估计的专用语言。本文通过对信息融合以及态势估计的研究,使用编译技术、人工智能技术和三维技术等设计和实现了一门态势估计专用语言SDL,在态势估计和信息融合等领域拥有广泛的用途。下一步的工作是使用SDL开发实际的态势估计系统,以使SDL得到进一步的完善和发展。
参考文献:
[1] 李伟生. 信息融合系统中态势估计技术研究[D]. 西安: 电子科技大学,2004.
[2] David Hall, James Llinas, An Introduction to Multisensor Data Fusion, Proceedings Of The IEEE, Vol. 85, NO. 1, January 1997。
[3] ill, esh, , , Situation Description Language, DSTO Systems Sciences Laboratory, South Australia, Australia, August, 2002.
[4] ill, esh, , , Situation Description Language Implementation, DSTO Systems Sciences Laboratory, South Australia, Australia , December, 2002.
[5] 王铮, 刘高峰. 基于SDL的多假设态势估计方法研究[J], 微计算机信息, 2006, 22(9-1):13-16. 本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/242507.html
上一篇:学校机房建设项目过程中的风险规避
下一篇:高速公路视频传输技术研究