- 11/24
- 2010
-
QQ扫一扫
-
Vision小助手
(CMVU)
摘 要:本文提出了一种基于元语的语义描述仿真运动模型的构造方法,该方法已经应用在航管雷达模拟机、航管程序模拟机和塔台视景模拟机的空中目标和地面目标的运动模型的构建。该方法建立的模型扩展性和可维护性较基于传统的基于过程和面向对象的建模方法要好。
关键词:虚拟现实;空中交通管理系统;仿真训练;运动模型;建模方法;面向对象建模;元语集
1 引 言
空中交通管理(Air Traffic Management)系统(以下简称空管系统)是重大使命实时系统,这类系统的使用培训和相关技能培训一般都不能在真实系统和真实环境下进行,国际上通常的做法都是通过搭建一套与真实系统几乎一样,与实际使用环境几乎相同的条件下进行仿真训练。虚拟现实(Virtual reality, VR)技术为仿真训练提供非常有效的解决手段。逼真度是衡量仿真训练系统优劣的最重要指标之一。如何建立准确、逼真的运动数学模型是影响仿真训练系统的逼真度的关键。[1]
四川大学计算机学院长期从事空管系统及其仿真训练系统的研究和开发工作。在过去的几年里,我们不断对这些仿真系统所涉及的空中运动目标(飞行器、云团等)以及地面运动目标的运动数学模型根据实际数据进行完善。每次对模型的完善,都要进行软件系统进行较大的调整,人力物力和时间上的消耗较大。为此,我们不得不在模型的扩展性和可维护性上进行考虑。
本文提出的基于元语的语义描述仿真运动数学模型的构造方法大大提高了模型的扩展性和可维护性,其应用效益是非常可观的。
2 目标运动模型[2]
空管仿真训练系统涉及的运动目标可分为空中(In-air)目标和地面(On-ground)目标,而空中目标的三维运动模型较地面目标的二维运动模型要复 杂得多。为不失一般性,本文只描述空中目标的运动模型。空中目标的运动数学模型分为三个层次:自由飞行飞机的运动模型(Free-Flight Object Model,FFOM)、执行标准过程飞行飞机的运动模型(Procedure-Flight Object Model,PFOM)和特定空域环境下执行飞行标准过程的运动模型(ATC-Flight Object Model,ATCFOM)。
2.1 FFOM模型
FFOM模型主要是根据飞行器空气动力学原理抽象出来的数学模型,它描述了飞行本身性能的限制,如飞行包线模型、速度模型、爬升/下降高度模型、转弯模型等。
2.2 PFOM模型
PFOM模型在FFOM模型的基础上增加了航行过程(Flight Procedures)模型,限制飞机按照一定的路径来飞行,如:标准仪表离场程序(SID)模型、标准终端进场程序(STAR)模型、标准进近程序(STDAPCH)模型、精密进近(ILS)模型、等待程序(HOLD)模型、复飞程序(MISSED)模型、起飞程序(TAKE OFF)模型和全向信标径向飞行/飞离程序(VOR-RADIAL)模型等。
2.3 ATCFOM模型
ATCFOM模型是在PFOM模型的基础上增加了飞行空域(Flight Space)模型,提供飞机飞行的具体空域环境。它包括各种空域资源、航班计划和气象条件。其中,空域资源主要包括跑道、机场、导航台、通讯设施、位置报告点,管制扇区、终端区、近进区、管制区,三区(危险区、禁航区、限制区),特殊区(放油区、试飞区),地理地形,航路和走廊等;航班计划包括飞机呼号、机型、起/落/备降机场、起飞时间等;气象条件包括风、云、雷暴、气温、气压、能见度等影响航空飞行和管制的气象因素。
2.4 传统的建模方法
从上面的描述可以看出,空中目标的运动数学模型具有清新的层次性。实现这种层次性结构模型最典型的方法是结构化过程建模方法,我们研制的第一代航管模拟机就是采用这种建模方法。这种方法有两大缺陷:第一,模型实现与模型描述之间的差距太大;第二,由于每个模型都体现为一个程序过程,因此对模型的任何微小的改动都必须修改程序并重新编译连接,非常不方便。
随着面向对象技术(OO)的发展和成熟,面向对象建模(OOM)方法或实时面向对象建模(ROOM)方法被逐渐被应用到仿真训练系统之中,我们研制的第二代航管模拟机就利用了OOM/ROOM来构造仿真运用数学模型。OOM/ROOM使得运动数学模型的分析(OOA)、设计(OOD)到实现编程(OOP)和测试(OOT)变得更直接和容易了。尽管如此,每个模型都体现为一个对象以及对象属性、方法,因此同样存在只有通过修改程序才能改变模型的问题。
针对结构化过程建模和OOM/ROOM建模存在的缺陷,经过深入细致地分析,我们发现该模型整体具有层次结构,而不同层次的子模型又相对独立性的特点。因此,我们在OOM/ROOM建模的基础上提出了基于元语的语义描述(Primitive-Based Semantic Description)的建模方法。
3 基于元语的语义描述模型构造方法
基于元语的语义描述(Primitive-Based Semantic Description)方法的基本思想是:首先用OOM/ROOM方法建立目标运动数学模型的各个相对独立的子模型对象,再将子模型对象的方法转换为带参数的元语,建立一套完备的元语集P。需要指出的是,这类子模型对象是仅受飞行器本身的性能参数决定,是相对稳定的。然后,按照模型的语义将上层模型转换成元语序列。这样,所有的非元语类模型就可以通过一定的元语序列表示出来了。最后,我们构造了一个通用的语义解释器(Semantic Interpreter),用于解释执行模型的元语序列来产生特定的模型执行过程。
该方法一方面继承了OOM/ROOM方法的从分析(OOA)、设计(OOD)到实现编程(OOP)和测试(OOT)的比较直接和容易的优点;另一方面,它解决了模型不易扩展和维护性差的缺陷。当需要修改飞行过程模型,如仪表着陆系统(ILS,或“盲降”)时,我们只需修改相应模型的元语描述序列,而不需要修改程序。这种程序(语义解释器)与数据(元语序列)分离的思想,使得空管系统仿真数学模型的可维护性、可扩展性和适应性大大增强。
3.1 模型元语
基于元语的语义描述(Primitive-Based Semantic Description)方法的核心是构造一个完备的模型元语集P。所谓完备是指我们所需要的任何一个上层模型都可以用P中得元语序列描述出来。当然,P最好是最小完备集。目前,我们在构造模型元语集P时,只保证了其完备性,还没有考虑其最小性。空中目标的运动模型元语可分为三类:飞行类元语、气象类元语和空域资源类元语;按照语义可分为设置状态元语(SET)、获取状态元语(GET)和动作执行元语(DO)三类。表1给出了元语集P的部分元语的类型、语法和语义。
表1 元语集P中的部分元语
飞行类元语 | 状态设置元语 | SET(ACFTPOS, POS) | 设置飞机初始位置 |
SET(ACFTALT, ALT) | 设置飞机初始高度 | ||
SET(ACFTHDG, HDG) | 设置飞机初始航向 | ||
SET(ACFTSPD, SPD) | 设置飞机初始速度 | ||
SET(ACFTCR, CR) | 设置飞机爬升率 | ||
SET(ACFTDR, DR) | 设置飞机下降率 | ||
SET(ACFTTB, TB) | 设置飞机转弯坡度 | ||
SET(ACFTSA, SA) | 设置飞机加速度 | ||
状态获取元语 | GET(ACFTPOS) | 获取飞机当前位置 | |
GET(ACFTALT) | 获取飞机当前高度 | ||
GET(ACFTHDG) | 获取飞机当前航向 | ||
GET(ACFTSPD) | 获取飞机当前速度 | ||
GET(ACFTCR) | 获取飞机当前爬升率 | ||
GET(ACFTDR) | 获取飞机当前下降率 | ||
GET(ACFTTB) | 获取飞机当前转弯坡度 | ||
GET(ACFTSA) | 获取飞机当前加速度 | ||
动作执行元语 | DO(CHGALT, ALT) | 执行改变飞机高度过程 | |
DO(CHGHDG, HDG) | 执行改变飞机航向过程 | ||
DO(CHGSPD, SPD) | 执行改变飞机速度过程 | ||
DO(CHGPOS, POS) | 执行改变飞机位置过程 | ||
气象类元语 | 状态设置元语 | SET(WINDPARAM, WIND) | 设置风参数 |
SET(TEMPPARAM, TEMP) | 设置温度参数 | ||
SET(VISPARAM, VIS) | 设置能见度参数 | ||
SET(QFEPARAM, QFE) | 设置场压(QFE)参数 | ||
SET(QNHPARAM, QNH) | 设置修正海压(QNH)参数 | ||
状态获取元语 | GET(WINDPARAM) | 获取风参数 | |
GET(TEMPPARAM) | 获取温度参数 | ||
GET(VISPARAM) | 获取能见度参数 | ||
GET(QFEPARAM) | 获取场压(QFE)参数 | ||
GET(QNHPARAM) | 获取修正海压(QNH)参数 | ||
空域资源元语 | 状态获取元语 | GET(AERODROMEALT) | 获取机场高度 |
GET(RUNWAY, NUM) | 获取跑道参数 | ||
GET(FIXPOINT, FIX) | 获取导航台参数 | ||
GET(APCHIAS) | 获取初始近进速度 | ||
状态设置元语 | SET(RUNWAY, NUM) | 设置当前使用跑道 | |
动作执行元语 | DO(INTERSECTION, POS) | 求飞机从POS点切入航向道的切入点 | |
DO(INTERSECTION, ALT) | 求飞机切入下滑道时的高度 |
3.2 复杂模型的构建
在建立了上面的元语集P后,我们就可以用它来构造PFOM和ATCFOM模型。PFOM和ATCFOM所包含的具体模型较多,我们不一一列举了,下面仅以 “盲降”(即ILS)模型为例。APCH(NUM)表示飞机在跑道NUM上完成“盲降”过程的非元语模型,其语义的元语序列定义如下:
PROC APCH(NUM) DEFINITION
BEGIN
DO(CHGSPD,GET(APCHIAS))&&DO(CHGALT,-1)①
SET(RUNWAY,NUM) ②
DO(CHGPOS,DO(INTERSECTION,GET(ACFTPOS))) ③
DO(CHGHDG, GET(RUNWAY,NUM)) ④
DO(CHGALT,DO(INTERSECTION,GET(ACFTALT))) ⑤
DO(CHGALT,GET(AEODROMEALT))&&DO(CHGSPD,0) ⑥
DO(CHGPOS,GET(RUNWAY,NUM)) ⑦
END
元语序列的解释执行过程原则上是从上到下、从左至右。&&表示两个动作同时进行,飞机位置的改变自然是伴随其速度或/和高度的改变进行的。
“盲降”过程分为三个阶段:切入航向道、切入下滑道和下滑落地。①~④表示切入航向道阶段,⑤表示切入下滑道阶段,⑥、⑦表示下滑落地过程。在切入航向道过程中,飞机将减速至近进速度①,并继 续执行以前的高度命令①,同时改变位置至跑道延长线上的切入点②③,最后改变飞机航向以对准跑道④;切入下滑道指飞机在对准跑道后,改变高度使飞机位于下滑道上⑤;在下滑落地过程中,飞机减速至0同时降高度至机场地面高度⑥,在这一过程中飞机将改变位置至跑道接地点⑦。
3.3 实现
上述建模过程的实现需要解决两个关键问题:一是,如何构建元语集P;二是,如何实现语义解释器。
要构建好元语集P,主要取决于空管业务的经验知识。这一点正是我们的十几年来从事空管领域研究积累的优势。在实现元语集的各子模型对象时,我们采用了标准C++设计和编程,以便跨平台应用。
我们以上下文无关文法的典型方法实现了语义解释器,该语义解释器可以支持简单的条件分支和简单变量功能。
3.4 应用效果
我们研制的航管模拟机包括航管雷达模拟机、航管程序模拟机和塔台视景模拟机,可应用在军事领域和民用领域。
在采用面向过程建模方法的第一代航管模拟机的应用过程中,用户曾经提出对“盲降”模型进行修改,当时我们是通过修改模型过程(代码)来完成的,编程和调试工作量大。尤其是系统调试,我们不得不重新测试整个子系统的所有功能。修改“盲降”模型,我们耗去了2个人月的工作量。
在采用面向对象建模方法的第二代航管模拟机的使用中,对用户提出的涉及模型修改的需求,所耗人力和时间没有实质性的改变,毕竟也涉及代码的修改和系统的回归测试。
在第三代航管模拟机中,我们采用了基于元语的语义描述建模方法。在使用过程中,用户也提出过对模型的修改。一般情况下,我们可以在1~2天内对用户的需求做出快速和准确的响应。
4 总 结
四川大学计算机学院长期从事空管系统及其仿真训练系统的研究工作,其积累的领域知识和建立的运动仿真数学模型的逼真度得到了国内外航管专家的高度赞扬,并完成了多项联合国教科文组织支持的援外培训航管管制员的工作。如何满足用户不断改变和新增的需求?如何快速响应用户需求以保持我们在该领域的领先地位?这迫使我们不得不努力寻求更好的方法。
通过分析我们得知,用户对模型的修改要求基本上集中在非元语模型上,到目前为止还没有修改元语模型的要求。在第三代航管模拟机中,对仿真模型的修改不会涉及编程工作,除非要修改元语模型。只要在数据库中修改或增添模型的元语定义序列,即可达到目的。因此,基于元语的语义描述(Primitive-Based Semantic Description)方法很好地解决了空管运动仿真数学模型的扩充性、可维护性。
我们认为,该建模方法对其他领域的建模工作有一定的启发作用,不过建议在定义模型的元语序列时,采用可扩展标记语言(XML)是较好选择。
参 考 文 献
[1]一种实时面向对象设计方案及其在民航塔台模拟机中的实现,李辉等;计算机工程与应用,2001.5;
[2]模型基预测方法研究,杨红雨、张建伟等,四川大学学报(自然科学版),2000.8;
[3]Bran Selic, Grath Gullekson, Paul T.Ward, Real-Time Object-Oriented Modeling[M], John Wiley & Sons, 1994;
[4]Jacobson, Ivar, et al. Object-Oriented Software Engineering[M].Reading, MA:Addison-Wesley,1992。