您当前的位置:首页 > 计算机论文>计算机应用论文

基于Eclipse的多传感器数据融合算法仿真系统

2015-07-11 10:02 来源:学术参考网 作者:未知
摘 要 数据融合是指对来自多个信息源的数据和信息进行综合处理,以获得对事物或目标更客观、更本质认识的综合信息。算法仿真是数据融合系统设计中的一项重要工作。本文介绍了一种基于Eclipse开发的数据融合算法仿真系统,并对系统设计和实现中的一些关键技术进行了讨论,比如Java和Matlab的跨语言调用、Eclipse插件技术等。
关键词 数据融合;仿真系统;Eclipse;多传感器

1 引言

多传感器数据融合就是把多个相同类型或不同类型的传感器所提供的局部观察量加以综合,消除信息之间的冗余和矛盾,利用信息互补,形成对环境的相对完整一致的感知描述,从而提高智能系统决策的快速性和正确性,以及规划的科学性[1]。算法仿真软件对多传感器数据融合系统来说至关重要,它有助于验证和改进数据融合算法,可以缩短系统的开发周期、节省大量的人力物力。

2 Eclipse平台

2.1 Eclipse简介

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。它最初的开发目标是一个高质量的开发工具平台,但在Eclipse的发展过程中,人们意识到Eclipse除了用于开发工具平台外,还适合作为更普遍应用的平台基础,开发小组据此进行了若干通用化改进,到3.0版本的时候,Eclipse正式成为了通用的富客户端平台(Rich Client Platform)。本文研究的仿真系统即是基于Eclipse RCP开发的。
近年来,Eclipse在嵌入式系统及设备开发、企业级开发、应用程序周期管理等领域也得到了广泛的应用。

2.2 基于Eclipse RCP构建系统的优点

1)框架级的软件复用
软件复用作为软件开发过程中的一个重要技术,在实践中有效地提高了软件开发效率和软件质量,对软件开发乃至整个计算机技术的发展有着深远的历史意义和现实意义。
抽象是软件复用的关键因素,Smith和Stotts指出:“编程的历史是一种对体系结构不断抽象的实践。随着程序开发技术的不断进步,程序语言设计者通过总结上一代程序语言的经验教训而不断增加经过封装的结构,然后软件架构设计师在此基础之上创造出更复杂、更强大的抽象”。
抽象的层次不同,软件重用的粒度就不同。软件复用按粒度可分为函数库和类库复用、构件级复用和框架级复用。框架是一个可复用的设计,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,它强调的是软件的设计重用性和系统的可扩充性。框架复用是抽象层次高、复用粒度大的复用形式,是软件工程技术中的热点研究课题,在业界使用也相当广泛,因为它能够带来更高的生产率和开发质量。Eclipse就是一个可复用框架。
图1 按粒度划分的软件复用层次
数据融合技术目前仍然是一个不很成熟的研究领域,尚未形成统一的基本理论框架和有效的广义模型及算法,还处在不断地变化和发展过程中。算法仿真系统作为研究融合算法必须的辅助工具,也需要具备灵活、开放、稳定的特性,以适应持续演化的要求。基于Eclipse RCP来开发算法仿真系统,是顺应数据融合领域特点和发展方向的。
2)灵活的插件结构
通常的软件必须通过重新编译的形式才能进行更改或扩充,而Eclipse通过使用插件机制,让我们可以动态地增加系统功能而无需修改系统代码,还能复用Eclilpse平台提供的众多扩展点。
3)开放源代码
开放源代码不仅仅意味着免费,还使得Eclipse成为一个开放、自由的体系。开放源代码鼓励创新,并激励开发人员为公共开放源码库贡献代码,为这个项目作贡献的开发人员越多,这个项目就会变得日益有用。另外,开放源代码还使得平台开发人员的学习曲线变得更平滑,因为Eclipse平台本身就包含了若干高品质的插件实现范例,是开发人员学习和模仿的对象。
4)跨平台性和优良的用户体验
Eclipse是基于跨平台的程序语言Java开发的,这使得开发人员基于Eclipse开发的程序也可以方便地跨平台部署。
另外,Ecliplse通过引入SWT(Standard Widget Toolkit),使得开发出来的GUI程序效率更高,而且具备了与本地操作系统一致的外观和操作方式,大大改善了Java程序的用户体验。

3 系统设计

如前文所述,本系统基于Eclipse RCP来构建的首要目的就是为了软件复用,所以系统设计的时候需要充分发挥Eclipse平台的优点、复用Eclipse框架的实现。构成Eclipse平台的ui、help等插件向开发者提供了众多有用的扩展点,本系统通过直接扩展它们来实现需要的功能,例如菜单、编辑器、帮助浏览器等。
为了保持系统的正交性、灵活性、可扩展性,本系统还充分利用Eclipse平台的插件机制,将一些相对独立的子系统以插件形式实现,并通过定义新的扩展点等方式对系统层次进行清晰的划分。通过将子系统分离到不同的插件实现,使得它们可以相互独立地开发,而且可以实现功能的灵活组装;通过定义新的扩展点,可以减少系统中的耦合,使得各部分依赖于接口(而非实现),增加扩展性。
系统的结构如图2所示。其中M文件编辑和编译插件、系统帮助插件、结果显示和比较插件只依赖于Eclipse平台,可以直接作为独立插件实现。本文实现了一个多传感器跟踪系统的仿真插件,它提供了首选项等一些基础服务,并向上提供了想定航迹定义的扩展点,使得具体的航迹生成算法和航迹定义用户界面可以通过插件形式来实现,以便灵活替换。另外该仿真插件通过调用编译成dll形式的M文件来执行干扰仿真和数据融合运算,这些算法模块可以在系统中直接编辑和重新编译,以便更新和替换。
图2 系统结构图

4 关键实现技术

4.1 Java/Matlab多语言混编技术

为了使多传感器数据融合仿真软件开发效率高、结构灵活、易于使用,本文引入了Eclipse平台。但Eclipse是基于Java语言的,数值计算并不是Java的强项,若使用它来直接实现复杂的数据融合算法并不可取,而Matlab则在数值分析、矩阵运算、信号处理和图形显示方面有很大的优势。我们需要将这两种平台的优势综合起来,使得用户既能使用一个集成的仿真系统来执行仿真任务,又能充分发挥Matlab的优势,将
Matlab以其强大的功能而享有盛誉,然而仅仅使用Matlab桌面的话,却存在一些缺点:Matlab语言是解释执行的,效率比较低;程序不能脱离其环境运行,不能被用于开发通用性较强的软件;算法和数据的保密性差等等。以上问题有若干种解决方案,其中一种就是使用mcc,它是MATLAB自带的一个编译器,能将m文件转化成 C、C++或p等各种类型的源代码,并根据需要生成可执行文件、lib文件(库文件)、dll文件或S函数文件等。编译后M文件里的内容被加密压缩存放在一个CTF(Component Technology File)的文档里。而具体计算工作由一个名为MCR(MATLAB Component Runtime)的共享库集合工具提供,如果目标机器中没有Matlab环境,则需要将MCR一起部署。mcc编译器可以在命令行通过mcc命令来调用,该命令有众多参数可供选择,开发者可以在Matlab帮助中找到使用方法。
4.1.2 JMatlab/Link
JstatCom是一个开放源代码的Java数值计算框架,通过它我们可以在Java程序中直接与外部的数值计算软件/模块通讯,目前它提供了Matlab、R、Gauss and the Gauss Runtime Engine、Ox的调用引擎。而JMatlab/Link是JStatCom的一个扩展,它在JStatCom提供的Matlab引擎之上实现了一个更完善的Matlab调用方案。通过这套方案创建的Java程序可拥有完善的Matlab数值计算和图形绘制功能、能方便地控制计算任务的执行过程、获取所有的输出信息。JMatlab/Link还可以直接整合Matlab程序运行所需的MCR(Matlab Component Runtime)到程序中,使得没有Matlab运行环境的用户也无需单独安装运行库,简化了程序的部署。JStatCom和JMatlab/Link的最新版本可以在www.jstatcom.com找到。
JMatlab/Link是由若干动态链接库和配置文件组成的,使用也很简单,只要把它放到Java程序的根目录下即可。如果目标环境没有Matlab运行环境,或者其Matlab版本与当前版本不符,则需要将当前版本的Matlab提供的MCR放置在该目录中。
通过JStatCom与JMatlab/Link的结合使用,Java程序可以直接向Matlab计算模块传递参数和接收返回值,并控制计算任务的运行。JStatCom提供的PCall类将计算任务进行了良好的封装,使得我们可以启动一个单独的线程来执行计算任务,让系统主界面在运算期间仍然保持响应。另外,为了方便与Matlab之间的参数传递和数据处理,JStatCom还提供了UMatrix工具类来简化Java中的矩阵操作。

4.2 插件技术

Eclipse平台是基于插件的,而插件具有明确定义的结构和规范,所以Eclipse专门提供了PDE(插件开发环境,Plug Development Environment)来辅组用户创建、开发、测试、调试和部署插件,并确保用户创建的新插件遵循规范、能被平台正确地识别和调用。以下通过系统中的M文件编辑和编译插件为例,来说明插件开发的一般流程。
首先在Eclipse中新建一个插件项目,按照新建向导,填充插件的标识、版本、名称等信息。点击“完成”之后,得到的项目结构如图3所示。

图3 插件项目工程结构

图4 插件清单编辑器
插件是一种结构化的、规范化的组件,一个PDE项目通常包括了下面三个项目文件:
(1)plugin.xml:描述正在提供的扩展、定义新的扩展点。
(2)MANIFEST.MF:指定插件依赖项、classpath等信息。
(3)build.properties:指定构建、打包和导出插件时所需的配置信息。
为了编辑项目文件,PDE提供了插件清单编辑器(图4)。它是一个多页编辑器,其前6个页面其实是项目文件的抽象视图,使得开发人员可以用更容易理解的方式配置插件项目,这与直接编辑文件的效果是一样的。
4.2.1 M文件编辑器
本文通过扩展Eclipse提供的org.eclipse.ui.editors扩展点,并使用其“编辑器”模板来创建文本编辑器。完成向导之后,PDE就会在plugin.xml中添加代表相应扩展的标签和属性(其内容与图3中的视图是一致的),并自动生成模板文件,开发人员在此基础之上对模板代码进行修改和配置,以符合具体需求。
Matlab语言中包含了若干关键字,并含有注释机制,为了方便查看和编辑算法,本文在M文件编辑器中实现了语法着色功能。Eclipse使用损坏、修复和协调模型来实现语法着色功能,并提供了一个例子来示范如何运用这一模型来为Java语言设置语法着色(org.eclipse.ui.examples.Javaeditor)。具体来说,只要文档被用户修改,协调程序就会计算文档中哪些可视区域是无效的以及如何修复,并用定义好的规则来修复文档的显示。通过定制损坏、修复和协调程序,就可以实现特定的语法着色规则。对M文件进行语法着色之后的效果如图5所示。
图5 M文件编辑器及其语法着色
4.2.2 M文件编译器
为了实现更高的集成度,本文将mcc编译器用可视化界面进行了封装,可以直接在工作区内选择M文件进行编译。
Eclipse提供了org.eclipse.ui.popupMenus扩展点,通过它可以在特定资源的右键菜单中添加新的操作(action),每一个操作都提供了若干参数,可以配置其出现的上下文环境等。执行“编译m文件”操作后,将打开一个如图6所示的编译配置对话框,在此指定好配置之后即可编译M文件。
图6 M文件编译配置对话框
另外,Eclilpse在org.eclipse.ui.console中还提供了通用的控制台及其显示框架,通过捕获mcc的输出流,可以把编译时产生的信息直接输出到集成的控制台视图,以便检查和调试。
图7 编译信息的控制台输出

5 总结

本文介绍了Eclipse平台,讨论了Eclipse在算法仿真系统开发中的优势,解决了其中的若干关键技术问题,例如Java和Matlab的跨语言调用等,并以M文件的编辑和编译插件为例示范了如何开发Eclipse插件。文中给出的思路和实现方法对类似软件的设计和开发具有一定的指导意义。

参考文献

[1] 罗志增,蒋静坪. 机器人感觉与多信息融合[M]. 北京. 机械工业出版社,2002
卢炎生,岳沛,翟彬彬. 多传感器数据融合算法仿真评估系统[C]. 第五届全球智能控制与自动化大会,中国杭州,2004
Kellerman, John Eclipse 的历史、现状和未来 [EB/OL]. IBM developerworks. 2006.http://www.ibm.com/ developerworks/cn/opensource/os-ecl-john/
来大伟. 基于Eclipse平台的工具成为嵌入式领域热门 [EB/OL]. 电子工程编辑. 2005.http://www.eetchina.com/ ART 8800382623 617693 NT f4f2beb1 HTM
Smith J, Stotts D. Elemental Design Patterns. A Link Between Architecture and Object Semantics[C]. ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languges and Applications, Seattle, Washington USA,2002
Kratzig, Markus. A Software Framework for Data Based Analysis[D]. Department of Economics, Berlin. Humboldt- Universitdt zu Berlin, 2005. 376
Kratzig, Markus Calling Matlab from Java with JStatCom [EB/OL]. JStatCom. 2007.http://www.jstatcom.com/ paper/jmatlab userguide.pbf
相关文章
学术参考网 · 手机版
https://m.lw881.com/