劉揚(yáng),余學(xué)祥,徐煒
(安徽理工大學(xué) 測繪學(xué)院,安徽 淮南 232001)
基于STM32開發(fā)板的BDS/GPS數(shù)據(jù)實時采集與解碼研究
劉揚(yáng),余學(xué)祥,徐煒
(安徽理工大學(xué) 測繪學(xué)院,安徽 淮南 232001)
針對實時接收BDS/GPS數(shù)據(jù)丟失、存儲不合理、解碼精度低等問題,提出以基于STM32F103RET6微控制器為核心的開發(fā)板為載體,通過編寫數(shù)據(jù)實時采集與解碼算法,實現(xiàn)對數(shù)據(jù)的存儲與計算,得到高精度的偽距、載波等觀測值,并實時輸出BDS/GPS組合系統(tǒng)偽距單點定位結(jié)果。測試結(jié)果表明,單點定位的標(biāo)準(zhǔn)差為9 m左右,均方根誤差為14 m左右,該開發(fā)板運行穩(wěn)定、使用方便,可為實現(xiàn)多系統(tǒng)數(shù)據(jù)實時采集、解碼和差分計算提供基礎(chǔ)。
導(dǎo)航定位模塊;數(shù)據(jù)格式;數(shù)據(jù)實時采集;解碼;偽距單點定位
隨著全球衛(wèi)星導(dǎo)航定位系統(tǒng)(GNSS)的不斷完善,特別是我國北斗衛(wèi)星導(dǎo)航系統(tǒng)于2014年獲得國際海事組織認(rèn)可,北斗系統(tǒng)的三步走戰(zhàn)略穩(wěn)步推進(jìn)[1],其應(yīng)用推廣和產(chǎn)業(yè)化正蓬勃發(fā)展,多GNSS融合導(dǎo)航定位已經(jīng)成為未來發(fā)展的趨勢。定位分為靜態(tài)和動態(tài)定位,導(dǎo)航主要是動態(tài)的,數(shù)據(jù)的實時傳輸與計算是導(dǎo)航定位的關(guān)鍵所在[2-3]。
為了提高多系統(tǒng)實時定位的精度和可靠性,目前廣泛采用實時差分技術(shù)[4],差分全球?qū)Ш蕉ㄎ幌到y(tǒng)中數(shù)據(jù)處理階段包括數(shù)據(jù)采集、傳輸和計算。本文使用以STM32F103RET6微控制器為核心的開發(fā)板實時采集BDS/GPS原始數(shù)據(jù),并以此為研究對象,主要對數(shù)據(jù)的采集、傳輸格式及解碼進(jìn)行研究并輸出單點定位結(jié)果及精度分析。該開發(fā)板體積較小,天線與主體分離,可置于車內(nèi),方便實驗??蔀镚NSS數(shù)據(jù)的采集、傳輸和差分計算提供基礎(chǔ)支持。
根據(jù)實驗所需,開發(fā)板主要集成D303導(dǎo)航定位模塊和Telit UL865 GPRS模塊,滿足數(shù)據(jù)實時采集和解碼實驗的硬件要求。通過實時采集BDS/GPS原始數(shù)據(jù),研究導(dǎo)航定位模塊數(shù)據(jù)傳輸格式,并通過解碼將十六進(jìn)制數(shù)據(jù)轉(zhuǎn)換為RINEX格式的觀測值[5],實現(xiàn)組合系統(tǒng)的定位。
1.1 STM32系列微控制器
STM32F103RET6微控制器采用32位基于ARM的Cortex-M3 CPU;其中F代表通用類型,R代表64引腳,E代表512 k字節(jié)的閃存存儲器,T代表LQFP封裝,6代表溫度范圍為-40℃~85℃.微控制器的功能與配置,如表1所示。
表1 STM32F103RET6的器件功能和配置
1.2 D303導(dǎo)航定位模塊
D303是一款支持BDS B1/GPS L1頻點的差分雙模導(dǎo)航定位模塊。模塊內(nèi)部集成了BDS B1/GPS L1雙模SOC基帶芯片,和一款可配置的BDS B1/GPS L1雙模射頻芯片,其主要性能指標(biāo)如表2所示。模塊的三種工作模式,可以通過命令來切換,如“$CCSIR,1.0*49
表2 D303定位模塊主要性能指標(biāo)
2.1 電文幀結(jié)構(gòu)
原始數(shù)據(jù)的電文幀結(jié)構(gòu)分為五部分,文件頭、保留、電文長度、數(shù)據(jù)電文、CRC24校驗碼,其結(jié)構(gòu)如表3所示。
表3 電文幀結(jié)構(gòu)
文件頭為電文起始第一個字節(jié)(二進(jìn)制110 100 11),作為判斷有效數(shù)據(jù)接收的標(biāo)志。保留字段在本版中為0x00,后續(xù)版本可以增加標(biāo)識。電文長度表示數(shù)據(jù)電文中的字節(jié)數(shù),根據(jù)字節(jié)數(shù)設(shè)置數(shù)據(jù)緩存的空間大小。數(shù)據(jù)電文的電文類型如表4所示,本文將以3001(觀測值)為例解碼,其電文數(shù)據(jù)格式如表5和表6所示。CRC(循環(huán)冗余檢驗碼)校驗用來判斷接收數(shù)據(jù)的正確性。
表4 電文類型
在切換到原始觀測量輸出時,模塊內(nèi)部需要復(fù)位,會重新捕獲跟蹤衛(wèi)星,因此需等待一段無輸出時間。待接收數(shù)據(jù)穩(wěn)定后,3001和3002交替出現(xiàn),輸出間隔為1 s.3003每隔120 s輸出一次,輸出的個數(shù)與接收衛(wèi)星個數(shù)相同。
表5 觀測值電文
表5中“unit 12”代表電文序號占有12 bit無符號的二進(jìn)制數(shù)。表6中“int 28”代表字段DF04占有28bit有符號(首位是“0”為正號,“1”為負(fù)號)的二進(jìn)制數(shù)[6]。
表6 衛(wèi)星觀測值
表6中字段DF04,DF05為解碼的關(guān)鍵,其中偽距觀測值的計算方法:完整偽距觀測值(單位:m)=DF05 x 299 792.458+DF03 × 0.02.計算載波觀測值的方法:完整載波相位觀測值(單位:m)=完整偽距觀測值+DF04 × 0.000 5,完整載波相位觀測值(單位:周)=完整載波相位觀測值(單位:m)/(光速度/載波頻率),其中光速=299 792 458 m/s,L1載波頻率=1 575.42 MHz,B1載波頻率=1 561.098 MHz.
2.2 程序設(shè)計流程和關(guān)鍵技術(shù)
根據(jù)前文介紹的電文數(shù)據(jù)結(jié)構(gòu)和編碼方式,以Keil μVision5為開發(fā)平臺,用C語言編寫GPS數(shù)據(jù)實時采集與解碼程序,通過指令對各模塊進(jìn)行操作,電文解碼的流程設(shè)計如圖1所示。
圖1 解碼流程
解碼過程中有以下幾點需要注意:
1) 實時接收數(shù)據(jù)是通過系統(tǒng)中斷實現(xiàn)的。當(dāng)接收到一個字節(jié)的數(shù)據(jù)時,系統(tǒng)會發(fā)生中斷,根據(jù)該電文的長度(可以算出)把整段電文存儲下來(根據(jù)電文編號存入不同的緩存中)后再解碼,主要代碼如下,待解碼完成后再接收下一段電文。
Unsigned int head=0;
head=(buffer[3]?4)+(buffer[4]?4);
switch(head)
{
case 3001:
decode-3001(y, d-len); break;
case 3002:
decode-3002(y, d-len); break;
case 3003:
decode-3003(y, d-len); break;
}
2) CRC24校驗過程分為校驗碼生成和校驗碼匹配兩個階段[7],第一階段產(chǎn)生24位的校驗碼,第二階段將生成的校驗碼與電文最后三個字節(jié)比較,如果相同,校驗通過,否則失敗,刪去該電文數(shù)據(jù)。
2.3 BDS/GPS組合系統(tǒng)單點定位
本文主要解決數(shù)據(jù)實時接收及解碼,對于單點定位原理可參照文獻(xiàn)[8]~[10],這里僅給出其基本模型。對于BDS和GPS的偽距定位方程為
(1)
(Zi-Zp)2]1/2為衛(wèi)星i到接收機(jī)p之間距離;c為光速,δtp和δti分別為接收機(jī)和衛(wèi)星鐘差改正;δiρtrop,δiρion分別為對流層和電離層的延遲改正,δiρothers為其他改正項。由于兩個系統(tǒng)的時間和坐標(biāo)框架不同,組合系統(tǒng)定位時,需要框架的轉(zhuǎn)換,可參照文獻(xiàn)[11]。
數(shù)據(jù)輸出界面如圖2所示,界面左側(cè)設(shè)置參數(shù),為串口,波特率等,右側(cè)第1~3列(單位:m)分別為x、y、z方向的改正值,第4~6列分別為觀測的衛(wèi)星總個數(shù),GPS衛(wèi)星個數(shù),BDS衛(wèi)星個數(shù)。
圖2 實時單點定位結(jié)果輸出界面
為了驗證程序的可靠性和穩(wěn)定性,用開發(fā)板接收2016-07-15青島某地數(shù)據(jù),對算法進(jìn)行驗證,并實時存儲原始電文數(shù)據(jù)。經(jīng)過6個小時的實驗,程序具有較好的穩(wěn)定性。圖3示出了1 s內(nèi)接收到的觀測值(3001)完整原始數(shù)據(jù)。
圖3 原始電文數(shù)據(jù)
由圖3分析可知,原始電文中包含以下信息,該電文的長度(二進(jìn)制為100 111 011,對應(yīng)的十進(jìn)制為315字節(jié)),完整的一段數(shù)據(jù)(包括數(shù)據(jù)電文之前有3字節(jié),電文長度315字節(jié),CRC校驗碼3字節(jié))共321字節(jié),“BB 9”代表電文編號3001(觀測值),本文只提取部分BDS數(shù)據(jù),GPS解碼原理相同。程序解碼后輸出結(jié)果如表7所示。
表7 解碼后的BDS數(shù)據(jù)
單點定位的精度分析如表8所示,這里截取1 h為例,其中x方向的誤差值最小,y方向的標(biāo)準(zhǔn)差于與z方向,但均方根誤差y方向與z方向相近。如圖4所示,x方向偏差值穩(wěn)定在±5 m內(nèi),y和z方向偏差值在[-5,15] m范圍內(nèi)的比例分別為90.9%和89.3%。
表8 單點定位精度分析(單位:m)
圖4 1 h偽距單點定位結(jié)果
本文利用集成了導(dǎo)航定位模塊和通信模塊的開發(fā)板進(jìn)行BDS/GPS原始數(shù)據(jù)的實時采集與解碼,著重分析了導(dǎo)航定位模塊中原始數(shù)據(jù)格式和解碼原理,并實時偽距單點定位。通過實時接收數(shù)據(jù),計算出偽距(C1)、載波(B1/L1)觀測值,偽距單點定位結(jié)果的標(biāo)準(zhǔn)差在10 m之內(nèi),均方根誤差在15 m內(nèi),其中x方向精度最高,y與z方向的精度相當(dāng),后期加入差分?jǐn)?shù)據(jù)精度將進(jìn)一步提高。實驗過程中,可觀測到的衛(wèi)星個數(shù)大多在10顆以上,開發(fā)板運行較穩(wěn)定,滿足設(shè)計要求,為多系統(tǒng)數(shù)據(jù)的實時采集、傳輸、解碼及差分提供基礎(chǔ)研究。
[1] 楊元喜,李金龍,王愛兵,等. 北斗區(qū)域衛(wèi)星導(dǎo)航系統(tǒng)基本導(dǎo)航定位性能初步評估[J]. 中國科學(xué):地球科學(xué),2014,44(1):1-10.
[2] 楊元喜. 導(dǎo)航與定位若干注記[J]. 導(dǎo)航定位學(xué)報,2015,3(3):1-4.
[3] 吳海玲,高麗峰,汪陶勝,等. 北斗衛(wèi)星導(dǎo)航系統(tǒng)發(fā)展與應(yīng)用[J]. 導(dǎo)航定位學(xué)報,2015,3(2):1-6.
[4] 王成,崔健慧,施闖,等. 中國沿海RBN-GNSS系統(tǒng)北斗差分定位性能測試及分析[J]. 大地測量與地球動力學(xué),2015,35(3):412-415.
[5] 李思超,葉甜春,徐建華. DGPS RTCM數(shù)據(jù)格式簡介及其解碼算法實現(xiàn)[J]. 電子測量技術(shù),2008,31(12):11-14.
[6] 孫良育,劉春,吳杭彬. GPS虛擬參考站RTCM傳輸電文的分析與解碼[J]. 全球定位系統(tǒng), 2008,33(5):52-57.
[7] 湯延松,吳鳳娟,李紅娜,等. RTCM數(shù)據(jù)格式實時處理方法應(yīng)用[J]. 全球定位系統(tǒng),2011,36(5):75-79.
[8] 廖華. GPS偽距單點定位算法的綜合比較[J]. 測繪科學(xué),2011,36(1): 20-21.
[9] 盧偉俊,萬慶濤,范江濤,等.北斗/GPS雙頻靜態(tài)偽距單點定位結(jié)果對比分析[J]. 天文研究與技術(shù),2016,13(4): 433-440.
[10]汪平,郝金明,沈國康,等.GPS單點定位觀測值的精度分析及改正[J]. 大地測量與地球動力學(xué),2009,29(3):141-144.
[11]陳浩,許長回,高井祥,等.BDS/GPS及其組合系統(tǒng)偽距單點定位精度分析[J]. 山東科技大學(xué)學(xué)報(自然科學(xué)版),2015,34(2): 72-78.
BDS/GPS Data Real-time Acquisition and Research on Decoding Arithmetic Based on Development Board of STM32
LIU Yang,YU Xuexiang,XU Wei
(SchoolofGeodesyandGeomatics,AnhuiUniversityofScienceandTechnology,Huainan232001,China)
According to the fact that it occurred data loss, unreasonable storage, low accuracy of decoding when receiving the real-time BDS/GPS data. This paper presented a program of the real-time data acquisition and decoding, taking the development board based on STM32F103RET6 microcontroller as carrier. It achieved data storage and calculation, and got high precision pseudorange, carrier observations. Meanwhile, it calculated the pseudorange single point positioning by combined BDS/GPS.The results show that the standard deviation is about 9 meters and RMSE is about 14 meters, the development board is proved stable and easy to use. This is the basis of data real-time acquisition, decoding and differential computation of multi-GNSS.
Navigation module; data format; real-time data acquisition; decoding; pseudorange single point positioning
10.13442/j.gnss.1008-9268.2017.03.012
2016-11-25
國家自然科學(xué)基金(批準(zhǔn)號41474026); 安徽國土資源廳科技項目(編號:2011-K-22,2011-K-18);安徽理工大學(xué)研究生創(chuàng)新基金(編號:2017CX2056);淮南礦業(yè)(集團(tuán))有限責(zé)任公司項目(編號:HNKY-JTJS(2013)-28)
P228.4
A
1008-9268(2017)03-0061-05
劉揚(yáng) (1991-),男,碩士研究生,主要從事GNSS數(shù)據(jù)處理。
余學(xué)祥 (1965-),男,博士,教授,博士生導(dǎo)師,主要從事GPS變形監(jiān)測自動化、礦山空間信息技術(shù)、災(zāi)害監(jiān)測與預(yù)報等方面研究。
徐煒 (1992-),男,碩士研究生,主要從事GNSS導(dǎo)航與數(shù)據(jù)處理。
聯(lián)系人: 劉揚(yáng) E-mail: liuyhh09@163.com