李鶴峰,黨亞民,王世進(jìn),3,王霞迎
(1.中國(guó)測(cè)繪科學(xué)研究院大地測(cè)量與地球動(dòng)力研究所,北京100830;2.山東科技大學(xué)測(cè)繪科學(xué)與工程學(xué)院,山東 青島266510;3.遼寧工程技術(shù)大學(xué)測(cè)繪與地理科學(xué)學(xué)院,遼寧 阜新123000)
在全球衛(wèi)星導(dǎo)航系統(tǒng)(GNSS)的數(shù)據(jù)處理中,偽距單點(diǎn)定位是經(jīng)常涉及的問(wèn)題,并廣泛應(yīng)用于實(shí)時(shí)位置導(dǎo)航和為RTK提供實(shí)時(shí)衛(wèi)星位置和鐘差等信息[1-3]。作為GNSS最具代表性的全球定位系統(tǒng)(GPS),國(guó)內(nèi)外學(xué)者有非常多的研究,偽距單點(diǎn)定位技術(shù)已經(jīng)相當(dāng)成熟。但作者在研究中發(fā)現(xiàn),定位程序的編寫(xiě)在相當(dāng)多的文獻(xiàn)中僅一筆略過(guò),對(duì)學(xué)習(xí)GPS編程中遇到問(wèn)題的讀者造成很大的困擾,浪費(fèi)大量研究的時(shí)間去摸索程序的編寫(xiě)。選取GPS系統(tǒng),基于Visual C++平臺(tái),編寫(xiě)偽距單點(diǎn)定位程序,詳細(xì)研究偽距單點(diǎn)定位的原理、算法及程序?qū)崿F(xiàn)過(guò)程,重點(diǎn)就程序編寫(xiě)過(guò)程中的關(guān)鍵部分和易于出錯(cuò)之處總結(jié)了詳細(xì)的解決思路,通過(guò)算例計(jì)算分析,驗(yàn)證了問(wèn)題解決的正確性和程序編寫(xiě)的合理性。
GPS偽距定位是通過(guò)空間距離的后方交會(huì)來(lái)實(shí)現(xiàn),如圖1所示。理論上通過(guò)測(cè)算三顆衛(wèi)星到用戶的距離,組成三元方程組,從而計(jì)算出用戶的三維坐標(biāo)。實(shí)際應(yīng)用中由于接收機(jī)鐘差難以預(yù)先準(zhǔn)確確定,通常將其看作一個(gè)未知參數(shù),與用戶三維坐標(biāo)一并求解。這時(shí)需要第四顆衛(wèi)星參與解算,組成四元方程組,進(jìn)而精確計(jì)算出用戶的三維坐標(biāo)[2]。
圖1 偽距定位原理
設(shè)t在時(shí)刻用戶測(cè)站點(diǎn)到S1,S2,S3,S4四顆衛(wèi)星的偽距觀測(cè)值為ρj,j=1,2,3,4,通過(guò)衛(wèi)星導(dǎo)航電文解算,譯出該時(shí)刻四顆衛(wèi)星的三維地心坐標(biāo)(Xj,Yj,Zj),j=1,2,3,4.用上述空間距離后方交會(huì)的定位原理,計(jì)算用戶位置的三維地心坐標(biāo)(X,Y,Z),偽距觀測(cè)方程為
式中:假設(shè)偽距觀測(cè)量ρj已經(jīng)通過(guò)星歷中的電離層、對(duì)流層改正和衛(wèi)星鐘差改正;Rj為接收機(jī)天線相位中心到衛(wèi)星天線相位中心的幾何距離;c為光速;δtk為接收機(jī)鐘差。
式(1)為方便理解偽距定位原理,假設(shè)衛(wèi)星鐘差、電離層和對(duì)流層延遲均已改正過(guò)。在定位解算中,考慮到這些誤差改正,偽距觀測(cè)方程式(1)改寫(xiě)為
實(shí)際解算中,可以從觀測(cè)文件提取接收機(jī)的近似坐標(biāo) (X0,Y0,Z0),令 (δx,δy,δz)為接收機(jī)坐標(biāo)的改正值,將式(2)在近似坐標(biāo) (X0,Y0,Z0)處用泰勒級(jí)數(shù)展開(kāi),取一次微小項(xiàng),得線性化偽距觀測(cè)方程:
式中:
這些都可以根據(jù)已知值計(jì)算出結(jié)果,衛(wèi)星鐘差δtj可以根據(jù)δtj=af0+af1(tc-toe)+af2(tc-toe)2進(jìn)行修正(af0,af1,af2,toe從衛(wèi)星廣播星歷中讀取,tc為衛(wèi)星發(fā)射信號(hào)時(shí)刻,通過(guò)計(jì)算求得),電離層延遲可以通過(guò)雙頻觀測(cè)消除,對(duì)流層延遲可以通過(guò)模型進(jìn)行改正,所以,令常數(shù)項(xiàng)部分-δρjtrop=Lj,四個(gè)未知數(shù),需要四個(gè)觀測(cè)方程,將式(3)寫(xiě)為矩陣形式:
式中:
根據(jù)最小二乘法求得改正數(shù)δX = (ATA)-1ATL.求出δX=[δxδyδzcδtk]T后,即可按
求出接收機(jī)位置坐標(biāo) (Xk,Yk,Zk).
根據(jù)上述GPS單點(diǎn)定位原理,基于Visual C++平臺(tái),編寫(xiě)單點(diǎn)定位程序,程序設(shè)計(jì)流程如圖2所示。
由于在GPS單點(diǎn)定位程序編寫(xiě)過(guò)程中,需要用到不少函數(shù)的調(diào)用及矩陣循環(huán)計(jì)算,數(shù)值分析,具體程序代碼較長(zhǎng)且繁瑣,這里就程序?qū)崿F(xiàn)中的關(guān)鍵點(diǎn)也是易于出錯(cuò)點(diǎn)給予詳細(xì)的解決思路。
1)偽距電離層改正
偽距的電離層改正一般采用雙頻觀測(cè)消除。GPS信號(hào)中的C1,P1,P2測(cè)距碼調(diào)制在L1,L2載波上 (L1-C1,L1-P1,L2-P2),但是N 文件中用于電離層改正的偽距觀測(cè)數(shù)據(jù)類型(C1,P1,P2),并不是在每個(gè)歷元中出現(xiàn)的情況相同,為了達(dá)到最好的改正效果,就要有選擇的去利用,程序?qū)崿F(xiàn)時(shí)要分情況考慮,優(yōu)先選擇偽距觀測(cè)值P1,P2組合為
式中:P為雙頻改正后的偽距值;f1,f2為L(zhǎng)1,L2載波頻率。沒(méi)有P1情況下使用C1,P2組合,如果沒(méi)有P2或同時(shí)沒(méi)有C1,P1的情況下,就不能使用雙頻觀測(cè)對(duì)電離層進(jìn)行消除,需要另行考慮在單頻情況下的電離層模型改正。
圖2 GPS偽距單點(diǎn)定位程序設(shè)計(jì)流程圖
2)參考星歷選取
GPS星歷每2h播發(fā)一次,衛(wèi)星發(fā)射信號(hào)時(shí)刻與星歷播發(fā)時(shí)刻相同的概率極小,所以計(jì)算衛(wèi)星位置時(shí),要選取最近的星歷作為衛(wèi)星發(fā)射時(shí)刻的參考去計(jì)算衛(wèi)星坐標(biāo)。程序?qū)崿F(xiàn)時(shí),由于衛(wèi)星信號(hào)傳播的時(shí)間非常短(0.07s左右)[2],可以用觀測(cè) O 文件中的時(shí)間t0與廣播星歷N文件中的時(shí)間tn求差值δt=fabs(t0-tn).當(dāng)δt≤3 600s時(shí),該時(shí)刻tn的廣播星歷即可作為參考用于計(jì)算觀測(cè)時(shí)刻tn對(duì)應(yīng)的衛(wèi)星坐標(biāo)。
3)衛(wèi)星發(fā)射信號(hào)時(shí)刻歸化
GPS時(shí)間系統(tǒng)采用原子時(shí)秒長(zhǎng)作為時(shí)間基準(zhǔn),起算原點(diǎn)為1980年1月6日(星期日)0時(shí)0分0秒的協(xié)調(diào)世界時(shí)(UTC).廣播星歷中播發(fā)的參考時(shí)刻toe是去除GPS整周數(shù)后不滿一周總秒長(zhǎng),GPST整周數(shù)的總秒長(zhǎng),而參與解算衛(wèi)星位置的時(shí)間tk(歸化時(shí)間)是發(fā)射時(shí)刻tc相對(duì)于參考時(shí)刻toe的秒長(zhǎng),即tk-tc-toe.編寫(xiě)程序時(shí),要考慮到周的開(kāi)始和結(jié)束,計(jì)算出tk后要對(duì)其進(jìn)行如下判斷調(diào)整,如tk>302400,那么tk=tk-604800;如tk<-302400,那么tk=tk+604800,302 400為半周的秒長(zhǎng),一周共604 800s.
4)偏近點(diǎn)角迭代計(jì)算
根據(jù)衛(wèi)星軌道的偏近點(diǎn)角公式Ek=Mk+esinEk(平近點(diǎn)角Mk,衛(wèi)星軌道偏心率e都已知),由于e非常小,sinEk<1,故esinEk是一個(gè)微小值。可用程序通過(guò)迭代法實(shí)現(xiàn)Ek的快速求解,令Ek=Mk連續(xù)回代求新的Ek,直到合適的精度停止迭代。截取C++程序片段如下:
10-12為經(jīng)驗(yàn)值,取該值可以達(dá)到需要的收斂效果
Ek=Ek1;//迭代出偏近點(diǎn)真值
……
5)真近點(diǎn)角象限的判斷
真近點(diǎn)角計(jì)算式:
在程序的編寫(xiě)過(guò)程中是最容易出錯(cuò)的地方,其主要原因是用反正切函數(shù)沒(méi)有考慮fk所在的象限,若要通過(guò)程序正確計(jì)算fk,需要聯(lián)合考慮cos fk=與值的符號(hào),以確定fk所在的象限。截取C++程序片段如下:
6)地球自轉(zhuǎn)改正
式中:ω為地球自轉(zhuǎn)角速度;t為信號(hào)傳播時(shí)間。
本算例選用2012年1月5日河北某已知基準(zhǔn)點(diǎn)的實(shí)驗(yàn)數(shù)據(jù),觀測(cè)采用雙頻GPS接收機(jī),時(shí)間為7h41min 10s-8h51min 10s,共1h10min的GPS觀測(cè)數(shù)據(jù),接收機(jī)采樣率為10s采集一次數(shù)據(jù)。根據(jù)編寫(xiě)的C++單點(diǎn)定位程序,計(jì)算接收機(jī)坐標(biāo),并將程序計(jì)算值與基準(zhǔn)站已知坐標(biāo)值對(duì)比求差,各分量的差值如圖3所示。
從圖3可以看出,通過(guò)1h10min的GPS連續(xù)觀測(cè)數(shù)據(jù),用上述解決思路編寫(xiě)的偽距單點(diǎn)定位程序解算基準(zhǔn)點(diǎn)坐標(biāo),將解算值與已知基準(zhǔn)點(diǎn)坐標(biāo)值求差,結(jié)果X分量的差值在9m以內(nèi),Y分量的差值大都在15m以內(nèi),Z分量的差值在5m以內(nèi),表1示出了定位結(jié)果各分量殘差中誤差RMS統(tǒng)計(jì)分析表(坐標(biāo)數(shù)據(jù)考慮到涉密問(wèn)題僅取小數(shù)點(diǎn)前4位)。
表1 定位結(jié)果統(tǒng)計(jì)分析(單位:m)
由于主要著重解決程序編寫(xiě)中易于出現(xiàn)的上述問(wèn)題,所以程序在編寫(xiě)過(guò)程中沒(méi)有考慮多路徑效應(yīng),接收機(jī)天線相位中心改正以及相對(duì)論效應(yīng)等。但從定位結(jié)果圖和統(tǒng)計(jì)分析表可以看出,定位結(jié)果在5m以內(nèi),完全可以驗(yàn)證GPS偽距單點(diǎn)定位解算結(jié)果的正確性,從而驗(yàn)證了上述程序編寫(xiě)中易于出錯(cuò)點(diǎn)問(wèn)題解決的合理性。
充分考慮各種誤差影響(電離層、對(duì)流層延遲,衛(wèi)星、接收機(jī)鐘差,地球自轉(zhuǎn)改正,多路徑、接收機(jī)天線相位中心改正等),GPS單點(diǎn)定位精度一般在10m以內(nèi)。雖然目前精密單點(diǎn)定位靜態(tài)已實(shí)現(xiàn)mm~cm級(jí)精度,動(dòng)態(tài)精度也達(dá)到cm~dm級(jí)[7-8],但是,由于GPS精密星歷在11天后才能得到,對(duì)實(shí)時(shí)導(dǎo)航定位沒(méi)有太大意義。利用實(shí)時(shí)GPS廣播星歷進(jìn)行偽距單點(diǎn)定位,可以廣泛開(kāi)展實(shí)時(shí)動(dòng)態(tài)定位,對(duì)實(shí)現(xiàn)船只、飛機(jī)和車輛等各種運(yùn)動(dòng)目標(biāo)的導(dǎo)航定位,監(jiān)控管理具有重要意義。因此GPS偽距定位的研究不會(huì)過(guò)時(shí),單點(diǎn)定位的原理和程序的編寫(xiě)就尤為重要,更是學(xué)習(xí)和研究GNSS的基礎(chǔ)。
[1]徐紹銓,張華海,楊志強(qiáng),等.GPS測(cè)量原理及應(yīng)用[M].2版,武漢:武漢大學(xué)出版社,2003.
[2]黨亞民,秘金鐘,成英燕.全球?qū)Ш叫l(wèi)星系統(tǒng)原理與應(yīng)用[M].北京:測(cè)繪出版社,2007.
[3]廖 華.GPS偽距單點(diǎn)定位算法的綜合比較[J].測(cè)繪科學(xué),2011,36(1):20-21.
[4]朱 勇,方源敏,劉建忠.基于雙頻P碼的GPS偽距單點(diǎn)定位研究及精度分析[J].海洋測(cè)繪,2008,28(7):15-18.
[5]何曉薇,牟其鋒,向淑蘭.GPS信號(hào)的電離層延遲誤差及改正[J].中國(guó)民航飛行學(xué)院學(xué)報(bào),2008,19(1):16-18.
[6]龔佑興.GPS單點(diǎn)定位研究[D].長(zhǎng)沙:中南大學(xué),2004.
[7]張金寶,王少閔.GPS精密單點(diǎn)定位程序設(shè)計(jì)與實(shí)現(xiàn)[J].城市勘察,2009(5):60-62.
[8]CAI Changsheng,GAO Yang.Precise point positioning using combined GPS and GLONASS observations[J].Journal of Global Positioning Systems,2007,6(1):13-22.