周文亞,李 川,劉立祥
(中科院軟件所綜合信息系統技術國家級重點實驗室,北京100190)
組合導航解算軟件是綜合利用現有的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)不需進行代碼轉換,使得編程風格一致,可讀性好。
由于上述優點,該種方案得到了廣泛的應用,組合導航解算軟件的實現也采用此種方案。
在軟件開發方法的實踐過程中,面向對象程序設計方法成為軟件開發的主流,但是面向對象編程的軟件重用只限于程序源代碼級別,而且它一般要求對象程序和使用對象的客戶程序使用同樣的編程語言,這樣的代碼重用僅僅是一種較低層次的復用。為了克服這種局限性、更好地開發和應用能夠運行在這種異構平臺上的軟件,迫切需要一種基于標準的、獨立于計算機硬件以及操作系統的開發和運行環境,中間件技術就此應運而生。
目前,對于中間件,學術界并沒有給出很嚴格的定義,但普遍接受IDC的定義,即:中間件是一種獨立的系統軟件或服務程序,分布式應用軟件借助這種軟件在不同的技術之間共享資源[2]。事實上,中間件是介于應用系統和系統軟件之間的一類軟件,它使用系統軟件所提供的基礎服務,銜接網絡上應用系統的各個部分或不同的應用,能夠達到資源共享、功能共享的目的。
在中間件市場化領域方面,很多公司或組織機構已推出相關的產品或解決方案。目前,廣泛使用的中間件技術有:OMG組織的CORBA、Microsoft公司COM/DCOM、SUN公司的EJB等。
從軟件工程的角度看,基于中間件的分布式系統的開發過程隸屬于基于組件的軟件工程(CBSD,Component Base Software Development)范疇。CBSD是指用集成可重用組件的方法來構造應用程序。它是標準定義的、分布式、模塊化結構,使應用系統可分成幾個獨立部分開發,可用增量方式開發。
與傳統的軟件設計相比,使用組件程序設計方法開發軟件產品具有許多優點:
1)組件易替換
在龐大復雜的企業級系統應用程序中,如果使用組件技術將程序分成一個個組件模塊,在進行組件修改后版本升級時,就可以只修改或替換相關的組件,而不影響其他眾多的程序組件。
2)適應業務需求更改
軟件的業務需求通常不確定,在組件軟件中,可以將業務規則放在少數幾個組件中,當業務規則發生變化時,只需修改原組件或重建并發布新組件。更新是局部的,程序中出錯的機會也就限制在這個局部,使程序的調試和測試更為方便。
3)可實現二進制代碼重用
組件之間可以在二進制級別上進行繼承和重用,這樣一來只需一次編寫代碼而多處應用。
4)有助于并行開發
一個大應用系統由許多組件組成,這些組件的實現可以并列進行,只要接口設計正確,則建立這些組件后它們將能順利配合。
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)包裝注冊發布組件。
全球衛星導航定位系統能為海、陸、空用戶提供實時、連續、全天候的精確三維位置、速度及時間等導航定位信息。目前,世界上存在兩大全球衛星導航定位系統,美國GPS系統和GLONASS系統。正在設計建設階段的有歐洲的Galileo系統和中國的COMPASS系統。由于全球衛星導航系統具有全球性、全天候、連續性和實時性,提供導航、定位和定時服務等特點,因此,在信息、交通、環境監測等建設方面具有其他手段無法替代的重要作用。如果做到多種全球衛星定位系統互相共用,既可以提高定位的準確度,又可以提高覆蓋的可靠性,另外最重要的一點由于可見衛星數量大幅度增加,可以大大提高整個衛星定位系統的完善性監測性能,保證導航定位結果的可靠性,提高衛星導航定位應用的安全性。
組合導航解算軟件即是利用GPS、GLONASS、COMPASS三大導航系統之間的相同點,將三大系統兼容利用,充分利用多個系統共用的優勢,提供高性能的導航定位服務。軟件功能需求采用UM L,如圖1所示:

圖1 組合導航解算軟件用例圖
圖1中,用戶直接參與用例有四個:用戶位置解算、用戶速度解算、導航數據分析和導航模式設置。其中導航模式設置是對組合導航的工作方式進行設置,如單系統導航方式、多系統組合導航方式等。導航數據分析是對導航數據進行分析處理,生成曲線或統計結果。用戶位置解算和用戶速度解算用例分別輸出用戶實時的位置及速度信息,用戶位置解算用例的實現需要使用用例衛星位置計算和定位解算衛星選擇,前者包含了GPS衛星位置計算、GLONASS衛星位置計算和 COMPASS衛星位置計算三個用例,后者則是根據衛星位置解算結果選擇合適的定位解算衛星。衛星位置解算用例還涉及到了自主完善性監測、導航解算參數提取、接收機導航電文接收等用例,圖中給出了上述用例間關系。
組合導航解算軟件主要包括用戶界面模塊、數據采集及處理模塊、導航解算中間件、數據分析模塊等。軟件的工作流程采用UML序列圖表示如圖2所示。
圖2顯示了組合導航解算軟件各模塊的交互,其中數據采集處理模塊從接收機獲取原始導航電文數據,解析后得到衛星星歷、偽距等導航解算所必需的各種參數,將這些參數傳給導航解算中間件,導航解算中間件基于MAT LAB程序實現,完成衛星位置計算、定位導航衛星選擇、自主完善性監測、用戶位置計算、用戶速度計算等導航核心解算算法,并將算法的輸出傳回到數據采集處理模塊,并顯示在界面。用戶還可以通過用戶界面調用數據分析模塊將解算后的導航數據進行分析,得到分析曲線及統計結果。
其中,導航解算算法的實現采用了基于MATLAB中間件技術,通過中間件NAVCOMP將核心算法進行封裝,并提供接口供軟件其它模塊調用。中間件NAVCOMP主要接口采用UML表示,如圖3所示。

圖3顯示了導航解算中間件NAVCOMP五個主要接口,其中ISatPosCalc接口用于提供衛星位置計算服務,INavSatSel接口提供最優化導航衛星選定服務,IRAIM接口提供自主完善性監測服務,IUserPosCalc接口和 IUserVelCalc接口分別提供用戶位置服務和用戶速度計算服務。
由于在導航解算算法的實現上采用了基于MAT LAB中間件技術,充分發揮了MAT LAB數值計算的優勢,極大地提高了軟件開發的效率,并使軟件具有可重用性。軟件運行界面截圖如圖4所示:

圖4 組合導航解算軟件運行界面
在組合導航解算軟件設計中采用基于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.