0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Linux和MPC823E嵌入式處理器實(shí)現(xiàn)船舶導(dǎo)航系統(tǒng)的設(shè)計(jì)

電子設(shè)計(jì) ? 來(lái)源:電子技術(shù)應(yīng)用 ? 作者:胡力,陳耀武,汪 ? 2021-06-21 17:01 ? 次閱讀

作者:胡力,陳耀武,汪樂(lè)宇

介紹了一種基于GPS和電子海圖、使用嵌入式Linux操作系統(tǒng)的船舶導(dǎo)航系統(tǒng),討論了船舶導(dǎo)航GUI、電子海圖數(shù)據(jù)的預(yù)海圖顯示等關(guān)鍵技術(shù),并給出了解決方案。

以GPS和電子海圖為技術(shù)核心,為航海用戶(hù)提供安全航行所必需的海圖、航路等信息的船舶導(dǎo)航系統(tǒng)目前正在全世界得到廣泛應(yīng)用,大大提高了船舶導(dǎo)航技術(shù)與船航行的安全性。

船舶導(dǎo)航系統(tǒng)目前主要有PC機(jī)系統(tǒng)、單片機(jī)系統(tǒng)和嵌入式系統(tǒng)等三種實(shí)現(xiàn)方式。常見(jiàn)的PC機(jī)船舶導(dǎo)航系統(tǒng)采用基于Windows的GIS軟件(如MapInfo、MapGIS)設(shè)計(jì),具有系統(tǒng)功能豐富、響應(yīng)速度快、人機(jī)交互界面友好等特點(diǎn),但成本較高、系統(tǒng)集成度差,不適合用為專(zhuān)業(yè)系統(tǒng)使用。單片機(jī)電子海圖應(yīng)用系統(tǒng)由于處理器運(yùn)算能力較弱,資源有限,支持網(wǎng)絡(luò)化困難,而且在圖形用戶(hù)界面實(shí)現(xiàn)較為困難,近年來(lái)已較少使用。隨著嵌入式系統(tǒng)的發(fā)展,電子海圖應(yīng)用系統(tǒng)有了更好的選擇,使用嵌入式32位處理器和嵌入式操作系統(tǒng)的產(chǎn)品逐漸出現(xiàn)。由于系統(tǒng)集成度高、硬件成本較低等特點(diǎn),在近幾年獲得較多應(yīng)用。而采用WindowsCE、Vxworks、Palm OS等商用嵌入式操作系統(tǒng),存在軟件開(kāi)發(fā)成本較高的缺點(diǎn)。

本文提出并設(shè)計(jì)了一種基于GPS和電子海圖,使用嵌入式32位處理器和嵌入式Linux的船舶導(dǎo)航系統(tǒng)。該系統(tǒng)采用Motorola公司的MPC823E嵌入式處理器,外接GPS接收儀和256色液晶顯示器,基于嵌入式Linux操作系統(tǒng),具有源碼開(kāi)放、易移植、模塊化、資源豐富的優(yōu)勢(shì)。圖形用戶(hù)界面(GUI)采用QT/Embedded圖形開(kāi)發(fā)庫(kù),電子海圖用海司航保部的符合國(guó)家軍用標(biāo)準(zhǔn)的矢量海圖,并預(yù)先對(duì)電子海圖數(shù)據(jù)進(jìn)行預(yù)處理,刪除冗余數(shù)據(jù),進(jìn)行二維幾何數(shù)據(jù)壓縮、建立網(wǎng)絡(luò)索引。在此基礎(chǔ)上進(jìn)行船舶導(dǎo)航系統(tǒng)軟件設(shè)計(jì),使得系統(tǒng)響應(yīng)速度大大加快。

1 系統(tǒng)硬件結(jié)構(gòu)和軟件開(kāi)發(fā)平臺(tái)

系統(tǒng)整體結(jié)構(gòu)如圖1所示。本系統(tǒng)使用Motolora公司的MPC823E嵌入式處理器,該處理器采用嵌入式PowerPC處理核,采用RISC技術(shù),主頻為75MHz,具有強(qiáng)大的處理能力,并針對(duì)通信進(jìn)行優(yōu)化,通過(guò)獨(dú)立的通信模塊(CPM)專(zhuān)門(mén)處理通信事務(wù)。系統(tǒng)通過(guò)通用串行總線控制器USB)外接鍵盤(pán)和鼠標(biāo);通過(guò)液晶顯示(LCD)控制器外接一個(gè)256色的TFT LCD 640%26;#215;480彩色液晶顯示器,用于圖形用戶(hù)界面的顯示;通過(guò)RS232外接GPS接收儀;系統(tǒng)外擴(kuò)32MB Flash空間,用于存儲(chǔ)Linux內(nèi)核、應(yīng)用程序和電子海圖數(shù)據(jù);系統(tǒng)外擴(kuò)32MB SDRAM,用于操作系統(tǒng)內(nèi)存空間,存放動(dòng)態(tài)數(shù)據(jù)和運(yùn)行程序。

系統(tǒng)軟件基于嵌入式Linux操作系統(tǒng),使用C++語(yǔ)言進(jìn)行軟件開(kāi)發(fā),并選擇QT/Embedded作為圖形用戶(hù)界面(GUI)開(kāi)發(fā)環(huán)境。QT是Trolltech公司推出的跨平臺(tái)C++圖形用戶(hù)開(kāi)發(fā)庫(kù),QT/Embedded是QT面向嵌入式應(yīng)用的版本,具有可移植性強(qiáng),支持Linux、Windows、Mac的優(yōu)點(diǎn),移值到新平臺(tái)時(shí),只需用該平臺(tái)的編譯器重新編譯即可;面向?qū)ο螅捎肅++語(yǔ)言,加上特有的信號(hào)/槽(singal/slot)機(jī)制,使得面向?qū)ο蟮某绦蛟O(shè)計(jì)變得簡(jiǎn)單而有效;可裁剪,通過(guò)去掉無(wú)關(guān)模塊可以調(diào)整庫(kù)文件的大小、適合嵌入式系統(tǒng)使用;GUI界面支持大量標(biāo)準(zhǔn)的窗口部件,并提供了界面設(shè)計(jì)工具designer;支持國(guó)際化,支持中文顯示,并提供了多語(yǔ)言支持工具linguist。QT/Embedded強(qiáng)大的圖形繪制功能在電子海圖的應(yīng)用系統(tǒng)中得到了充分的應(yīng)用。

系統(tǒng)從全球定位系統(tǒng)GPS實(shí)時(shí)獲取船舶位置(包括經(jīng)緯度與時(shí)間等)和航行信息(包括船速與航向等),在電子海圖上顯示相關(guān)導(dǎo)航信息,用戶(hù)通過(guò)精簡(jiǎn)的鼠標(biāo)鍵盤(pán)操作,提供海圖漫游、海圖查詢(xún)和航行信息管理等功能。

2 電子海圖數(shù)據(jù)處理

2.1電子海圖數(shù)據(jù)組織結(jié)構(gòu)

本系統(tǒng)使用海司航保部的軍用矢量格式MVCF(Military Vector Chart Format)海圖。MVCF以圖幅為單位組織,采用目錄結(jié)構(gòu),目錄名即為電子海圖的編號(hào)。一個(gè)圖幅目錄由一個(gè)元數(shù)據(jù)文件和多個(gè)海圖層次文件組成。元數(shù)據(jù)文件記錄每幅圖的比例尺、基準(zhǔn)緯度等控制信息,海圖層次文件由40多種圖層文件組成。例如海洋陸地層、港口設(shè)施層等。每一種圖層文件由圖形文件、索引文件和屬性文件組成。其中圖形文件記錄了海圖要素的墨卡托投影坐標(biāo)數(shù)據(jù),索引文件記錄了對(duì)應(yīng)的圖形文件中海圖要素在圖形文件中的偏移量,

屬性文件是dbase表文件,記錄了海圖要素屬性,包括要素的名字、備注等。

這樣一幅海圖包括130多個(gè)文件,本系統(tǒng)使用的海圖包括中國(guó)總圖、沿海航行圖、港灣圖等共74幅海圖,占用空間260多兆字節(jié)。由于嵌入式系統(tǒng)存儲(chǔ)空間和處理器運(yùn)算能力的限制,需要在PC機(jī)上對(duì)電子海圖進(jìn)行數(shù)據(jù)精簡(jiǎn)壓縮和優(yōu)化,以提高系統(tǒng)響應(yīng)速度。

2.2 電子海圖數(shù)據(jù)壓縮

(1)刪除冗余數(shù)據(jù)

MVCF海圖數(shù)據(jù)量大,線狀要素和多邊形要素細(xì)節(jié)豐富,而周期入式電子海圖應(yīng)用系統(tǒng)由于液晶顯示器的大小和分辨率的限制,有相當(dāng)一部分?jǐn)?shù)據(jù)浪費(fèi)。本系統(tǒng)使用的液晶顯示器分辨率為640%26;#215;480,長(zhǎng)和寬為21cm%26;#215;15cm,可以計(jì)算出像素間距約為0.031cm。用各種比例尺的電子海圖顯示時(shí),線狀或面狀實(shí)體的某些點(diǎn)的間隔如果小于像素間距,顯然無(wú)法顯示,應(yīng)刪除這種冗余點(diǎn)。以像素間距作為閥值,刪除海圖冗余數(shù)據(jù),算法如下:

選定一個(gè)線狀或面狀實(shí)體,順序遍歷其坐標(biāo)點(diǎn),除起點(diǎn)和終點(diǎn)外,對(duì)每個(gè)點(diǎn)計(jì)算該點(diǎn)與上一個(gè)點(diǎn)的距離,若小于閥值,則刪除該點(diǎn)。

(2)二維幾何壓縮

使用合適的二維幾何壓縮算法能使電子海圖在保持形狀的前提下減少數(shù)據(jù)量。本系統(tǒng)使用DouglasPoiker算法進(jìn)行線狀和面狀實(shí)體的壓縮。該算法的思想是,從一個(gè)近似的形狀開(kāi)始,逐步修正。該算法同樣需要一個(gè)閥值,本系統(tǒng)可使用上文的同一閥值。以面狀實(shí)體為例,算法過(guò)程如下:

選擇多邊形P的兩個(gè)頂點(diǎn)V1和V2,考慮V1、V2,V1組成的多邊形Q是P的一個(gè)近似,掃描P中其他頂點(diǎn),選擇距離Q的邊最遠(yuǎn)的頂點(diǎn)W,把W加入到Q中形成新的多邊形,繼續(xù)掃描P中的其他頂點(diǎn),直到P中剩余的頂點(diǎn)距離Q邊的最長(zhǎng)距離小于閥值為止。多邊形Q即為壓縮結(jié)果。

2.3建立網(wǎng)格索引

高效的索引結(jié)構(gòu)是提高數(shù)據(jù)訪問(wèn)效率的關(guān)鍵。MVCF海圖數(shù)據(jù)量大,電子海圖應(yīng)用系統(tǒng)實(shí)際使用過(guò)程中,顯示的區(qū)域通常只是一個(gè)圖幅的一部分,如果能快速搜索到這部分的海圖數(shù)據(jù),系統(tǒng)的響應(yīng)速度將大大提高。本系統(tǒng)使用網(wǎng)格索引,MVCF海圖按比例尺分為從1:4000000到1:25000共10多級(jí),對(duì)每一種比例尺的海圖,都建立一個(gè)網(wǎng)格索引,方法如下:

用一個(gè)矩形網(wǎng)格與海圖要素逐個(gè)進(jìn)行相交或包容判斷,凡是在網(wǎng)格中的海圖要素,就記錄下該要素在圖形文件內(nèi)的偏移量,最后形成網(wǎng)格索引文件。其中,多邊形要素與矩形網(wǎng)格的相交判斷方法是,若多邊形的一部分端點(diǎn)落在矩形內(nèi),而另一部分卻落在矩形的外部,則兩者是相交的;多邊形與矩形的包容判斷是,若多邊形所有的端點(diǎn)落在矩形內(nèi)則是包容于關(guān)系,若矩形所有的端點(diǎn)落在多邊形內(nèi)則是包容關(guān)系。線狀要素也可用相似的方法判斷。

3 系統(tǒng)軟件的設(shè)計(jì)與實(shí)現(xiàn)

系統(tǒng)軟件如圖2所示,主要由以下模塊組成:系統(tǒng)界面與管理模塊、海圖數(shù)據(jù)模塊、海圖算法模塊、海圖顯示模塊、航行信息管理模塊、GPS接收模塊等。

系統(tǒng)界面與管理模塊:實(shí)現(xiàn)系統(tǒng)主界面和操作菜單,通過(guò)調(diào)用其它模塊實(shí)現(xiàn)海圖漫游、自動(dòng)對(duì)中、海圖查詢(xún)、管理航線、保存航行記錄等功能。

海圖數(shù)據(jù)模塊:負(fù)責(zé)讀取電子海圖文件,實(shí)現(xiàn)海圖查詢(xún)功能。通過(guò)dbase屬性文件搜索地圖要素,可以通過(guò)SQL語(yǔ)句在屬性文件中找到該要素,從而得到該要素在索引文件中的位置。

海圖算法模塊:包括程序中用到的各種算法,如地理坐標(biāo)、墨卡托投影坐標(biāo)和屏幕坐標(biāo)之間的相互轉(zhuǎn)換,點(diǎn)與點(diǎn)、點(diǎn)與線之間距離,線的長(zhǎng)度,多邊形的周長(zhǎng)和面積等。

海圖顯示模塊:海圖顯示是系統(tǒng)的核心模塊。該模塊根據(jù)管理模塊給出的中心點(diǎn)位置及顯示范圍的參數(shù),確定需要繪圖的網(wǎng)格,根據(jù)網(wǎng)格索引,快速完成繪制海圖的功能??紤]到海圖漫游通常是連續(xù)的,使用了位圖緩存來(lái)提高響應(yīng)速度,每次畫(huà)圖的時(shí)候,先在緩存中找,找不到則擴(kuò)大范圍畫(huà)圖,并保存到位圖緩存,對(duì)緩存的管理采用最近最少使用替換算法(LRU)。具體流程如圖3所示。

航行信息管理模塊:完成航線設(shè)置、航線偏移報(bào)警、保存航跡等航行管理功能。航線設(shè)置是根據(jù)航海用戶(hù)對(duì)目的點(diǎn)的連續(xù)選擇,形成一條航線,并對(duì)該航線設(shè)置一個(gè)偏航極限。本模塊定時(shí)從GPS接收模塊獲取地圖坐標(biāo)信息,判斷當(dāng)前位置到航線的距離,若超出偏航極限,則發(fā)出報(bào)警。航跡保存是定時(shí)記錄船舶位置并顯示,醒目、直觀的航跡顯示可以使航海人員對(duì)船位信息、航行歷程及周邊環(huán)境有清楚的了解。

GPS接收模塊:負(fù)責(zé)定時(shí)讀取GPS接收儀的數(shù)據(jù),解析出地理經(jīng)緯度坐標(biāo)、時(shí)間、航速與航向等信息。外置的GPS接收儀通過(guò)RS232連接到系統(tǒng),GPS接收儀會(huì)定時(shí)往系統(tǒng)發(fā)送符合NMEA(美國(guó)航海電子協(xié)會(huì))標(biāo)準(zhǔn)的數(shù)據(jù)。該模塊只需定向讀取RS232串口數(shù)據(jù),根據(jù)NMEA格式解析出地理經(jīng)緯度坐標(biāo)、時(shí)間、航速與航向的信息即可。

本系統(tǒng)的部分界面如圖4所示。目前本系統(tǒng)已經(jīng)出海試運(yùn)行,實(shí)踐證明本系統(tǒng)能實(shí)時(shí)顯示船舶當(dāng)前航行狀況,快速響應(yīng)用戶(hù)操作,為航海人員提供可靠的電子海圖信息。

隨著嵌入式技術(shù)的發(fā)展,嵌入式系統(tǒng)設(shè)備的性能逐步提高,船舶導(dǎo)航系統(tǒng)的構(gòu)建有了更多的選擇。本文提出的基于GPS和電子海圖的嵌入式船舶導(dǎo)航系統(tǒng),使用嵌入式32位處理器和嵌入式Linux操作系統(tǒng),具有海圖漫游、海圖查詢(xún)和航行信息管理等豐富的功能,具有經(jīng)濟(jì)實(shí)用、操作簡(jiǎn)便、功能可靠、快速響應(yīng)的優(yōu)點(diǎn),已經(jīng)得到實(shí)際的海上應(yīng)用。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    18924

    瀏覽量

    227204
  • 嵌入式
    +關(guān)注

    關(guān)注

    5045

    文章

    18816

    瀏覽量

    298453
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207894
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嵌入式導(dǎo)航系統(tǒng)DIY分享

    地理整合性應(yīng)用與其因應(yīng)方案,也就是手持、車(chē)載 GPS 全球衛(wèi)星導(dǎo)航系統(tǒng),便可解決對(duì)此人們急迫的需求性?;?S3C2440A 微處理器和 Win CE 5.0 嵌入式操作
    發(fā)表于 12-10 14:25

    DIY分享:嵌入式導(dǎo)航系統(tǒng)硬件+軟件設(shè)計(jì)教程

    地理整合性應(yīng)用與其因應(yīng)方案,也就是手持、車(chē)載 GPS 全球衛(wèi)星導(dǎo)航系統(tǒng),便可解決對(duì)此人們急迫的需求性?;?S3C2440A 微處理器和 Win CE 5.0 嵌入式操作
    發(fā)表于 02-12 08:00

    怎么實(shí)現(xiàn)基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)?
    發(fā)表于 05-18 06:12

    怎么實(shí)現(xiàn)基于嵌入式S3C2440的船舶導(dǎo)航系統(tǒng)設(shè)計(jì)?

    怎么實(shí)現(xiàn)基于嵌入式S3C2440的船舶導(dǎo)航系統(tǒng)設(shè)計(jì)?
    發(fā)表于 05-21 06:19

    請(qǐng)問(wèn)怎樣去設(shè)計(jì)一種嵌入式船舶導(dǎo)航系統(tǒng)?

    本文介紹了一種基于GPS和電子海圖、使用嵌入式Linux操作系統(tǒng)船舶導(dǎo)航系統(tǒng)。
    發(fā)表于 06-04 06:43

    如何實(shí)現(xiàn)基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)?

    如何實(shí)現(xiàn)基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)?
    發(fā)表于 12-27 07:52

    請(qǐng)問(wèn)MPC823MPC823E是否引腳兼容?

    MPC823MPC823E 是否引腳兼容?或者不同的家庭會(huì)有不同的管腳排列?
    發(fā)表于 03-23 08:44

    嵌入式Linux下LCD界面應(yīng)用程序開(kāi)發(fā)

    介紹了MPC823e 的LCD 控制。根據(jù)10. 16 cm(4 in) STN2LCD LCBA7 T211W顯示模塊的時(shí)序要求設(shè)計(jì)了該LCD 顯示模塊與MPC823e LCD 控制
    發(fā)表于 04-24 10:39 ?41次下載

    基于MPC823e嵌入式多媒體信息終端硬件開(kāi)發(fā)平臺(tái)設(shè)計(jì)

    介紹了嵌入式系統(tǒng)開(kāi)發(fā)多媒體的應(yīng)用前景、基于PowerPC 內(nèi)核的嵌入式控制芯片MPC823e, 及一種開(kāi)發(fā)
    發(fā)表于 08-24 09:18 ?13次下載

    基于嵌入式LINUX的車(chē)載導(dǎo)航系統(tǒng)設(shè)計(jì)

    本文提出了以ARM 器件為CPU,以嵌入式Linux 為軟件內(nèi)核的GPS 車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)思想,Linux 操作系統(tǒng)是一個(gè)開(kāi)源、免費(fèi)的
    發(fā)表于 01-13 16:42 ?23次下載

    基于GPS和電子海圖的嵌入式船舶導(dǎo)航系統(tǒng)設(shè)計(jì)

    介紹了一種基于GPS和電子海圖、使用嵌入式Linux操作系統(tǒng)船舶導(dǎo)航系統(tǒng),討論了船舶
    發(fā)表于 07-05 16:39 ?18次下載

    基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì)

    基于Linux嵌入式車(chē)載導(dǎo)航系統(tǒng)的設(shè)計(jì) 1.前言HMS30C7202 嵌入式微處理器是目前性?xún)r(jià)比交優(yōu)秀的芯片,由于其優(yōu)良的性能用于替代早期的芯片,在車(chē)輛
    發(fā)表于 11-06 10:01 ?3265次閱讀
    基于<b class='flag-5'>Linux</b>的<b class='flag-5'>嵌入式</b>車(chē)載<b class='flag-5'>導(dǎo)航系統(tǒng)</b>的設(shè)計(jì)

    HHPPC823e-WLAN-LCD-USB-R1:基于MPC823嵌入式開(kāi)發(fā)套件

    HHPPC823e-WLAN-LCD-USB-R1是基于MPC823處理器,是華恒HHPPC SDK系列產(chǎn)品的嵌入式Linux開(kāi)發(fā)套件;它保
    發(fā)表于 04-19 21:06 ?18次下載

    嵌入式導(dǎo)航系統(tǒng)是在怎樣的設(shè)計(jì)下實(shí)現(xiàn)

    構(gòu)成嵌入式導(dǎo)航系統(tǒng)的硬件核心是 S3C2440A 微處理器。它是一款 ARM920T 的內(nèi)核 RISC 處理器
    發(fā)表于 01-10 14:05 ?921次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>導(dǎo)航系統(tǒng)</b>是在怎樣的設(shè)計(jì)下<b class='flag-5'>實(shí)現(xiàn)</b>的

    基于嵌入式Linux的GPS車(chē)載定位導(dǎo)航系統(tǒng)設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于嵌入式Linux的GPS車(chē)載定位導(dǎo)航系統(tǒng)設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-13 10:29 ?0次下載
    基于<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>的GPS車(chē)載定位<b class='flag-5'>導(dǎo)航系統(tǒng)</b>設(shè)計(jì)