MATLAB中间件在组合导航解算软件设计中的应用

2010-08-29 01:39周文亚刘立祥
全球定位系统 2010年5期
关键词:用例中间件组件

周文亚,李 川,刘立祥

(中科院软件所综合信息系统技术国家级重点实验室,北京100190)

0 引 言

组合导航解算软件是综合利用现有的GPS、GLONASS、COMPASS等几大导航系统的优势,进行导航解算,实现高性能导航定位功能的软件。对于组合导航解算软件而言,一方面会涉及到诸如卫星位置计算、用户位置计算等包含大量矩阵运算的导航解算算法;另一方面则需对导航数据进行实时、高速的采集与处理,且要求人机界面友好、易于操作。这两者中,前者适合用MATLAB程序实现,而后者则适合采用VC++、VB等高级语言来实现。因而,如果在组合导航解算软件实现中,综合采用MATLAB和高级语言,则可以充分发挥各种语言的优势,大大提高软件的性能及可用性。

MATLAB具有极高的编程效率,但它以解释方式运行,程序执行效率低,界面开发能力较差。随着MAT LAB的广泛使用,人们希望能把VC++、VB等高级语言和MAT LAB结合在一起进行软件开发,采用VC、VB等高级语言来执行循环、判断、硬件操作、与用户交互等事务,即完成应用程序框架,而让MAT LAB执行计算、绘图等操作,即完成程序的功能模块[1]。

实现MAT LAB与其它高级语言集成有多种方案,其中基于MATLAB中间件技术具有许多独特的优点,主要体现在:

1)适应性广,可用于 VC++、VB、Delphi等各种支持组件技术的高级语言;

2)方便灵活,既可以与MATLAB协同工作,也可以生成不依赖MATLAB环境的独立程序;

3)不需进行代码转换,使得编程风格一致,可读性好。

由于上述优点,该种方案得到了广泛的应用,组合导航解算软件的实现也采用此种方案。

1 基于MATLAB的中间件技术

1.1 中间件的概念

在软件开发方法的实践过程中,面向对象程序设计方法成为软件开发的主流,但是面向对象编程的软件重用只限于程序源代码级别,而且它一般要求对象程序和使用对象的客户程序使用同样的编程语言,这样的代码重用仅仅是一种较低层次的复用。为了克服这种局限性、更好地开发和应用能够运行在这种异构平台上的软件,迫切需要一种基于标准的、独立于计算机硬件以及操作系统的开发和运行环境,中间件技术就此应运而生。

目前,对于中间件,学术界并没有给出很严格的定义,但普遍接受IDC的定义,即:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源[2]。事实上,中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务,衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。

在中间件市场化领域方面,很多公司或组织机构已推出相关的产品或解决方案。目前,广泛使用的中间件技术有:OMG组织的CORBA、Microsoft公司COM/DCOM、SUN公司的EJB等。

1.2 基于中间件的软件开发

从软件工程的角度看,基于中间件的分布式系统的开发过程隶属于基于组件的软件工程(CBSD,Component Base Software Development)范畴。CBSD是指用集成可重用组件的方法来构造应用程序。它是标准定义的、分布式、模块化结构,使应用系统可分成几个独立部分开发,可用增量方式开发。

与传统的软件设计相比,使用组件程序设计方法开发软件产品具有许多优点:

1)组件易替换

在庞大复杂的企业级系统应用程序中,如果使用组件技术将程序分成一个个组件模块,在进行组件修改后版本升级时,就可以只修改或替换相关的组件,而不影响其他众多的程序组件。

2)适应业务需求更改

软件的业务需求通常不确定,在组件软件中,可以将业务规则放在少数几个组件中,当业务规则发生变化时,只需修改原组件或重建并发布新组件。更新是局部的,程序中出错的机会也就限制在这个局部,使程序的调试和测试更为方便。

3)可实现二进制代码重用

组件之间可以在二进制级别上进行继承和重用,这样一来只需一次编写代码而多处应用。

4)有助于并行开发

一个大应用系统由许多组件组成,这些组件的实现可以并列进行,只要接口设计正确,则建立这些组件后它们将能顺利配合。

1.3 MATLAB对中间件技术的支持

MATLAB对中间件技术的支持采用了基于COM组件技术实现的方式。MATLAB 6.5提供了可以将m函数编译为COM组件的工具COM Builder,使用这个工具可以方便地制作出COM组件,以供其他支持 COM 的编程语言调用,实现MATLAB和其他编程语言的整合。

组件对象模型(Component Object Model,COM)是Microsoft公司创建的一种二进制的网络标准,遵循这一标准开发的组件之间可以跨进程、跨机器、跨语言甚至跨平台进行通信。因此,只要组件接口标准化,开发人员可以从某个组件库中取出所需的组件并将其快速地组装到一起以构成所需的应用。组件模型能够解决网络分布计算环境中多种异构数据资源的互联共享问题,实现多种应用软件的协同工作。此外,利用组件的重构性还可大幅地提高应用软件系统的开发效率,增强系统的稳定性,使系统的维护管理工作更为简易[3]。

使用MATLAB COM Builder创建COM组件操作程序为:

1)启动COM Builder,创建一个工程,设置相关属性;

2)增加所需的功能,添加相应的M文件和MEX文件;

3)编译创建组件;

4)包装注册发布组件。

2 基于MATLAB中间件的组合导航软件的设计

2.1 组合导航软件功能需求

全球卫星导航定位系统能为海、陆、空用户提供实时、连续、全天候的精确三维位置、速度及时间等导航定位信息。目前,世界上存在两大全球卫星导航定位系统,美国GPS系统和GLONASS系统。正在设计建设阶段的有欧洲的Galileo系统和中国的COMPASS系统。由于全球卫星导航系统具有全球性、全天候、连续性和实时性,提供导航、定位和定时服务等特点,因此,在信息、交通、环境监测等建设方面具有其他手段无法替代的重要作用。如果做到多种全球卫星定位系统互相共用,既可以提高定位的准确度,又可以提高覆盖的可靠性,另外最重要的一点由于可见卫星数量大幅度增加,可以大大提高整个卫星定位系统的完善性监测性能,保证导航定位结果的可靠性,提高卫星导航定位应用的安全性。

组合导航解算软件即是利用GPS、GLONASS、COMPASS三大导航系统之间的相同点,将三大系统兼容利用,充分利用多个系统共用的优势,提供高性能的导航定位服务。软件功能需求采用UM L,如图1所示:

图1 组合导航解算软件用例图

图1中,用户直接参与用例有四个:用户位置解算、用户速度解算、导航数据分析和导航模式设置。其中导航模式设置是对组合导航的工作方式进行设置,如单系统导航方式、多系统组合导航方式等。导航数据分析是对导航数据进行分析处理,生成曲线或统计结果。用户位置解算和用户速度解算用例分别输出用户实时的位置及速度信息,用户位置解算用例的实现需要使用用例卫星位置计算和定位解算卫星选择,前者包含了GPS卫星位置计算、GLONASS卫星位置计算和 COMPASS卫星位置计算三个用例,后者则是根据卫星位置解算结果选择合适的定位解算卫星。卫星位置解算用例还涉及到了自主完善性监测、导航解算参数提取、接收机导航电文接收等用例,图中给出了上述用例间关系。

2.2 基于MATLAB中间件的组合导航软件设计

组合导航解算软件主要包括用户界面模块、数据采集及处理模块、导航解算中间件、数据分析模块等。软件的工作流程采用UML序列图表示如图2所示。

图2显示了组合导航解算软件各模块的交互,其中数据采集处理模块从接收机获取原始导航电文数据,解析后得到卫星星历、伪距等导航解算所必需的各种参数,将这些参数传给导航解算中间件,导航解算中间件基于MAT LAB程序实现,完成卫星位置计算、定位导航卫星选择、自主完善性监测、用户位置计算、用户速度计算等导航核心解算算法,并将算法的输出传回到数据采集处理模块,并显示在界面。用户还可以通过用户界面调用数据分析模块将解算后的导航数据进行分析,得到分析曲线及统计结果。

其中,导航解算算法的实现采用了基于MATLAB中间件技术,通过中间件NAVCOMP将核心算法进行封装,并提供接口供软件其它模块调用。中间件NAVCOMP主要接口采用UML表示,如图3所示。

图3显示了导航解算中间件NAVCOMP五个主要接口,其中ISatPosCalc接口用于提供卫星位置计算服务,INavSatSel接口提供最优化导航卫星选定服务,IRAIM接口提供自主完善性监测服务,IUserPosCalc接口和 IUserVelCalc接口分别提供用户位置服务和用户速度计算服务。

由于在导航解算算法的实现上采用了基于MAT LAB中间件技术,充分发挥了MAT LAB数值计算的优势,极大地提高了软件开发的效率,并使软件具有可重用性。软件运行界面截图如图4所示:

图4 组合导航解算软件运行界面

3 结 论

在组合导航解算软件设计中采用基于MATLAB中间件技术,可以充分利用MAT LAB强大的科学计算功能,结合高级语言在界面设计及控制逻辑方面的优势,能够降低软件开发的难度,缩短了研发周期,且能提高软件的可重用性。

[1]叶青松.应用组件技术实现MAT LAB与其它高级语言的混合编程[J].常州信息职业技术学院学报,2004,3(1):30-33.

[2]周园春,李 淼,张 健,等.中间件技术综述[J].计算机工程与应用,2002(15):80-82.

[3]Dale Rogerson著,杨秀章译.COM 技术内幕[M].清华大学出版社,1999.

[4]Ashish S,Aamod S,Roy H.Campbell Quarterware for Middleware[C]∥Proceedings of the 18th IEEE International Conference on Distributed Computing System,Amsterdam,1998:192-201.

[5]卢 青,岳春生.基于中间件技术的嵌入式导航终端软件设计[J].现代电子技术,2008,273(10):109-111.

猜你喜欢
用例中间件组件
无人机智能巡检在光伏电站组件诊断中的应用
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
一种嵌入式软件组件更新方法的研究与实现
U盾外壳组件注塑模具设计
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
组件软件工程的开发研究
云计算环境下中间件的负载均衡机制研究
软件设计中用例详细需求描述的应用研究