張萬(wàn)威,張東方,徐德東
(1.武漢大學(xué)湖北武漢430079;2.北京遙感設(shè)備研究所北京100854)
近年來(lái),衛(wèi)星導(dǎo)航與位置服務(wù)產(chǎn)業(yè)的快速發(fā)展,使以衛(wèi)星導(dǎo)航、移動(dòng)通信和手持終端技術(shù)相結(jié)合的衛(wèi)星導(dǎo)航產(chǎn)品向微型智能的消費(fèi)電子產(chǎn)品方向發(fā)展[1]。以這些技術(shù)的集成和融合而成的產(chǎn)品,大多建立在嵌入式系統(tǒng)之上,因此在嵌入系統(tǒng)上實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)采集、解碼、定位處理、傳輸存儲(chǔ)已成為衛(wèi)星導(dǎo)航產(chǎn)品開發(fā)應(yīng)用的熱點(diǎn)研究方向[2]。
目前的相關(guān)研究大多只是從如NMEA-0183數(shù)據(jù)流中提取定位結(jié)果數(shù)據(jù)并顯示和存儲(chǔ),缺少關(guān)鍵的定位處理核心環(huán)節(jié)[3-5],而高精度定位解算處理算法是研制自主知識(shí)產(chǎn)權(quán)衛(wèi)星導(dǎo)航系統(tǒng)產(chǎn)業(yè)化應(yīng)用產(chǎn)品的關(guān)鍵技術(shù)之一。
針對(duì)目前實(shí)驗(yàn)室高精度衛(wèi)星定位相關(guān)算法在嵌入式系統(tǒng)下測(cè)試的實(shí)際需求,設(shè)計(jì)了一種基于DSP的GPS數(shù)據(jù)實(shí)時(shí)采集與定位處理系統(tǒng),詳細(xì)闡述了該系統(tǒng)硬件框架方案和系統(tǒng)軟件設(shè)計(jì)的方法與實(shí)現(xiàn)步驟。
基于DSP的GPS實(shí)時(shí)數(shù)據(jù)采集與定位處理系統(tǒng)的硬件框圖如圖1所示,主要由GPS天線、GPS導(dǎo)航模塊、DSP微處理器模塊、PC上位機(jī)等組成。該系統(tǒng)中各硬件選型及功能作用如表1所示,重點(diǎn)對(duì)GPS導(dǎo)航模塊和DSP微處理器模塊這兩個(gè)模塊做介紹。
圖1 系統(tǒng)硬件框圖
表1 系統(tǒng)硬件選型與功能
GPS導(dǎo)航模塊選用OEMStar板卡,該板卡是Novatel公司推出的一款高性能低成本的導(dǎo)航接收模塊,具有尺寸小、功耗低等優(yōu)點(diǎn),可以用于各種具有高精度定位要求的系統(tǒng)集成[6]。其主要性能指標(biāo)如表2所示。
表2 OEMStar主要性能指標(biāo)
通過(guò)串口通信向OEMStar板卡發(fā)送指令,可以輸出GPS數(shù)據(jù)(觀測(cè)值、星歷、電離層參數(shù)),相關(guān)指令及其意義如表3所示。
表3 OEMStar相關(guān)指令及其意義
OEMStar輸出的二進(jìn)制數(shù)據(jù)都是以一完整子幀發(fā)送的,每一個(gè)子幀由幀頭信息、有效數(shù)據(jù)、32位CRC校驗(yàn)碼等組成[6],二進(jìn)制子幀數(shù)據(jù)結(jié)構(gòu)如表4所示。
表4 OEMStar二進(jìn)制子幀數(shù)據(jù)結(jié)構(gòu)
其中,幀頭信息由幀同步字、幀頭長(zhǎng)度、有效數(shù)據(jù)類型、有效數(shù)據(jù)長(zhǎng)度等信息組成。
DSP模塊選用TMS320C6713DSP,該DSP是Ti公司的32位高速浮點(diǎn)型微處理器,主頻最高可達(dá)300 MHz,片上共有264K×8位存儲(chǔ)器,并具有豐富的片上外設(shè)資源,可實(shí)現(xiàn)高速運(yùn)算和大容量存儲(chǔ)[7]。
TMS320C6713DSP沒(méi)有異步串口通信接口,可采用UART芯片TL16C52B來(lái)實(shí)現(xiàn)異步串口通信[8-10]。TL16C52B包含兩路相互獨(dú)立的異步接收器,其可通過(guò)一個(gè)CPLD模塊與TMS320C6713的連接,如圖2所示。
圖2 TL16C52B與TMS320C6713的連接
TL16C52B提供兩個(gè)中斷請(qǐng)求信號(hào)INTA、INTB分別用于UART通道A和B申請(qǐng)C6713中斷,INTA、INTB和USB中斷一起復(fù)用C6713的EXT_INT6,下降沿有效[7,10]。
后續(xù)將EXT_INT6的中斷服務(wù)函數(shù)名稱命為c_int6,當(dāng)UART上有數(shù)據(jù)輸入時(shí),系統(tǒng)自動(dòng)進(jìn)入c_int6來(lái)響應(yīng)UART的中斷請(qǐng)求。
本系統(tǒng)軟件主要包括串口中斷子幀數(shù)據(jù)接收程序、DSP后臺(tái)主程序和導(dǎo)航定位上位機(jī)程序。其中,DSP后臺(tái)主程序包括GPS模塊子幀數(shù)據(jù)的解碼、單點(diǎn)定位解算、定位結(jié)果編碼及串口輸出等3個(gè)模塊。
當(dāng)DSP模塊串口上收到GPS導(dǎo)航模塊輸出的二進(jìn)制數(shù)據(jù)后,系統(tǒng)自動(dòng)進(jìn)入串口中斷GPS模塊子幀數(shù)據(jù)接收程序(c_int6函數(shù)),其程序流程圖如圖3所示。
根據(jù)OEMstar輸出的數(shù)據(jù)規(guī)律,在c_int6函數(shù)中設(shè)計(jì)數(shù)據(jù)接收程序,先進(jìn)行子幀幀頭同步,再判斷已接收長(zhǎng)度是否等于子幀總長(zhǎng)度,若該幀已接收完成,置子幀數(shù)據(jù)收齊標(biāo)記為已完成,另外為避免讀寫數(shù)據(jù)沖突,一定要進(jìn)行子幀數(shù)據(jù)的備份[7]。在c_int6函數(shù)中只接收不解碼子幀數(shù)據(jù),以免因解碼運(yùn)算耗時(shí),影響子幀數(shù)據(jù)的連續(xù)穩(wěn)定中斷接收,對(duì)子幀數(shù)據(jù)的解碼放在DSP后臺(tái)主程序中。
圖3 串口中斷數(shù)據(jù)接收程序流程圖
嵌入式系統(tǒng)軟件后臺(tái)主程序設(shè)計(jì)如圖4所示:
圖4 DSP后臺(tái)運(yùn)行主程序流程圖
在DSP后臺(tái)主程序里,初始化完成后,先通過(guò)發(fā)送表3中指令來(lái)配置OEMstar板卡,再判斷c_int6函數(shù)中子幀數(shù)據(jù)收齊標(biāo)記是否為已收齊,若收齊則進(jìn)行子幀解碼,當(dāng)子幀為觀測(cè)數(shù)據(jù)時(shí),調(diào)用自研的單點(diǎn)定位程序進(jìn)行定位解算,最后將解算結(jié)果按自定義二進(jìn)制格式編碼并通過(guò)串口輸出[7]。
2.2.1 GPS模塊子幀數(shù)據(jù)的解碼實(shí)現(xiàn)
GPS導(dǎo)航模塊子幀數(shù)據(jù)解碼程序的流程圖5所示。與GPS導(dǎo)航模塊子幀數(shù)據(jù)接收程序相比,還需解碼有效數(shù)據(jù)類型,并做32位CRC校驗(yàn),成功后再判斷有效數(shù)據(jù)類型來(lái)對(duì)應(yīng)解碼觀測(cè)數(shù)據(jù)、星歷數(shù)據(jù)和電離層數(shù)據(jù)。
2.2.2 偽距單點(diǎn)定位程序及移植測(cè)試
本系統(tǒng)自主研制的單點(diǎn)定位程序使用GPS L1偽距觀測(cè)值,并用Klobutchar模型和Hopfield模型分別對(duì)電離層和對(duì)流層延遲進(jìn)行模型改正,并考慮地球自轉(zhuǎn)改正和相對(duì)論效應(yīng)[2,11]。采用標(biāo)準(zhǔn)C語(yǔ)言編寫偽距單點(diǎn)定位程序,移植后按照?qǐng)D6所示的方式來(lái)驗(yàn)證程序移植的一致性。
圖5 GPS子幀數(shù)據(jù)的解碼流程圖
圖6 程序移植的一致性驗(yàn)證流程圖
經(jīng)過(guò)實(shí)測(cè)表明這兩者在WGS84坐標(biāo)系三軸方向差異都小于1e-8量級(jí),因此認(rèn)為程序移植前后是一致的,可以滿足米級(jí)精度的偽距單點(diǎn)定位測(cè)試。
2.2.3 導(dǎo)航定位結(jié)果編碼串口輸出
DSP后臺(tái)主程序解算結(jié)果以表5所示的二進(jìn)制子幀格式進(jìn)行編碼并通過(guò)串口輸出。
表5 輸出子幀二進(jìn)制數(shù)據(jù)結(jié)構(gòu)
有效數(shù)據(jù)內(nèi)容由幀類型決定,幀類型可分為定位、觀測(cè)值、星歷、電離層等,這里只列出定位有效數(shù)據(jù)的具體結(jié)構(gòu),見表6。
導(dǎo)航定位解算上位機(jī)軟件的流程圖如圖7所示。使用Qt的QSerialPort串口類[12]開發(fā)的導(dǎo)航定位解算上位機(jī)軟件界面如圖8所示,該軟件實(shí)現(xiàn)了本系統(tǒng)串口輸出數(shù)據(jù)的接收解碼與實(shí)時(shí)顯示,并將結(jié)果按http協(xié)議通過(guò)socket[13]上報(bào)到服務(wù)器(如nginx)。
表6 定位數(shù)據(jù)結(jié)構(gòu)
圖7 上位機(jī)軟件的流程圖
圖8 上位機(jī)定位軟件界面
為了驗(yàn)證本系統(tǒng)的可靠性和穩(wěn)定性,于2017-10-24日,使用該系統(tǒng)在武漢大學(xué)測(cè)繪學(xué)院樓頂連續(xù)進(jìn)行了14個(gè)小時(shí)靜態(tài)實(shí)驗(yàn)的數(shù)據(jù)采集。將本系統(tǒng)的計(jì)算結(jié)果與由Waypoint IE軟件處理得到的事后精密定位[14]結(jié)果在WGS84坐標(biāo)系下進(jìn)行詳細(xì)對(duì)比分析,以評(píng)估本系統(tǒng)的精度和性能。另外還實(shí)現(xiàn)了將定位結(jié)果在百度地圖上的實(shí)時(shí)顯示。
圖9給出了本次實(shí)驗(yàn)中可見衛(wèi)星數(shù)及位置精度因子(PDOP值)隨時(shí)間變化情況。GPS可見衛(wèi)星數(shù)在6~10顆之間變化,均值為7.4顆,PDOP值大約在1~5間變化,均值為2.09,沒(méi)有發(fā)生過(guò)數(shù)據(jù)中斷情況。
圖9 可見星數(shù)和PDOP值
本系統(tǒng)在WGS84坐標(biāo)系下的定位誤差曲線如圖10所示??煽闯鲈?~12小時(shí)內(nèi)定位精度較為平穩(wěn),但在2小時(shí)附近,誤差變化比較劇烈,特別在Y軸方向誤差達(dá)到近15 m,經(jīng)分析此時(shí)星數(shù)只有6顆,且PDOP值較大接近5,同時(shí)還發(fā)現(xiàn)衛(wèi)星有較頻繁的升降,因此給定位結(jié)果帶來(lái)了一定的波動(dòng),最后一小時(shí)內(nèi)定位精度波動(dòng)也是同樣原因。
圖10 偽距單點(diǎn)定位誤差結(jié)果
表7在均值、標(biāo)準(zhǔn)差和RMS等指標(biāo)對(duì)誤差特性進(jìn)行了統(tǒng)計(jì),從均值上看Z方向的誤差最小,X方向大于Y方向,從標(biāo)準(zhǔn)差上看Y方向稍大,X和Z方向基本相近,在XYZ3個(gè)方向的RMS分別為1.158 m、1.702 m、1.127 m,其三維誤差RMS為2.347 m。
用后臺(tái)語(yǔ)言如PHP編寫用于服務(wù)器數(shù)據(jù)獲取及存儲(chǔ)的接口程序[13],將定位結(jié)果實(shí)時(shí)存儲(chǔ)到服務(wù)器上。編寫html程序調(diào)用基于JavaScript的百度地圖API和服務(wù)器數(shù)據(jù)獲取接口,通過(guò)瀏覽器訪問(wèn)該html文件,即可實(shí)時(shí)顯示如圖11的定位結(jié)果。另外向該html文件中添加繪制星空?qǐng)D代碼,利用canvas標(biāo)簽[15-16]以及坐標(biāo)映射,還可實(shí)時(shí)動(dòng)態(tài)顯示如圖12所示的導(dǎo)航星空分布效果圖。
表7 定位誤差統(tǒng)計(jì)
圖11 定位結(jié)果顯示
圖12 星空分布圖
綜上所述,通過(guò)實(shí)測(cè)驗(yàn)證了該采集與定位處理系統(tǒng)的可靠性和穩(wěn)定性,可滿足實(shí)驗(yàn)室測(cè)試需求。后續(xù)還需提高硬件集成度并優(yōu)化算法做進(jìn)一步動(dòng)態(tài)試驗(yàn)測(cè)試,本次研究為后續(xù)探索偽距差分、相對(duì)定位、GNSS定姿等算法的工程化實(shí)踐提供了一定的研究基礎(chǔ)。