介紹了一種基于GPS和電子海圖、使用嵌入式Linux操作系統的船舶導航系統,討論了船舶導航GUI、電子海圖數據的預海圖顯示等關(guān)鍵技術(shù),并給出了解決方案。 以GPS和電子海圖為技術(shù)核心,為航海用戶(hù)提供安全航行所必需的海圖、航路等信息的船舶導航系統目前正在全世界得到廣泛應用,大大提高了船舶導航技術(shù)與船航行的安全性。 船舶導航系統目前主要有PC機系統、單片機系統和嵌入式系統等三種實(shí)現方式。常見(jiàn)的PC機船舶導航系統采用基于Windows的GIS軟件(如MapInfo、MapGIS)設計,具有系統功能豐富、響應速度快、人機交互界面友好等特點(diǎn),但成本較高、系統集成度差,不適合用為專(zhuān)業(yè)系統使用。單片機電子海圖應用系統由于處理器運算能力較弱,資源有限,支持網(wǎng)絡(luò )化困難,而且在圖形用戶(hù)界面實(shí)現較為困難,近年來(lái)已較少使用。隨著(zhù)嵌入式系統的發(fā)展,電子海圖應用系統有了更好的選擇,使用嵌入式32位處理器和嵌入式操作系統的產(chǎn)品逐漸出現。由于系統集成度高、硬件成本較低等特點(diǎn),在近幾年獲得較多應用。而采用WindowsCE、Vxworks、Palm OS等商用嵌入式操作系統,存在軟件開(kāi)發(fā)成本較高的缺點(diǎn)。 本文提出并設計了一種基于GPS和電子海圖,使用嵌入式32位處理器和嵌入式Linux的船舶導航系統。該系統采用Motorola公司的MPC823E嵌入式處理器,外接GPS接收儀和256色液晶顯示器,基于嵌入式Linux操作系統,具有源碼開(kāi)放、易移植、模塊化、資源豐富的優(yōu)勢。圖形用戶(hù)界面(GUI)采用QT/Embedded圖形開(kāi)發(fā)庫,電子海圖用海司航保部的符合國家軍用標準的矢量海圖,并預先對電子海圖數據進(jìn)行預處理,刪除冗余數據,進(jìn)行二維幾何數據壓縮、建立網(wǎng)絡(luò )索引。在此基礎上進(jìn)行船舶導航系統軟件設計,使得系統響應速度大大加快。 1 系統硬件結構和軟件開(kāi)發(fā)平臺 系統整體結構如圖1所示。本系統使用Motolora公司的MPC823E嵌入式處理器,該處理器采用嵌入式PowerPC處理核,采用RISC技術(shù),主頻為75MHz,具有強大的處理能力,并針對通信進(jìn)行優(yōu)化,通過(guò)獨立的通信模塊(CPM)專(zhuān)門(mén)處理通信事務(wù)。系統通過(guò)通用串行總線(xiàn)控制器(USB)外接鍵盤(pán)和鼠標;通過(guò)液晶顯示(LCD)控制器外接一個(gè)256色的TFT LCD 640%26;#215;480彩色液晶顯示器,用于圖形用戶(hù)界面的顯示;通過(guò)RS232外接GPS接收儀;系統外擴32MB Flash空間,用于存儲Linux內核、應用程序和電子海圖數據;系統外擴32MB SDRAM,用于操作系統內存空間,存放動(dòng)態(tài)數據和運行程序。 系統軟件基于嵌入式Linux操作系統,使用C++語(yǔ)言進(jìn)行軟件開(kāi)發(fā),并選擇QT/Embedded作為圖形用戶(hù)界面(GUI)開(kāi)發(fā)環(huán)境。QT是Trolltech公司推出的跨平臺C++圖形用戶(hù)開(kāi)發(fā)庫,QT/Embedded是QT面向嵌入式應用的版本,具有可移植性強,支持Linux、Windows、Mac的優(yōu)點(diǎn),移值到新平臺時(shí),只需用該平臺的編譯器重新編譯即可;面向對象,采用C++語(yǔ)言,加上特有的信號/槽(singal/slot)機制,使得面向對象的程序設計變得簡(jiǎn)單而有效;可裁剪,通過(guò)去掉無(wú)關(guān)模塊可以調整庫文件的大小、適合嵌入式系統使用;GUI界面支持大量標準的窗口部件,并提供了界面設計工具designer;支持國際化,支持中文顯示,并提供了多語(yǔ)言支持工具linguist。QT/Embedded強大的圖形繪制功能在電子海圖的應用系統中得到了充分的應用。 系統從全球定位系統GPS實(shí)時(shí)獲取船舶位置(包括經(jīng)緯度與時(shí)間等)和航行信息(包括船速與航向等),在電子海圖上顯示相關(guān)導航信息,用戶(hù)通過(guò)精簡(jiǎn)的鼠標鍵盤(pán)操作,提供海圖漫游、海圖查詢(xún)和航行信息管理等功能。 2 電子海圖數據處理 2.1電子海圖數據組織結構 本系統使用海司航保部的軍用矢量格式MVCF(Military Vector Chart Format)海圖。MVCF以圖幅為單位組織,采用目錄結構,目錄名即為電子海圖的編號。一個(gè)圖幅目錄由一個(gè)元數據文件和多個(gè)海圖層次文件組成。元數據文件記錄每幅圖的比例尺、基準緯度等控制信息,海圖層次文件由40多種圖層文件組成。例如海洋陸地層、港口設施層等。每一種圖層文件由圖形文件、索引文件和屬性文件組成。其中圖形文件記錄了海圖要素的墨卡托投影坐標數據,索引文件記錄了對應的圖形文件中海圖要素在圖形文件中的偏移量, 屬性文件是dbase表文件,記錄了海圖要素屬性,包括要素的名字、備注等。 這樣一幅海圖包括130多個(gè)文件,本系統使用的海圖包括中國總圖、沿海航行圖、港灣圖等共74幅海圖,占用空間260多兆字節。由于嵌入式系統存儲空間和處理器運算能力的限制,需要在PC機上對電子海圖進(jìn)行數據精簡(jiǎn)壓縮和優(yōu)化,以提高系統響應速度。 2.2 電子海圖數據壓縮 (1)刪除冗余數據 MVCF海圖數據量大,線(xiàn)狀要素和多邊形要素細節豐富,而周期入式電子海圖應用系統由于液晶顯示器的大小和分辨率的限制,有相當一部分數據浪費。本系統使用的液晶顯示器分辨率為640%26;#215;480,長(cháng)和寬為21cm%26;#215;15cm,可以計算出像素間距約為0.031cm。用各種比例尺的電子海圖顯示時(shí),線(xiàn)狀或面狀實(shí)體的某些點(diǎn)的間隔如果小于像素間距,顯然無(wú)法顯示,應刪除這種冗余點(diǎn)。以像素間距作為閥值,刪除海圖冗余數據,算法如下: 選定一個(gè)線(xiàn)狀或面狀實(shí)體,順序遍歷其坐標點(diǎn),除起點(diǎn)和終點(diǎn)外,對每個(gè)點(diǎn)計算該點(diǎn)與上一個(gè)點(diǎn)的距離,若小于閥值,則刪除該點(diǎn)。 (2)二維幾何壓縮 使用合適的二維幾何壓縮算法能使電子海圖在保持形狀的前提下減少數據量。本系統使用DouglasPoiker算法進(jìn)行線(xiàn)狀和面狀實(shí)體的壓縮。該算法的思想是,從一個(gè)近似的形狀開(kāi)始,逐步修正。該算法同樣需要一個(gè)閥值,本系統可使用上文的同一閥值。以面狀實(shí)體為例,算法過(guò)程如下: 選擇多邊形P的兩個(gè)頂點(diǎn)V1和V2,考慮V1、V2,V1組成的多邊形Q是P的一個(gè)近似,掃描P中其他頂點(diǎn),選擇距離Q的邊最遠的頂點(diǎn)W,把W加入到Q中形成新的多邊形,繼續掃描P中的其他頂點(diǎn),直到P中剩余的頂點(diǎn)距離Q邊的最長(cháng)距離小于閥值為止。多邊形Q即為壓縮結果。 2.3建立網(wǎng)格索引 高效的索引結構是提高數據訪(fǎng)問(wèn)效率的關(guān)鍵。MVCF海圖數據量大,電子海圖應用系統實(shí)際使用過(guò)程中,顯示的區域通常只是一個(gè)圖幅的一部分,如果能快速搜索到這部分的海圖數據,系統的響應速度將大大提高。本系統使用網(wǎng)格索引,MVCF海圖按比例尺分為從1:4000000到1:25000共10多級,對每一種比例尺的海圖,都建立一個(gè)網(wǎng)格索引,方法如下: 用一個(gè)矩形網(wǎng)格與海圖要素逐個(gè)進(jìn)行相交或包容判斷,凡是在網(wǎng)格中的海圖要素,就記錄下該要素在圖形文件內的偏移量,最后形成網(wǎng)格索引文件。其中,多邊形要素與矩形網(wǎng)格的相交判斷方法是,若多邊形的一部分端點(diǎn)落在矩形內,而另一部分卻落在矩形的外部,則兩者是相交的;多邊形與矩形的包容判斷是,若多邊形所有的端點(diǎn)落在矩形內則是包容于關(guān)系,若矩形所有的端點(diǎn)落在多邊形內則是包容關(guān)系。線(xiàn)狀要素也可用相似的方法判斷。 3 系統軟件的設計與實(shí)現 系統軟件如圖2所示,主要由以下模塊組成:系統界面與管理模塊、海圖數據模塊、海圖算法模塊、海圖顯示模塊、航行信息管理模塊、GPS接收模塊等。 系統界面與管理模塊:實(shí)現系統主界面和操作菜單,通過(guò)調用其它模塊實(shí)現海圖漫游、自動(dòng)對中、海圖查詢(xún)、管理航線(xiàn)、保存航行記錄等功能。 海圖數據模塊:負責讀取電子海圖文件,實(shí)現海圖查詢(xún)功能。通過(guò)dbase屬性文件搜索地圖要素,可以通過(guò)SQL語(yǔ)句在屬性文件中找到該要素,從而得到該要素在索引文件中的位置。 海圖算法模塊:包括程序中用到的各種算法,如地理坐標、墨卡托投影坐標和屏幕坐標之間的相互轉換,點(diǎn)與點(diǎn)、點(diǎn)與線(xiàn)之間距離,線(xiàn)的長(cháng)度,多邊形的周長(cháng)和面積等。 海圖顯示模塊:海圖顯示是系統的核心模塊。該模塊根據管理模塊給出的中心點(diǎn)位置及顯示范圍的參數,確定需要繪圖的網(wǎng)格,根據網(wǎng)格索引,快速完成繪制海圖的功能?紤]到海圖漫游通常是連續的,使用了位圖緩存來(lái)提高響應速度,每次畫(huà)圖的時(shí)候,先在緩存中找,找不到則擴大范圍畫(huà)圖,并保存到位圖緩存,對緩存的管理采用最近最少使用替換算法(LRU)。具體流程如圖3所示。 航行信息管理模塊:完成航線(xiàn)設置、航線(xiàn)偏移報警、保存航跡等航行管理功能。航線(xiàn)設置是根據航海用戶(hù)對目的點(diǎn)的連續選擇,形成一條航線(xiàn),并對該航線(xiàn)設置一個(gè)偏航極限。本模塊定時(shí)從GPS接收模塊獲取地圖坐標信息,判斷當前位置到航線(xiàn)的距離,若超出偏航極限,則發(fā)出報警。航跡保存是定時(shí)記錄船舶位置并顯示,醒目、直觀(guān)的航跡顯示可以使航海人員對船位信息、航行歷程及周邊環(huán)境有清楚的了解。 GPS接收模塊:負責定時(shí)讀取GPS接收儀的數據,解析出地理經(jīng)緯度坐標、時(shí)間、航速與航向等信息。外置的GPS接收儀通過(guò)RS232連接到系統,GPS接收儀會(huì )定時(shí)往系統發(fā)送符合NMEA(美國航海電子協(xié)會(huì ))標準的數據。該模塊只需定向讀取RS232串口數據,根據NMEA格式解析出地理經(jīng)緯度坐標、時(shí)間、航速與航向的信息即可。 本系統的部分界面如圖4所示。目前本系統已經(jīng)出海試運行,實(shí)踐證明本系統能實(shí)時(shí)顯示船舶當前航行狀況,快速響應用戶(hù)操作,為航海人員提供可靠的電子海圖信息。 隨著(zhù)嵌入式技術(shù)的發(fā)展,嵌入式系統設備的性能逐步提高,船舶導航系統的構建有了更多的選擇。本文提出的基于GPS和電子海圖的嵌入式船舶導航系統,使用嵌入式32位處理器和嵌入式Linux操作系統,具有海圖漫游、海圖查詢(xún)和航行信息管理等豐富的功能,具有經(jīng)濟實(shí)用、操作簡(jiǎn)便、功能可靠、快速響應的優(yōu)點(diǎn),已經(jīng)得到實(shí)際的海上應用。 |