周文亞,李 川,劉立祥
(中科院軟件所綜合信息系統(tǒng)技術(shù)國家級重點實驗室,北京100190)
組合導航解算軟件是綜合利用現(xiàn)有的GPS、GLONASS、COMPASS等幾大導航系統(tǒng)的優(yōu)勢,進行導航解算,實現(xiàn)高性能導航定位功能的軟件。對于組合導航解算軟件而言,一方面會涉及到諸如衛(wèi)星位置計算、用戶位置計算等包含大量矩陣運算的導航解算算法;另一方面則需對導航數(shù)據(jù)進行實時、高速的采集與處理,且要求人機界面友好、易于操作。這兩者中,前者適合用MATLAB程序?qū)崿F(xiàn),而后者則適合采用VC++、VB等高級語言來實現(xiàn)。因而,如果在組合導航解算軟件實現(xiàn)中,綜合采用MATLAB和高級語言,則可以充分發(fā)揮各種語言的優(yōu)勢,大大提高軟件的性能及可用性。
MATLAB具有極高的編程效率,但它以解釋方式運行,程序執(zhí)行效率低,界面開發(fā)能力較差。隨著MAT LAB的廣泛使用,人們希望能把VC++、VB等高級語言和MAT LAB結(jié)合在一起進行軟件開發(fā),采用VC、VB等高級語言來執(zhí)行循環(huán)、判斷、硬件操作、與用戶交互等事務,即完成應用程序框架,而讓MAT LAB執(zhí)行計算、繪圖等操作,即完成程序的功能模塊[1]。
實現(xiàn)MAT LAB與其它高級語言集成有多種方案,其中基于MATLAB中間件技術(shù)具有許多獨特的優(yōu)點,主要體現(xiàn)在:
1)適應性廣,可用于 VC++、VB、Delphi等各種支持組件技術(shù)的高級語言;
2)方便靈活,既可以與MATLAB協(xié)同工作,也可以生成不依賴MATLAB環(huán)境的獨立程序;
3)不需進行代碼轉(zhuǎn)換,使得編程風格一致,可讀性好。
由于上述優(yōu)點,該種方案得到了廣泛的應用,組合導航解算軟件的實現(xiàn)也采用此種方案。
在軟件開發(fā)方法的實踐過程中,面向?qū)ο蟪绦蛟O計方法成為軟件開發(fā)的主流,但是面向?qū)ο缶幊痰能浖赜弥幌抻诔绦蛟创a級別,而且它一般要求對象程序和使用對象的客戶程序使用同樣的編程語言,這樣的代碼重用僅僅是一種較低層次的復用。為了克服這種局限性、更好地開發(fā)和應用能夠運行在這種異構(gòu)平臺上的軟件,迫切需要一種基于標準的、獨立于計算機硬件以及操作系統(tǒng)的開發(fā)和運行環(huán)境,中間件技術(shù)就此應運而生。
目前,對于中間件,學術(shù)界并沒有給出很嚴格的定義,但普遍接受IDC的定義,即:中間件是一種獨立的系統(tǒng)軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術(shù)之間共享資源[2]。事實上,中間件是介于應用系統(tǒng)和系統(tǒng)軟件之間的一類軟件,它使用系統(tǒng)軟件所提供的基礎服務,銜接網(wǎng)絡上應用系統(tǒng)的各個部分或不同的應用,能夠達到資源共享、功能共享的目的。
在中間件市場化領域方面,很多公司或組織機構(gòu)已推出相關的產(chǎn)品或解決方案。目前,廣泛使用的中間件技術(shù)有:OMG組織的CORBA、Microsoft公司COM/DCOM、SUN公司的EJB等。
從軟件工程的角度看,基于中間件的分布式系統(tǒng)的開發(fā)過程隸屬于基于組件的軟件工程(CBSD,Component Base Software Development)范疇。CBSD是指用集成可重用組件的方法來構(gòu)造應用程序。它是標準定義的、分布式、模塊化結(jié)構(gòu),使應用系統(tǒng)可分成幾個獨立部分開發(fā),可用增量方式開發(fā)。
與傳統(tǒng)的軟件設計相比,使用組件程序設計方法開發(fā)軟件產(chǎn)品具有許多優(yōu)點:
1)組件易替換
在龐大復雜的企業(yè)級系統(tǒng)應用程序中,如果使用組件技術(shù)將程序分成一個個組件模塊,在進行組件修改后版本升級時,就可以只修改或替換相關的組件,而不影響其他眾多的程序組件。
2)適應業(yè)務需求更改
軟件的業(yè)務需求通常不確定,在組件軟件中,可以將業(yè)務規(guī)則放在少數(shù)幾個組件中,當業(yè)務規(guī)則發(fā)生變化時,只需修改原組件或重建并發(fā)布新組件。更新是局部的,程序中出錯的機會也就限制在這個局部,使程序的調(diào)試和測試更為方便。
3)可實現(xiàn)二進制代碼重用
組件之間可以在二進制級別上進行繼承和重用,這樣一來只需一次編寫代碼而多處應用。
4)有助于并行開發(fā)
一個大應用系統(tǒng)由許多組件組成,這些組件的實現(xiàn)可以并列進行,只要接口設計正確,則建立這些組件后它們將能順利配合。
MATLAB對中間件技術(shù)的支持采用了基于COM組件技術(shù)實現(xiàn)的方式。MATLAB 6.5提供了可以將m函數(shù)編譯為COM組件的工具COM Builder,使用這個工具可以方便地制作出COM組件,以供其他支持 COM 的編程語言調(diào)用,實現(xiàn)MATLAB和其他編程語言的整合。
組件對象模型(Component Object Model,COM)是Microsoft公司創(chuàng)建的一種二進制的網(wǎng)絡標準,遵循這一標準開發(fā)的組件之間可以跨進程、跨機器、跨語言甚至跨平臺進行通信。因此,只要組件接口標準化,開發(fā)人員可以從某個組件庫中取出所需的組件并將其快速地組裝到一起以構(gòu)成所需的應用。組件模型能夠解決網(wǎng)絡分布計算環(huán)境中多種異構(gòu)數(shù)據(jù)資源的互聯(lián)共享問題,實現(xiàn)多種應用軟件的協(xié)同工作。此外,利用組件的重構(gòu)性還可大幅地提高應用軟件系統(tǒng)的開發(fā)效率,增強系統(tǒng)的穩(wěn)定性,使系統(tǒng)的維護管理工作更為簡易[3]。
使用MATLAB COM Builder創(chuàng)建COM組件操作程序為:
1)啟動COM Builder,創(chuàng)建一個工程,設置相關屬性;
2)增加所需的功能,添加相應的M文件和MEX文件;
3)編譯創(chuàng)建組件;
4)包裝注冊發(fā)布組件。
全球衛(wèi)星導航定位系統(tǒng)能為海、陸、空用戶提供實時、連續(xù)、全天候的精確三維位置、速度及時間等導航定位信息。目前,世界上存在兩大全球衛(wèi)星導航定位系統(tǒng),美國GPS系統(tǒng)和GLONASS系統(tǒng)。正在設計建設階段的有歐洲的Galileo系統(tǒng)和中國的COMPASS系統(tǒng)。由于全球衛(wèi)星導航系統(tǒng)具有全球性、全天候、連續(xù)性和實時性,提供導航、定位和定時服務等特點,因此,在信息、交通、環(huán)境監(jiān)測等建設方面具有其他手段無法替代的重要作用。如果做到多種全球衛(wèi)星定位系統(tǒng)互相共用,既可以提高定位的準確度,又可以提高覆蓋的可靠性,另外最重要的一點由于可見衛(wèi)星數(shù)量大幅度增加,可以大大提高整個衛(wèi)星定位系統(tǒng)的完善性監(jiān)測性能,保證導航定位結(jié)果的可靠性,提高衛(wèi)星導航定位應用的安全性。
組合導航解算軟件即是利用GPS、GLONASS、COMPASS三大導航系統(tǒng)之間的相同點,將三大系統(tǒng)兼容利用,充分利用多個系統(tǒng)共用的優(yōu)勢,提供高性能的導航定位服務。軟件功能需求采用UM L,如圖1所示:
圖1 組合導航解算軟件用例圖
圖1中,用戶直接參與用例有四個:用戶位置解算、用戶速度解算、導航數(shù)據(jù)分析和導航模式設置。其中導航模式設置是對組合導航的工作方式進行設置,如單系統(tǒng)導航方式、多系統(tǒng)組合導航方式等。導航數(shù)據(jù)分析是對導航數(shù)據(jù)進行分析處理,生成曲線或統(tǒng)計結(jié)果。用戶位置解算和用戶速度解算用例分別輸出用戶實時的位置及速度信息,用戶位置解算用例的實現(xiàn)需要使用用例衛(wèi)星位置計算和定位解算衛(wèi)星選擇,前者包含了GPS衛(wèi)星位置計算、GLONASS衛(wèi)星位置計算和 COMPASS衛(wèi)星位置計算三個用例,后者則是根據(jù)衛(wèi)星位置解算結(jié)果選擇合適的定位解算衛(wèi)星。衛(wèi)星位置解算用例還涉及到了自主完善性監(jiān)測、導航解算參數(shù)提取、接收機導航電文接收等用例,圖中給出了上述用例間關系。
組合導航解算軟件主要包括用戶界面模塊、數(shù)據(jù)采集及處理模塊、導航解算中間件、數(shù)據(jù)分析模塊等。軟件的工作流程采用UML序列圖表示如圖2所示。
圖2顯示了組合導航解算軟件各模塊的交互,其中數(shù)據(jù)采集處理模塊從接收機獲取原始導航電文數(shù)據(jù),解析后得到衛(wèi)星星歷、偽距等導航解算所必需的各種參數(shù),將這些參數(shù)傳給導航解算中間件,導航解算中間件基于MAT LAB程序?qū)崿F(xiàn),完成衛(wèi)星位置計算、定位導航衛(wèi)星選擇、自主完善性監(jiān)測、用戶位置計算、用戶速度計算等導航核心解算算法,并將算法的輸出傳回到數(shù)據(jù)采集處理模塊,并顯示在界面。用戶還可以通過用戶界面調(diào)用數(shù)據(jù)分析模塊將解算后的導航數(shù)據(jù)進行分析,得到分析曲線及統(tǒng)計結(jié)果。
其中,導航解算算法的實現(xiàn)采用了基于MATLAB中間件技術(shù),通過中間件NAVCOMP將核心算法進行封裝,并提供接口供軟件其它模塊調(diào)用。中間件NAVCOMP主要接口采用UML表示,如圖3所示。
圖3顯示了導航解算中間件NAVCOMP五個主要接口,其中ISatPosCalc接口用于提供衛(wèi)星位置計算服務,INavSatSel接口提供最優(yōu)化導航衛(wèi)星選定服務,IRAIM接口提供自主完善性監(jiān)測服務,IUserPosCalc接口和 IUserVelCalc接口分別提供用戶位置服務和用戶速度計算服務。
由于在導航解算算法的實現(xiàn)上采用了基于MAT LAB中間件技術(shù),充分發(fā)揮了MAT LAB數(shù)值計算的優(yōu)勢,極大地提高了軟件開發(fā)的效率,并使軟件具有可重用性。軟件運行界面截圖如圖4所示:
圖4 組合導航解算軟件運行界面
在組合導航解算軟件設計中采用基于MATLAB中間件技術(shù),可以充分利用MAT LAB強大的科學計算功能,結(jié)合高級語言在界面設計及控制邏輯方面的優(yōu)勢,能夠降低軟件開發(fā)的難度,縮短了研發(fā)周期,且能提高軟件的可重用性。
[1]葉青松.應用組件技術(shù)實現(xiàn)MAT LAB與其它高級語言的混合編程[J].常州信息職業(yè)技術(shù)學院學報,2004,3(1):30-33.
[2]周園春,李 淼,張 健,等.中間件技術(shù)綜述[J].計算機工程與應用,2002(15):80-82.
[3]Dale Rogerson著,楊秀章譯.COM 技術(shù)內(nèi)幕[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]盧 青,岳春生.基于中間件技術(shù)的嵌入式導航終端軟件設計[J].現(xiàn)代電子技術(shù),2008,273(10):109-111.