張海林,張卿杰,張逸飛,王健羽
(南京農(nóng)業(yè)大學(xué) 工學(xué)院,江蘇 南京 210031)
嵌入式北斗定位便攜終端的設(shè)計(jì)與實(shí)現(xiàn)
張海林,張卿杰,張逸飛,王健羽
(南京農(nóng)業(yè)大學(xué) 工學(xué)院,江蘇 南京 210031)
北斗衛(wèi)星導(dǎo)航系統(tǒng)是我國(guó)自主研制,致力于向全球用戶提供高質(zhì)量的定位、導(dǎo)航和授時(shí)服務(wù)的衛(wèi)星導(dǎo)航系統(tǒng)。相對(duì)于GPS雙頻信號(hào),北斗使用的三頻信號(hào)可以更好的消除高階電離層延遲影響,提高了定位的可靠性和抗干擾能力。另外,北斗導(dǎo)航系統(tǒng)獨(dú)創(chuàng)了短報(bào)文通信服務(wù)功能。本文研究了一種基于arm與linux的北斗定位便攜終端,此終端以i.MX28應(yīng)用處理器為核心,采用5.7寸的電阻式觸摸屏作人機(jī)交互設(shè)備,系統(tǒng)采用超大容量的鏗離子聚合物電池供電,使用UM220-III N雙系統(tǒng)高性能GNSS模塊來(lái)同時(shí)獲取BD2 B1、GPS L1兩個(gè)頻點(diǎn)的定位數(shù)據(jù)。在linux虛擬機(jī)上通過(guò)Qt編程,使用SerialPort類串口通信獲取定位數(shù)據(jù)。通過(guò)matlab分析終端獲取的北斗與GPS定位數(shù)據(jù),可知在本地區(qū)北斗的定位精度與GPS相當(dāng)。
北斗衛(wèi)星導(dǎo)航系統(tǒng);便攜終端;linux;Qt編程;matlab
目前GPS等主流的衛(wèi)星定位系統(tǒng)均是為軍事應(yīng)用而發(fā)展起來(lái)的,完全由軍方控制,一旦爆發(fā)戰(zhàn)爭(zhēng),衛(wèi)星的擁有國(guó)會(huì)控制衛(wèi)星系統(tǒng)或從衛(wèi)星中獲取其他國(guó)家的機(jī)密信息,使得其他國(guó)家處于完全被動(dòng)的地位。另外,現(xiàn)在人們對(duì)于導(dǎo)航、定位的依賴性越來(lái)越大,由衛(wèi)星導(dǎo)航系統(tǒng)衍生出的產(chǎn)品具有很大的市場(chǎng)和很好的發(fā)展前景。為了保證國(guó)家安全與人民生活的方便,中國(guó)自主研制了衛(wèi)星導(dǎo)航系統(tǒng)——中國(guó)北斗衛(wèi)星導(dǎo)航系統(tǒng)。
Linux是一套免費(fèi)使用和自由傳播的開(kāi)源操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。Linux的設(shè)計(jì)思想是以網(wǎng)絡(luò)為核心,是一個(gè)性能穩(wěn)定的,技術(shù)成熟的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
1.1 北斗衛(wèi)星定位系統(tǒng)的工作原理
目前正在建設(shè)的“北斗二代”衛(wèi)星定位系統(tǒng)保留了之前北斗一代的短報(bào)文功能。其基本原理是利用高速運(yùn)動(dòng)衛(wèi)星的瞬間位置作為起算數(shù)據(jù),采用的方法是空間距離后方交會(huì),從而確定待測(cè)點(diǎn)的位置。如圖1北斗二代工作原理,假設(shè)t時(shí)刻在地面待測(cè)點(diǎn)上安置北斗衛(wèi)星定位系統(tǒng)接收機(jī),可以測(cè)得北斗衛(wèi)星定位系統(tǒng)信號(hào)到達(dá)接收機(jī)的時(shí)間△t,再利用接收機(jī)所接收到的衛(wèi)星星歷等其他數(shù)據(jù)可以確定以下方程式[1-2]:上述4個(gè)方程式中待測(cè)點(diǎn)坐標(biāo)x、y、z和vt0為未知參數(shù),其中 di=c△ti(i=1、2、3、4)。 di(i=1、2、3、4)分別為衛(wèi)星1至衛(wèi)星4到接收機(jī)之間的距離?!鱰i(i=1、2、3、4) 分別為衛(wèi)星 1 至衛(wèi)星 4 的信號(hào)到接收機(jī)所經(jīng)歷的時(shí)間,c為光速。
圖1 北斗二代工作原理
方程式中各參數(shù)意義如下:x、y、z為待測(cè)點(diǎn)坐標(biāo)的空間直角坐標(biāo)。 xi、yi、zi(i=1、2、3、4) 分別為衛(wèi)星 1至衛(wèi)星4在t時(shí)刻的空間直角坐標(biāo),可由衛(wèi)星導(dǎo)航電文求得。 vti(i=1、2、3、4) 分別為衛(wèi)星 1 至衛(wèi)星 4 的衛(wèi)星鐘的鐘差,由衛(wèi)星星歷提供。Vt0為接收機(jī)的鐘差。由以上4個(gè)方程即可解算出待測(cè)點(diǎn)的坐標(biāo)x、y、z和接收機(jī)的鐘差vto。
1.2 北斗模塊數(shù)據(jù)的讀取
本文使用UM220-ⅢN北斗模塊,在此模塊中,串口1為主要串口,支持?jǐn)?shù)據(jù)的傳輸、固件升級(jí)等功能,輸入輸出信號(hào)類型為L(zhǎng)VTTL電平。默認(rèn)波特率為9 600 bps,最高可設(shè)置為115 200 bps。打開(kāi)PC上的串口通信軟件,將PC機(jī)連接串口1讀取相應(yīng)的數(shù)據(jù)。串口2可作為備用串口,只可以進(jìn)行數(shù)據(jù)的傳輸,而不能進(jìn)行固件升級(jí)等。
從圖中數(shù)據(jù)可以看出此地 (南京農(nóng)業(yè)大學(xué)浦口校區(qū))經(jīng)緯度為:東經(jīng):118°41',北緯:32°08'。
圖2 北斗模塊顯示原始數(shù)據(jù)
2.1 便攜終端系統(tǒng)拓?fù)浣Y(jié)構(gòu)
此便攜終端主要包括:主控模塊,UM220-III N北斗模塊,RS232模塊,人機(jī)交互模塊,電源模塊。如圖3所示。
圖3 便攜終端拓?fù)浣Y(jié)構(gòu)
北斗定位便攜式終端系統(tǒng)的硬件設(shè)計(jì)根據(jù)此終端的具體功能需求,在現(xiàn)有北斗模塊的基礎(chǔ)上,合理設(shè)計(jì)各部分電路,降低功耗。充分使用集成電路的小型化,使得終端系統(tǒng)集功耗低,集成度高,軟件兼容性好為一體,整個(gè)硬件設(shè)計(jì)結(jié)構(gòu)簡(jiǎn)單,性能可靠。
2.2 便攜終端硬件系統(tǒng)
2.2.1 主控模塊設(shè)計(jì)
本終端系統(tǒng)采用i.MX283A芯片作為核心處理器,處理器主頻最高達(dá)454 MHz,在模塊上集成2路UART、2路 USB Host接口、1路 USB Device接口、NAND FLASH控制器、同步串口、異步串口等。使用USB Device接口下載linux內(nèi)核,利用linux的開(kāi)源特性,方便系統(tǒng)功能的實(shí)現(xiàn)及擴(kuò)展。使用USB Host接口掛載U盤,方便文件和數(shù)據(jù)的傳輸。
主控模塊通過(guò)將這些部件的高度集合,具有成本低廉,功耗小、集成度高、軟件兼容性好等優(yōu)勢(shì)。在模塊上設(shè)置有RESET鍵,方便在模塊運(yùn)行出現(xiàn)異常時(shí)及時(shí)停止并重新啟動(dòng)設(shè)備。同時(shí)run,error,NAND,power4個(gè)指示燈分別顯示主控模塊的工作狀態(tài)和連接狀況。
2.2.2 人機(jī)交互硬件設(shè)計(jì)
通過(guò)控制模塊上的TFT接口將控制模塊與AP_TFT7.0 4線電阻式觸摸屏相連,觸摸屏分辨率達(dá)800×480,靈敏度較高,完全可以滿足用戶控制和操作終端上軟件的要求。
2.2.3 電源模塊設(shè)計(jì)
通過(guò)miniUSB數(shù)據(jù)線將鏗離子聚合物電池與主控模塊的5 V供電接口相連。鏗離子聚合物電池提供的電壓穩(wěn)定,工作時(shí)無(wú)噪聲,攜帶方便,能耗低,可循環(huán)充電使用。
2.3 便攜終端嵌入式軟件系統(tǒng)
linux是目前全球最受歡迎的開(kāi)源操作系統(tǒng)。在使用linux之前,需要一個(gè)linux的環(huán)境,在本文中我們采用在windows下安裝虛擬機(jī)的方式,使用linux系統(tǒng)。
2.3.1 安裝交叉編譯器
交叉編譯器能夠使在一種計(jì)算機(jī)環(huán)境中運(yùn)行的程序,編譯出在另外一種環(huán)境下運(yùn)行的代碼。在本文中,需要進(jìn)行ARM模塊linux操作系統(tǒng)的開(kāi)發(fā),因此選用arm-linux-gcc交叉編譯器[3]。在VMware Player軟件下,安裝Ubuntu虛擬機(jī)。下載arm-none-linuxgnueabi.tar.bz2,并將其解壓到"/home/ctools/"下。解壓命令如下:tar xjvf arm-none-linux-gnueabi.tar.bz2-C/home/ctools/,執(zhí)行命令即可完成安裝。
采用修改全局配置文件的方法設(shè)置全局變量。在終端輸入“sudo vi/etc/profile”命令打開(kāi)profile文件,在末尾添加:export PATH=$PATH:/home/ctools/arm-2011.03/bin/,輸入“./etc/profile”執(zhí)行 profile 文件。此時(shí)已完成交叉編譯器的安裝。在終端中輸入arm-none-linux-gnueabi-gcc即可進(jìn)行測(cè)試,當(dāng)輸出為no input files表示此交叉編譯器可以進(jìn)行正工作。
當(dāng)計(jì)算機(jī)上使用的系統(tǒng)為64位時(shí),由于此交叉編譯器是以32位發(fā)布的,此時(shí)會(huì)出現(xiàn)錯(cuò)誤??梢园惭b32位的兼容庫(kù)解決錯(cuò)誤。在終端輸入如下命令:sudo apt-get install ia32-libs。
2.3.2 Qt編程
Qt是跨平臺(tái)C++圖形用戶界面應(yīng)用程序開(kāi)發(fā)框架,使用Qt[4]只需要一次性開(kāi)發(fā)應(yīng)用程序,無(wú)需重新編寫源代碼,便可以跨不同的嵌入式操作系統(tǒng)運(yùn)行這些程序。在虛擬機(jī)中編寫的串口通信程序,使用serialport類編程,進(jìn)行串口通信時(shí),需要通過(guò)設(shè)置SerialPort類的屬性來(lái)設(shè)置相應(yīng)參數(shù),主要參數(shù)包括:通訊端口號(hào)及波特率、數(shù)據(jù)位、停止位和校驗(yàn)位。編程結(jié)束后在Qt中編譯成功即可顯示讀取串口數(shù)據(jù)的界面。
2.3.3 交叉編譯
將程序移植到arm模塊前,執(zhí)行命令:
將生成的文件夾通過(guò)U盤,轉(zhuǎn)至arm模塊,在電腦上通過(guò)串口軟件(Tera Term)進(jìn)入相應(yīng)的目錄下,執(zhí)行:./文件名-qws即可實(shí)現(xiàn)其功能。
2.3.4 便攜式終端的實(shí)現(xiàn)
將編譯成功的串口通信qt程序移植到開(kāi)發(fā)板上,添加開(kāi)機(jī)自動(dòng)執(zhí)行命令,并且禁止開(kāi)機(jī)啟動(dòng)圖形界面:系統(tǒng)的/etc/rc.d/init.d/start_userapp文件為開(kāi)機(jī)時(shí)自動(dòng)執(zhí)行的腳本,可在腳本then后添加開(kāi)機(jī)需要打開(kāi)的串口通信界面,添加命令如下:
cd/111/serialport ./serialport-qws
并且在/usr/share/zylauncher/start_zylauncher>/dev/null&前添加“#”,禁止開(kāi)機(jī)啟動(dòng)圖形界面。此時(shí)開(kāi)機(jī)之后顯示為串口通信界面。使用串口線將arm和北斗模塊相連,設(shè)置相應(yīng)的端口、波特率就可以讀取數(shù)據(jù)。如圖4所示。
圖4 便攜終端內(nèi)部結(jié)構(gòu)
通過(guò)便攜式終端獲取南京部分地點(diǎn)的經(jīng)緯度數(shù)據(jù)如表1所示。
利用matlab,將上述數(shù)據(jù)繪制成點(diǎn)狀圖,其中B表是北斗數(shù)據(jù),G表示GPS數(shù)據(jù),如圖5所示。
表1 GPS與北斗獲取經(jīng)緯度數(shù)據(jù)
圖5 北斗與GPS數(shù)據(jù)對(duì)比
假設(shè)地球是一個(gè)球體,則其半徑為R=6 378.140 km。如果以0度經(jīng)線為基準(zhǔn),那么根據(jù)地球表面任意兩點(diǎn)的經(jīng)緯度就可以計(jì)算出這兩點(diǎn)間的地表距離(這里忽略地球表面地形對(duì)計(jì)算帶來(lái)的誤差,僅僅是理論上的估算值)。設(shè)第一點(diǎn)A的經(jīng)緯度為(LonA,LatA),第二點(diǎn) B 的經(jīng)緯度為(LonB,LatB),以 0度經(jīng)線為基準(zhǔn),東經(jīng)取經(jīng)度的正值(Longitude),西經(jīng)取經(jīng)度負(fù)值 (-Longitude), 北緯取 90-緯度值 (90-Latitude),南緯取 90+緯度值(90+Latitude),則經(jīng)過(guò)上述處理過(guò)后的兩點(diǎn)被計(jì)為 (MLonA,MLatA)和(MLonB,MLatB)。那么根據(jù)三角推導(dǎo),可以得到計(jì)算兩點(diǎn)距離的如下公式[4-8]:
從數(shù)據(jù)上觀察,經(jīng)度和緯度兩者之間大約相差0.01°左右。通過(guò)matlab計(jì)算各個(gè)點(diǎn)之間的距離,最后計(jì)算平均值得到兩者相差大約在1500米,兩點(diǎn)最近相距大約在760米,還是較為準(zhǔn)確的,最后對(duì)比數(shù)據(jù)可知:
1)通過(guò)北斗數(shù)據(jù)和GPS數(shù)據(jù)的對(duì)比,在本地區(qū)北斗的定位精度已與GPS定位精度相當(dāng)。從北斗由局部到全球的建設(shè)目標(biāo)[9-10]可以得出,北斗現(xiàn)在重點(diǎn)服務(wù)區(qū)是中國(guó)地區(qū)及東南亞周邊地區(qū)。另外,根據(jù)北斗衛(wèi)星的定位工作原理,其精度還有較大的提高空間。
2)通過(guò)室內(nèi)數(shù)據(jù)與室外數(shù)據(jù)的對(duì)比,北斗衛(wèi)星對(duì)于室內(nèi)的位置信息的定位功能較弱,只能獲取少數(shù)衛(wèi)星數(shù)據(jù),定位精度無(wú)法達(dá)到室外定位的水平,但是GPS[11-15]對(duì)室內(nèi)物體的位置信息也可以較為準(zhǔn)確的定位。通過(guò)PC機(jī)圖像定位時(shí)所用到的衛(wèi)星數(shù)目也可以發(fā)現(xiàn),GPS定位室內(nèi)物體時(shí),衛(wèi)星數(shù)量明顯多于北斗衛(wèi)星定位時(shí)的衛(wèi)星數(shù)量。
文中研究了基于北斗在linux系統(tǒng)arm上顯示位置信息的便攜終端。在研究過(guò)程中,充分查閱了北斗衛(wèi)星導(dǎo)航系統(tǒng)的相關(guān)資料,分析了北斗衛(wèi)星定位的工作原理,并將其與GPS對(duì)比,得出北斗導(dǎo)航系統(tǒng)的優(yōu)勢(shì)所在。研究了linux操作系統(tǒng)的使用,并自行配置了linux虛擬機(jī),安裝交叉編譯器與Qt SDK,實(shí)現(xiàn)了在虛擬機(jī)中編寫Qt程序,并將程序交叉編譯轉(zhuǎn)至arm模塊中使用。使用了i.mx28為核心的arm模塊和用UM220-III N北斗模塊,顯示及讀取數(shù)據(jù),保證了終端系統(tǒng)性能穩(wěn)定,數(shù)據(jù)準(zhǔn)確。終端系統(tǒng)使用了我國(guó)自行研制的北斗衛(wèi)星導(dǎo)航系統(tǒng)[16],保證數(shù)據(jù)的安全,產(chǎn)品價(jià)格低廉,更加有利于我國(guó)居民的使用,打破GPS定位產(chǎn)品的壟斷。本終端系統(tǒng)實(shí)現(xiàn)的功能主要有:
1)終端可以實(shí)時(shí)獲取所在地點(diǎn)的位置信息,并且將信息顯示在屏幕上。
2)此終端可以識(shí)別掛載的U盤,可以將數(shù)據(jù)保存在U盤中,也可以實(shí)時(shí)讀取U盤中的數(shù)據(jù),極大的擴(kuò)展了終端系統(tǒng)的存儲(chǔ)性。
3)通過(guò)多位置信息的對(duì)比,此終端可以準(zhǔn)確的獲取位置信息,效果良好,性能穩(wěn)定。
[1]胡睿.嵌入式GPS多功能手持終端的設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2007.
[2]胡菲菲.基于ARM與LINUX的GPS定位終端的研究[D].北京:北方工業(yè)大學(xué),2008.
[3]周立功.嵌入式Linux開(kāi)發(fā)教程 (上冊(cè))[M].北京:北京航空航天大學(xué)出版社,2016.
[4]李喬.基于ARM的北斗/GPS接收機(jī)的研究[D].昆明:昆明理工大學(xué),2014.
[5]施闖,趙齊樂(lè),等.北斗衛(wèi)星導(dǎo)航系統(tǒng)的精密定軌與定位研究[J].中國(guó)科學(xué)雜志,2012(6):854-861.
[6]萬(wàn)琪俊.基于北斗導(dǎo)航衛(wèi)星移動(dòng)定位系統(tǒng)研究與實(shí)現(xiàn)[D].廣州:華南理工大學(xué),2013.
[7]高星偉,過(guò)靜珺,程鵬飛,等.基于時(shí)空系統(tǒng)統(tǒng)一的北斗與GPS融合定位[J].測(cè)繪學(xué)報(bào),2012(5):743-748,755.
[8]肖國(guó)銳,隋立芬,劉長(zhǎng)建,等.北斗導(dǎo)航定位系統(tǒng)單點(diǎn)定位中的一種定權(quán)方法[J].測(cè)繪學(xué)報(bào),2014(9):902-907,916.
[9]耿大威.基于北斗/GPS雙模衛(wèi)星定位系統(tǒng)的車載終端設(shè)計(jì)[D].青島:中國(guó)海洋大學(xué),2013.
[10]郭昊.北斗-GPS雙模衛(wèi)星定位解算方法研究[D].北京:北京交通大學(xué),2015.
[11]蔡昌盛,戴吾蛟,匡翠林,等.利用 UofC消電離層組合的 GPS/GLONASS精密單點(diǎn)定位研究[J].武漢大學(xué)學(xué)報(bào)·信息科學(xué)版, 2012,37(7):827-830.
[12]代雙亮,王爾申,侯賀,等.BD2/GPS信息采集與處理系統(tǒng)的研究[J].電子設(shè)計(jì)工程,2013(21):4-7.
[13]Xingxing Li,Maorong Ge,Jan Dou, et al.Realtime precise point positioning regional augmentation for large GPS reference networks[J].GPS Solutions, 2014(1):61-71.
[14]Changsheng Cai,Yang Gao.Modeling and assessment of combined GPS/GLONASS precise point positioning[J].GPS Solutions,2013(2):223-236.
[15]Dennis Odijk,Peter J G.Teunissen and Baocheng Zhang.Single-Frequency Integer AmbiguityResolution Enabled GPS Precise Point Positioning[J].Journal of Surveying Engineering, 2012,138 (4):193-202.
[16]劉萬(wàn)龍,田國(guó)華,徐 鑫,等.一種衛(wèi)星軌控發(fā)動(dòng)機(jī)流量校驗(yàn)系統(tǒng)[J].火箭推進(jìn),2015(1):109.
Design and implementation of embedded Beidou Positioning portable terminal
ZHANG Hai-lin, ZHANG Qing-jie, ZHANG Yi-fei, WANG Jian-yu
(School of Engineering, Nanjing Agricultural University,Nanjing 210031,China)
Beidou satellite navigation is a system that has independently developed by China and dedicated to provide high quality positioning to customers around the world,satellite navigation system navigation and timing services.Compared with dual frequency GPS signal,the use of the Beidou tri band signal can better eliminate higher-order ionospheric delay effect and improve the positioning reliability and anti-interference ability.In addition,Beidou navigation system created a short message communication service function.In this paper,we study the one based on the arm and Linux Beidou Positioning portable terminal,which treats i.mx28 application processor as the core and treats 5.7 inches resistive touch screen as man-machine interactive equipment.The system uses large capacity lithium ion polymer battery powered,and uses UM220-III dual system high-performance GNSS module to also obtain the positioning data of GPS L1 and BD2 B1frequency points.By QT programming in the Linux virtual machine,the use of the serialport class serial communication is to obtain positioning data.By MATLAB analysis of terminal accessing to the compass and GPS location data,it can be seen that it is fair in the local district Beidou Positioning accuracy and GPS.
Beidou satellite navigation system; portable terminal; Linux; Qt programming; MATLAB
TN98
A
1674-6236(2017)12-0189-05
2016-04-29稿件編號(hào):201604282
張海林(1994—),男,山西臨汾人。研究方向:衛(wèi)星定位導(dǎo)航技術(shù)。