凌濤
摘要:為了減少車輛對于單一導(dǎo)航系統(tǒng)的依賴性,對北斗/GPS組成的雙模導(dǎo)航系統(tǒng)進(jìn)行了研究。主要做了以下工作:首先,是根據(jù)雙模導(dǎo)航終端的需求建立了嵌入式硬件和軟件平臺。硬件平臺包括對系統(tǒng)中各模塊的連接與系統(tǒng)的搭建,通過了解接收模塊的電氣特性進(jìn)行相應(yīng)設(shè)計,實現(xiàn)硬件電路部分的搭建。軟件平臺里搭建Android開發(fā)環(huán)境;二是通過研究分析北斗二號和GPS的數(shù)據(jù)傳輸協(xié)議以及.Android系統(tǒng)的串口通信技術(shù),針對北斗/GPS雙模模塊數(shù)據(jù)傳輸特點,完成數(shù)據(jù)的接收與解析模塊的設(shè)計、實現(xiàn)。提出的設(shè)計方案和解決方案均已得到實驗驗證,該系統(tǒng)的研制有助于很好地推動我國北斗導(dǎo)航的民用化。
關(guān)鍵詞:北斗;GPS;雙模導(dǎo)航;Android
國內(nèi)城鎮(zhèn)化進(jìn)程加快,城鎮(zhèn)道路建設(shè)日新月異,機動車數(shù)量增幅明顯,為及時掌握路況信息,緩解交通擁擠壓力以及解決各國汽車高速發(fā)展帶來的諸多問題,車載導(dǎo)航系統(tǒng)已成為了首要方案。衛(wèi)星技術(shù)實現(xiàn)導(dǎo)航則是目前世界上廣泛采用的車載導(dǎo)航技術(shù)。衛(wèi)星導(dǎo)航系統(tǒng)由于擁有其獨特的使用價值,可以為用戶提供定位、導(dǎo)航和授時服務(wù),且精度高,受自然條件影響小等特點,被世界各國廣泛應(yīng)用于軍民領(lǐng)域。目前世界上較為著名的是美國的GPS、歐盟的Galileo及俄羅斯的Glonass。我國雖然起步較晚,但發(fā)展迅速,北斗二代作為我國自主研發(fā)的衛(wèi)星導(dǎo)航系統(tǒng),經(jīng)過最近幾年發(fā)展已經(jīng)逐漸成熟。北斗二代定位原理與GPS等一樣,均采用了單向測距三維導(dǎo)航。目前北斗導(dǎo)航系統(tǒng)也分為民用和軍用兩種版本。民用版本精度是10米,軍用版本精度是5-6米,測速精度是0.2m/s,授時精度50ns。
目前國內(nèi)市場上的導(dǎo)航系統(tǒng)大多為單一定位模式,本文設(shè)計的是一種可以同時接收兩種衛(wèi)星導(dǎo)航系統(tǒng)的信號,通過將兩種信號組合進(jìn)行定位,從而減少對單一導(dǎo)航系統(tǒng)的依賴性。
1定位系統(tǒng)的總體設(shè)計
1.1系統(tǒng)設(shè)計方案
本文設(shè)計思路是利用Android系統(tǒng)在Cortex-A8微處理器平臺上開發(fā),集成車載導(dǎo)航系統(tǒng)所需的各功能模塊,并編寫配套的硬件驅(qū)動,利用北斗/GPS雙模導(dǎo)航模塊接收定位數(shù)據(jù),通過串口接口把定位數(shù)據(jù)傳遞到系統(tǒng)內(nèi)部,在系統(tǒng)內(nèi)部將處理過的數(shù)據(jù)通過終端實現(xiàn)定位功能。可以減少單星導(dǎo)航情況下可能會出現(xiàn)的信號衰減等情況。圖1為硬件平臺框圖。
1.2硬件模塊
本文設(shè)計的車載導(dǎo)航定位系統(tǒng)采用三星公司的S5PV210芯片作為主處理器,這是一款基于Cortex-A8處理器,運行主頻1GHz,擁有512M DDR2 SDRAM及1GB SLC NAND Flash。外接7英寸的顯示屏,便于人工操作。北斗/GPS雙模導(dǎo)航模塊采用了和芯星通科技(北京)有限公司的UM220芯片,通過RS-232接口與系統(tǒng)相連。該UM220芯片具有集成度高,功耗低,價格低等特點,比較適合現(xiàn)階段應(yīng)用在導(dǎo)航系統(tǒng)中。
2軟件設(shè)計流程
隨著Android系統(tǒng)的普及化,現(xiàn)在大部分人對該系統(tǒng)都操作熟練,本文所設(shè)計系統(tǒng)也定位在Android系統(tǒng)之上,便于操作,亦方便日后對系統(tǒng)進(jìn)行完善增加其他功能。所以該系統(tǒng)首先搭建Android開發(fā)平臺,然后在平臺內(nèi)對數(shù)據(jù)進(jìn)行相應(yīng)的解析處理。數(shù)據(jù)的處理是按照信號的接收一處理的這一流程來進(jìn)行整體設(shè)計的。
2.1Android開發(fā)環(huán)境的搭建
由于嵌入式系統(tǒng)是針對具體應(yīng)用,嵌入式設(shè)備資源不足以支撐軟件開發(fā)的資源,所以需要用到交叉開發(fā)模式。所以需要安裝交叉編譯器,在此基礎(chǔ)知識之上再制作根文件系統(tǒng)和An-droid應(yīng)用環(huán)境搭建。環(huán)境搭建好以后就可以對Android源碼進(jìn)行相應(yīng)的編譯并對開發(fā)環(huán)境進(jìn)行搭建。搭建好以后即可以對整個系統(tǒng)進(jìn)行軟件實現(xiàn)。
2.2北斗/GPS模塊
本文選用的北斗/GPS接收模塊也是遵循著NMEA-0183v3.0制造的,只是為了北斗信號的接收,增加了一些北斗二號協(xié)議。由美國國家海洋電子協(xié)會(National Marine ElectronicsAssociation)為海用電子設(shè)備制定的NEMA-0183協(xié)議,目前已經(jīng)成為了GPS導(dǎo)航設(shè)備統(tǒng)一的RTCM(Radio Technical Commis-sion for Maritime services)標(biāo)準(zhǔn)協(xié)議。
該協(xié)議采用ASCII碼,幀格式形如:Saaccc,fff,fff…,fff*hh
由于NEMA-0183協(xié)議里的數(shù)據(jù)幀,大致劃分起來就是幀頭、數(shù)據(jù)及幀尾三大部分,故我們在進(jìn)行數(shù)據(jù)處理時,一般可以通過幀頭先行進(jìn)行判斷。
2.3定位系統(tǒng)移植
由于北斗/GPS雙模系統(tǒng)的工作原理與Android源碼提供的GPS模擬器定位模式基本一致,所以我們參考Android的源碼來對北斗/GPS接收模塊進(jìn)行移植工作。
在這里,所要解決的是Android的驅(qū)動部分與HAL(硬件抽象層)兩個部分的源碼進(jìn)行修改。由于這里采用的北斗/GPS接收模塊是采用串口通信,而Android源碼內(nèi)本身也提供了串口驅(qū)動,所以這個部分無需做過多修改,只要使串口通信模式與北斗/GPS接收模塊保持一致即可。然而對于HAL層的實現(xiàn)則比較繁瑣,這也是Android系統(tǒng)自身的特點所在。
2.4北斗/GPS實現(xiàn)
系統(tǒng)中所用的雙模信號接收模塊,其自身是輸出NEMA數(shù)據(jù),接口實現(xiàn)較易,直接將其與串口對接,系統(tǒng)即可直接處理數(shù)據(jù)。在Android系統(tǒng)中,串口的對接,通常是直接設(shè)置串口,本系統(tǒng)當(dāng)中將串口設(shè)置為/dev/serial3。
Android系統(tǒng)中的HAL層,主要包括對串口設(shè)備的初始化,接收到的衛(wèi)星數(shù)據(jù)大都在此處進(jìn)行解析等工作。由于Android系統(tǒng)中默認(rèn)是GPS,而系統(tǒng)增加了對北斗信號的處理,所以在這里要進(jìn)行一些修改,使Android也能解析北斗信號。
接下來是建gps.c
這里首先是需要初始化,然后對接收到NEMA數(shù)據(jù),采用“獲取一解析一上報”的解析方式。在GpsInterface.init的實現(xiàn)中,完成對北斗/GPS接收模塊的初始化。接下來打開接收模塊,系統(tǒng)確認(rèn)模塊以及正常工作。初始化工作完成后,通常會啟動一個polling線程,用來循環(huán)監(jiān)聽接收模塊上狀態(tài)的變化,判斷是否發(fā)送控制命令或是產(chǎn)生了NEMA的數(shù)據(jù)信息。Gpsln-terrace里的開始和停止命令此時將控制這個線程的進(jìn)行與停止。如果接收模塊產(chǎn)生了NEMA數(shù)據(jù)后,立即對數(shù)據(jù)進(jìn)行解析,然后把數(shù)據(jù)存放到GpsLocation中,將解析過后的數(shù)據(jù)通過GpsCallbacks上報給上層應(yīng)用。
北斗/GPS接收模塊采用的是NMEA-0813標(biāo)準(zhǔn),接收到的“GNGGA”、“GNGLL”、“GNGSA”、“GPGSV”、“BDGSV”、“GN-RMC”這幾種語句內(nèi),真正用到的是GNRMC。“GPGSV”、“BDGSV”是可視衛(wèi)星數(shù)量,如若進(jìn)行單獨導(dǎo)航時,則也相對關(guān)鍵。所以在這里,將重點對這三組數(shù)據(jù)進(jìn)行解析。
首先是對“GPGSV”、“BDGSV”這兩組解析。下面給出關(guān)鍵部分代碼。
3系統(tǒng)測試運行
為驗證本文導(dǎo)航系統(tǒng)數(shù)據(jù)處理的正確性和有效性,這里采用串口工具,將其采集到的雙模導(dǎo)航的數(shù)據(jù)顯示出來,以便觀察和分析數(shù)據(jù)。圖2展示了系統(tǒng)接收到的雙模數(shù)據(jù)信息。
圖3是雙模導(dǎo)航系統(tǒng)進(jìn)行工作所得到的經(jīng)緯度。在實驗中測得的坐標(biāo)為,緯度:北緯31,5328056,經(jīng)度:東經(jīng)117.1833574,與實際坐標(biāo)基本相符。通過以上測試表面,雙模導(dǎo)航數(shù)據(jù)處理程序能夠正常運行,準(zhǔn)確接收并且解析北斗/GPS所獲得的導(dǎo)航數(shù)據(jù),且數(shù)據(jù)完整。
另外對系統(tǒng)進(jìn)行三種模式定位所需時間進(jìn)行了粗略記錄。如表1所示。
4測試結(jié)果分析
通過上述測試,該終端基本可以達(dá)到預(yù)定的設(shè)計要求,系統(tǒng)實現(xiàn)了兩種衛(wèi)星定位信號的收能力。終端使用電子地圖的情況下,初步達(dá)到了車載導(dǎo)航定位系統(tǒng)所應(yīng)有的基本功能。
在本次測試中,由于導(dǎo)航終端所處位置建筑密度較大,受周邊建筑影響。定位時,僅有兩顆北斗二號衛(wèi)星(如圖4所示),但由于同時有至少4顆的GPS衛(wèi)星存在,所以依然未影響定位,且定位較為準(zhǔn)確。由此可以看出雙模導(dǎo)航的優(yōu)越性,以往單模衛(wèi)星定位時,在受外部環(huán)境的影響下會由于定位衛(wèi)星數(shù)量不足,而導(dǎo)致無法定位。在本系統(tǒng)里,恰恰由于是采用了雙模定位,可見雙模導(dǎo)航系統(tǒng)可以大大減少空間的“盲區(qū)”,增加了車載導(dǎo)航的實用性與便捷性。等到北斗二號在2020年正式投人使用時,將顯著提高當(dāng)前導(dǎo)航終端的定位精度和實用性。
本文研究的定位終端系統(tǒng)的實驗結(jié)果達(dá)到設(shè)計預(yù)期。通過提取北斗/GPS雙模導(dǎo)航模塊接收到的衛(wèi)星數(shù)據(jù)進(jìn)行解析,得以實現(xiàn)具有雙重衛(wèi)星接收狀態(tài)的車載導(dǎo)航終端。特別是在GPS搜星效果不佳的情況下,加入了北斗信號后,大大提高了定位速度,從而保證了用戶在使用該終端時,可以在任何時間、空間都可以接收到衛(wèi)星定位服務(wù),使用戶行車得到最大的保障。