汪 亮,李子申,周 凱,張少添,袁 洪
(1. 中國(guó)科學(xué)院光電研究院,北京 100094; 2.中國(guó)科學(xué)院大學(xué),北京 100049)
基于智能終端的高精度定位是未來(lái)實(shí)現(xiàn)大眾高精度位置服務(wù)的重要手段。在硬件設(shè)備允許的情況下,早期的Android系統(tǒng)支持輸出經(jīng)度、緯度和高程等位置信息,并提供相關(guān)的應(yīng)用程序開(kāi)發(fā)接口(Application Programming Interface,API)。2016年5月18日,Android 7.0(Nougat)系統(tǒng)公開(kāi)亮相于Google I/O開(kāi)發(fā)者大會(huì),Google宣布自Android 7.0(API level 24)系統(tǒng)開(kāi)始,新增了輸出全球?qū)Ш叫l(wèi)星系統(tǒng)(Global Navigation Satellite System,GNSS)的原始觀測(cè)值的API—Android Location API (android.location)[1]。對(duì)于GNSS開(kāi)發(fā)者來(lái)說(shuō),這是首次能夠從Android智能終端系統(tǒng)獲取GNSS載波和碼的觀測(cè)數(shù)據(jù)以及導(dǎo)航電文等信息,Android系統(tǒng)GNSS原始數(shù)據(jù)的開(kāi)放為Android位置服務(wù)的應(yīng)用帶來(lái)了重要機(jī)遇。
現(xiàn)有的衛(wèi)星導(dǎo)航定位方法主要包括差分定位和非差定位兩大類(lèi),相應(yīng)的代表性技術(shù)分別為基于載波相位的實(shí)時(shí)動(dòng)態(tài)定位(Real-Time Kinematic,RTK)技術(shù)和精密單點(diǎn)定位(Precise Point Positioning,PPP)技術(shù)[2-3]。針對(duì)Android終端如何實(shí)現(xiàn)高精度定位處理的現(xiàn)有研究[4-17],主要集中于對(duì)其觀測(cè)數(shù)據(jù)特性的分析以及進(jìn)行差分定位處理方面,實(shí)驗(yàn)結(jié)果絕大部分以事后處理為主,基于實(shí)時(shí)PPP手段實(shí)現(xiàn)智能終端實(shí)時(shí)高精度定位的研究則明顯較少。基于差分定位技術(shù)實(shí)現(xiàn)智能終端高精度位置服務(wù)密切依賴于地面基準(zhǔn)站(網(wǎng))的支持,難以直接實(shí)現(xiàn)大眾高精度位置服務(wù)的大規(guī)模應(yīng)用。相對(duì)而言,基于PPP非差方式的定位技術(shù),不受地面基準(zhǔn)站的限制,只需通過(guò)網(wǎng)絡(luò)實(shí)時(shí)接收精密衛(wèi)星軌道和鐘差以及電離層等改正信息即可實(shí)現(xiàn)全球尺度的高精度定位,適合以智能手機(jī)為主的大眾高精度位置服務(wù)的大規(guī)模應(yīng)用。因此,本文針對(duì)基于Android智能終端開(kāi)放的GNSS原始數(shù)據(jù)如何實(shí)現(xiàn)實(shí)時(shí)非差精密定位進(jìn)行了研究,在Android智能終端上實(shí)現(xiàn)了實(shí)時(shí)PPP高精度定位,并開(kāi)發(fā)了智能終端實(shí)時(shí)PPP定位原型軟件,顯著提升了智能終端的定位精度。
早期Android系統(tǒng)中的位置服務(wù)主要是通過(guò)android.gsm.location這一應(yīng)用程序開(kāi)發(fā)接口完成的,雖然可以通過(guò)一些基本的Android指令配置GNSS芯片,但開(kāi)發(fā)者也只能獲得GNSS芯片上報(bào)給操作系統(tǒng)的位置、速度和時(shí)間(Position Velocity and Time, PVT)解算結(jié)果等信息。從Android 7.0(API level 24)系統(tǒng)開(kāi)始及之后的系統(tǒng)中,Android系統(tǒng)引入了新的Location API(android.location),提供了關(guān)于GNSS原始觀測(cè)數(shù)據(jù)的相關(guān)類(lèi),主要包括:1) GNSS Clock類(lèi),該類(lèi)提供了用于計(jì)算信號(hào)接收時(shí)刻的GNSS芯片時(shí)間以及鐘偏等信息;2) GNSS Navigation Message類(lèi),該類(lèi)提供了所有衛(wèi)星系統(tǒng)的導(dǎo)航電文等相關(guān)信息;3) GNSS Measurement類(lèi),該類(lèi)提供了衛(wèi)星信號(hào)的發(fā)射時(shí)間以及與計(jì)算載波相位和多普勒等觀測(cè)量的相關(guān)信息。關(guān)于GNSS Clock、GNSS Measurement以及GNSS Navigation Message類(lèi)中的數(shù)據(jù)成員以及含義具體可參見(jiàn)文獻(xiàn)[1]和Android源碼,本文不做詳細(xì)介紹。
由于偽距和載波相位等觀測(cè)量并沒(méi)有直接在Android Location API中給出,使用這些API提供的GNSS原始測(cè)量信息進(jìn)行定位解算的前提是計(jì)算出定位解算所需的偽距、載波相位、多普勒等觀測(cè)量信息。例如,GNSS Clock可以計(jì)算出信號(hào)接收時(shí)間,GNSS Measurement提供衛(wèi)星信號(hào)發(fā)射時(shí)間,由這2個(gè)信息便可以計(jì)算得到偽距。下面對(duì)GNSS偽距、載波相位、多普勒等原始觀測(cè)量的計(jì)算方法做簡(jiǎn)要介紹。
根據(jù)Android Location API,GNSS偽距的計(jì)算可以表示為
(1)
式中,tRx和tTx為在同一時(shí)間系統(tǒng)下的信號(hào)接收和發(fā)射時(shí)間,tTx可直接由GNSS Measurement類(lèi)中的ReceivedSvTimeNanos成員獲得,為
tTx=ReceivedSvTimeNanos[ns]
(2)
對(duì)全球定位系統(tǒng)(Global Positioning System,GPS)、北斗衛(wèi)星導(dǎo)航系統(tǒng)(BeiDou Navigation Satellite System,BDS)和GALILEO而言,ReceivedSv-TimeNanos為相應(yīng)的周內(nèi)秒時(shí)間(Time of Week,TOW);對(duì)GLONASS而言,其為相應(yīng)的天內(nèi)秒時(shí)間(Time of Day,TOD)。需要注意的是,若要獲得有效的信號(hào)發(fā)射時(shí)間,需要根據(jù)該類(lèi)中成員State的相應(yīng)值來(lái)判斷當(dāng)前衛(wèi)星信號(hào)的跟蹤狀態(tài)。其中,要求GPS和BDS滿足STATE_TOW_DECODED,GLONASS滿足STATE_GLO_TOD_DECODED,而GALILEO滿足STATE_TOW_DECODED和STATE_GAL_E1C_2ND_CODE_LOCK,具體可參看Android源碼中的定義。
GNSS系統(tǒng)時(shí)間可以通過(guò)Location API中的內(nèi)部硬件時(shí)鐘以及硬件時(shí)鐘和GPS起始時(shí)間之間的偏差等信息計(jì)算。早期的Android版本對(duì)硬件層進(jìn)行了封裝,在Android 7系統(tǒng)的GNSS Clock類(lèi)中對(duì)硬件時(shí)鐘進(jìn)行了開(kāi)源,支持輸出自GPS初始至今的納秒數(shù)。根據(jù)硬件時(shí)鐘可以換算得到當(dāng)前GPS時(shí)間,信號(hào)接收時(shí)刻的完整GPS時(shí)間tRxGPS可按式(3)計(jì)算得到
tRxGPS=TimeNanos-(FullBiasNanos(1)+
BiasNanos(1))[ns]
(3)
式中,TimeNanos為接收機(jī)內(nèi)部時(shí)鐘(ns),BiasNanos為接收機(jī)時(shí)鐘納秒以內(nèi)偏差(ns),F(xiàn)ullBiasNanos為接收機(jī)內(nèi)部時(shí)鐘與GPS起始時(shí)間之間的差異(ns)。將其換算到當(dāng)前周內(nèi)秒時(shí)間,則為:
tRx=tRxGPS-weekNumberNanos[ns]
(4)
式中,weekNumberNanos為自GPS時(shí)間起始時(shí)刻開(kāi)始至當(dāng)前周的總納秒數(shù)。這樣,在求得tRx和tTx后便可求得偽距值。需要注意的是,這里tRx表示相對(duì)于GPS的信號(hào)接收時(shí)間,而tTx給出的是各自系統(tǒng)下的信號(hào)發(fā)射時(shí)間。因此,對(duì)非GPS而言,需要將tTx與tRx轉(zhuǎn)換到一致的時(shí)間系統(tǒng)下,詳細(xì)的偽距計(jì)算與時(shí)間轉(zhuǎn)換可查閱文獻(xiàn)[1]。
在Android Location API中,載波相位的測(cè)量值是由變量AccumulatedDeltaRangeMeters以m為單位給出的,將其除以波長(zhǎng)便可得到以cycle為單位的載波相位測(cè)量值CarrierPhaseCycles,具體為
AccumulatedDeltaRangeMeters=k*CarrierPhaseCycles
(5)
這里,k表示由信號(hào)中心頻率f確定的一個(gè)常量,即波長(zhǎng)(k=c/f)。載波相位測(cè)量值的有效性是由AccumulatedDeltaRangeState一值給出的,以告訴用戶是否發(fā)生了周跳和相位重置等信息,相應(yīng)的狀態(tài)有4種,分別是:ADR_STATE_UNKNOWN、ADR_STATE_VALID、ADR_STATE_RESET以及ADR_STATE_CYCLE_SLIP。
由衛(wèi)星與接收機(jī)間的相對(duì)運(yùn)動(dòng)導(dǎo)致的多普勒頻移可以從PseudorangeRate-MetersPerSecond獲得,這個(gè)變量給出的是偽距率(m/s),當(dāng)該變量為正值時(shí),表示衛(wèi)星正在遠(yuǎn)離接收機(jī)。偽距率PseudorangRateMetersPerSecond和多普勒頻移DopplerShiftHz之間的關(guān)系可以由式(6)表示,據(jù)此可求得多普勒頻移觀測(cè)量
PseudorangRateMetersPerSecond=
-k*DopplerShiftHz
(6)
深入分析Android系統(tǒng)獲得的GNSS原始觀測(cè)數(shù)據(jù)質(zhì)量,是基于智能終端實(shí)現(xiàn)高精度定位的基礎(chǔ)。針對(duì)此,使用Nexus-9 Pad(以下簡(jiǎn)稱(chēng)Nex9)采集了不同場(chǎng)景下的實(shí)驗(yàn)數(shù)據(jù),包括:空曠環(huán)境下的靜態(tài)實(shí)驗(yàn)以及一般城市道路環(huán)境下的車(chē)載動(dòng)態(tài)實(shí)驗(yàn)。其中,靜態(tài)實(shí)驗(yàn)數(shù)據(jù)采集于中國(guó)科學(xué)院光電研究院科研樓頂,周邊視野開(kāi)闊,無(wú)明顯遮擋,測(cè)試時(shí)長(zhǎng)約為250min。車(chē)載動(dòng)態(tài)實(shí)驗(yàn)數(shù)據(jù)采集于北京市海淀區(qū)城市道路,實(shí)驗(yàn)路線為光電院-鄧莊南路-友誼路-北清路-G7高速-光電院,測(cè)試終端安裝于試驗(yàn)車(chē)頂,測(cè)試時(shí)長(zhǎng)約90min,其中試驗(yàn)車(chē)輛在實(shí)驗(yàn)開(kāi)始前的35min內(nèi)處于靜止?fàn)顟B(tài)。
下面從信號(hào)載噪比C/N0值、偽距殘差特性以及載波相位測(cè)量性能3個(gè)方面對(duì)上述采集的GNSS原始數(shù)據(jù)基本特性進(jìn)行分析。
圖1中給出了靜態(tài)實(shí)驗(yàn)場(chǎng)景下Nex9的GPS衛(wèi)星C/N0值的大小分布及其與高度角之間的關(guān)系。從圖1中可以看出,智能終端的衛(wèi)星C/N0值絕大多數(shù)分布在25~40dB·Hz范圍內(nèi),少數(shù)歷元部分衛(wèi)星的C/N0值低于25dB·Hz。同時(shí),其C/N0值與衛(wèi)星高度角之間的相關(guān)性并不明顯,在衛(wèi)星高度角較低(<30°)時(shí),其C/N0值仍然較高。另外,從圖1中還能看到,智能設(shè)備的C/N0值變化劇烈,許多衛(wèi)星在部分時(shí)段即使其高度角在不斷升高,但其C/N0值卻急劇降低。智能終端的這種C/N0特性主要跟其采用小型化、低成本與線極化工作方式的接收天線密切相關(guān),這給其后續(xù)信號(hào)捕獲和跟蹤環(huán)路的工作性能帶來(lái)了巨大挑戰(zhàn),進(jìn)而影響了偽距和載波相位的測(cè)量性能以及最終的定位性能。
(a)
(b)圖1 靜態(tài)場(chǎng)景下Nex9的GPS衛(wèi)星C/N0值分布(a)及其與高度角的關(guān)系(b)Fig.1 Probability density distribution ofC/N0(a) andC/N0vs.elevation (b) for GPS satellites of Nex9 in static scenario
一般說(shuō)來(lái),衛(wèi)星的高度角越低,其信號(hào)在大氣層中傳播的路徑就越長(zhǎng),所受到的電離層延遲效應(yīng)和對(duì)流層延遲效應(yīng)的影響也就越大,同時(shí)也越容易受到多路徑效應(yīng)的影響,于是其測(cè)量值的誤差相應(yīng)地也就越大。另外,對(duì)于一般的測(cè)量和導(dǎo)航用戶而言,其碼偽距測(cè)量誤差主要以由熱噪聲引起的碼相位測(cè)量噪聲為主。通常C/N0值越高,由熱噪聲引起的碼相位測(cè)量誤差就越小,偽距測(cè)量精度就越高;反之,C/N0值越低則偽距測(cè)量誤差就越大。為分析智能終端偽距測(cè)量性能,利用一臺(tái)高精度測(cè)量型接收機(jī)(天寶NetR9)采用超短基線(約15cm)方法對(duì)Nex9靜態(tài)觀測(cè)數(shù)據(jù)進(jìn)行評(píng)估。由于高精度測(cè)量接收機(jī)和天線具有良好的多路徑抑制效果和較低的測(cè)量噪聲,因此,與其相關(guān)的殘余誤差可以忽略不計(jì),單差殘差可認(rèn)為主要是由于智能終端本身的測(cè)量性能造成的。
圖2中給出了靜態(tài)實(shí)驗(yàn)場(chǎng)景中Nex9的GPS衛(wèi)星偽距單差殘差與高度角之間的關(guān)系,以及G12衛(wèi)星的偽距單差殘差隨衛(wèi)星高度角的變化情況示例。從圖2中可以看到,偽距殘差與衛(wèi)星高度角二者之間并無(wú)明顯相關(guān)性,甚至當(dāng)衛(wèi)星高度角較高時(shí)其偽距殘差依然較大,當(dāng)衛(wèi)星高度角處于70°~80°時(shí)的偽距殘差明顯較高度角為50°時(shí)的要大。以G12衛(wèi)星為例可以看到,在3.5h左右的時(shí)段內(nèi)其高度角為整個(gè)實(shí)驗(yàn)時(shí)段內(nèi)最高(35°~38°),但是對(duì)應(yīng)的偽距殘差絕對(duì)值反而增大到30m以上;而在2.0h左右的時(shí)段內(nèi)其衛(wèi)星高度角最低(10°左右),但此時(shí)的偽距殘差基本上為10m以內(nèi)。
(a)
(b)圖2 靜態(tài)實(shí)驗(yàn)中Nex9的GPS偽距單差殘差隨衛(wèi)星高度角的變化(a)以及G12衛(wèi)星示例(b)Fig.2 Single-differenced pseudorange residuals of GPS satellitesagainst the elevation (a) and an example of G12 satellite (b) forNex9 in static scenario
圖3中給出了靜態(tài)實(shí)驗(yàn)場(chǎng)景中Nex9的GPS衛(wèi)星偽距單差殘差與C/N0值之間的關(guān)系,以及G12衛(wèi)星的偽距單差殘差隨C/N0的變化情況示例。從圖3中可以直觀地看到,隨著C/N0值的升高,其對(duì)應(yīng)的偽距殘差也整體上隨之減小,當(dāng)C/N0值最大時(shí)對(duì)應(yīng)的偽距殘差也整體上最小,表明此時(shí)偽距測(cè)量精度整體上最高;而當(dāng)C/N0值較低時(shí)其偽距殘差也隨之較大,其較大的偽距殘差也更集中在當(dāng)C/N0低于25dB·Hz的情形下。同樣,以G12衛(wèi)星為例,其在3.5h左右的C/N0值降低至25dB·Hz以下時(shí)對(duì)應(yīng)的偽距殘差絕對(duì)值增大到30m以上;而當(dāng)C/N0值升高時(shí),對(duì)應(yīng)的偽距殘差也隨之減小,這很好地說(shuō)明了偽距測(cè)量誤差與C/N0之間的強(qiáng)相關(guān)性。
(a)
(b)圖3 靜態(tài)實(shí)驗(yàn)中Nex9的GPS偽距單差殘差隨C/N0的變化(a)以及G12衛(wèi)星示例(b)Fig.3 Single-differenced pseudorange residuals of GPS satellitesagainst theC/N0(a) and an example of G12 satellite (b) forNex9 in static scenario
Android系統(tǒng)在給出載波相位觀測(cè)量AccumlatedDeltaRangeMeters的同時(shí),給出其狀態(tài)標(biāo)記AccumlatedDeltaRangeState以告訴用戶是否發(fā)生了周跳或相位重置等。另外,由于智能終端內(nèi)置GNSS芯片的連續(xù)工作將會(huì)增加耗電量縮短續(xù)航時(shí)間,生產(chǎn)商在Android系統(tǒng)里普遍采用一種名叫Duty Cycle(稱(chēng)為工作周期或者占空比)的技術(shù)來(lái)降低GNSS芯片功耗。Duty Cycle機(jī)制即為在一個(gè)時(shí)間周期(1s)內(nèi),對(duì)GNSS信號(hào)的跟蹤只開(kāi)啟一小段時(shí)間,然后隨即關(guān)閉。Duty Cycle機(jī)制的存在直接影響GNSS芯片對(duì)載波相位測(cè)量的連續(xù)性,這將在很大程度上限制基于載波相位的RTK和PPP高精度定位的應(yīng)用實(shí)現(xiàn)。關(guān)于Duty Cycle機(jī)制的更多介紹具體可參見(jiàn)文獻(xiàn)[1]。根據(jù)Google給出的相關(guān)信息可知,Nex9(非蜂窩版)這一款智能終端沒(méi)有開(kāi)啟Duty Cycle控制機(jī)制,因此,其GNSS芯片可以向用戶提供連續(xù)的載波相位測(cè)量結(jié)果。
以GPS衛(wèi)星為例,圖4中給出了車(chē)載動(dòng)態(tài)實(shí)驗(yàn)中Nex9各GPS觀測(cè)衛(wèi)星的載波相位跟蹤狀態(tài),具體包括Phase Valid和Cycle Slip兩種,其中,Phase Valid(連續(xù)有效)對(duì)應(yīng)狀態(tài)值為ADR_STATE_VALID,Cycle Slip(發(fā)生周跳)對(duì)應(yīng)狀態(tài)值為ADR_STATE_RESET 或ADR_STATE_CYCLE_SLIP。
表1中給出了車(chē)載動(dòng)態(tài)實(shí)驗(yàn)(純車(chē)載動(dòng)態(tài)時(shí)段)中Nex9的GPS和GLONASS可觀測(cè)衛(wèi)星的載波相位周跳比以及相應(yīng)的平均周跳比的統(tǒng)計(jì)結(jié)果,其中,周跳比的定義是發(fā)生周跳的歷元個(gè)數(shù)與實(shí)際的觀測(cè)值歷元總數(shù)的比值。
圖4 車(chē)載場(chǎng)景(先靜后動(dòng))下Nex9各GPS觀測(cè)衛(wèi)星的載波相位跟蹤狀態(tài)Fig.4 The carrier phase tracking states for visible GPSsatellites of Nex9 in kinematic scenario(static mode for the first 35min)
衛(wèi)星周跳比/%衛(wèi)星周跳比/%G0217.12R0333.15G0512.70R044.97G0624.58R1246.94G0729.43R1321.31G135.34R1831.67G153.38R1910.74G2124.83R204.00G295.61R2142.47G3020.42——平均15.93平均24.41
從圖4中可以看到,當(dāng)處于動(dòng)態(tài)實(shí)驗(yàn)開(kāi)始前的UTC 8:30-9:05靜態(tài)時(shí)段內(nèi),Nex9的GPS各衛(wèi)星載波相位狀態(tài)除個(gè)別起始?xì)v元外都標(biāo)記為Valid/連續(xù)有效;然而,當(dāng)從UTC 9:05開(kāi)始進(jìn)行動(dòng)態(tài)跑車(chē)時(shí),許多歷元各衛(wèi)星的載波相位被標(biāo)記為Cycle Slip/發(fā)生周跳,這是由于城市動(dòng)態(tài)環(huán)境引起的環(huán)路跟蹤性能變差和其自身探測(cè)到發(fā)生周跳的緣故。從表1中給出的周跳比定量統(tǒng)計(jì)結(jié)果可以看到,城市車(chē)載動(dòng)態(tài)環(huán)境下Nex9對(duì)GPS信號(hào)的跟蹤發(fā)生載波相位周跳的比例平均為15.9%,部分GPS衛(wèi)星的周跳比可達(dá)20%~30%;而其對(duì)GLONASS信號(hào)的跟蹤發(fā)生載波相位周跳的比例平均為24.4%,部分GLONASS衛(wèi)星的周跳比可達(dá)30%~50%,明顯要高于GPS衛(wèi)星。從上述現(xiàn)象和結(jié)果可以看出,在城市動(dòng)態(tài)場(chǎng)景下,受觀測(cè)環(huán)境和用戶運(yùn)動(dòng)等因素的影響,智能終端GNSS模塊對(duì)衛(wèi)星信號(hào)的跟蹤容易發(fā)生失鎖,載波相位測(cè)量值存在較多的周跳,這給基于載波相位的高精度定位帶來(lái)了巨大挑戰(zhàn)。
從第2節(jié)對(duì)智能終端GNSS原始觀測(cè)量的數(shù)據(jù)質(zhì)量和特性的分析中可以看到:1)載噪比C/N0通常都較低且波動(dòng)劇烈,與衛(wèi)星高度角之間的相關(guān)性很弱;2)原始偽距測(cè)量噪聲大、精度低、粗差多;3)載波相位觀測(cè)量周跳頻繁,這給利用智能終端GNSS數(shù)據(jù)進(jìn)行高精度定位帶來(lái)了巨大挑戰(zhàn)。本文在深入分析智能終端原始GNSS數(shù)據(jù)特性的基礎(chǔ)上,融合多模GNSS觀測(cè)數(shù)據(jù),將實(shí)時(shí)的精密衛(wèi)星軌道和鐘差改正產(chǎn)品以及電離層改正產(chǎn)品應(yīng)用于智能終端非差精密定位中[18-20],并設(shè)計(jì)了專(zhuān)門(mén)針對(duì)智能終端數(shù)據(jù)特性的數(shù)據(jù)處理與質(zhì)量控制策略,以及自適應(yīng)的運(yùn)動(dòng)學(xué)模型[21],自主研制了面向Android平臺(tái)的實(shí)時(shí)非差精密定位軟件—PPPAnd (PPP for Android),可在智能終端設(shè)備上實(shí)時(shí)實(shí)現(xiàn)GPS+GLONASS+BDS+GALILEO四系統(tǒng)融合的偽距單點(diǎn)定位以及精密單點(diǎn)定位。
PPPAnd軟件的設(shè)計(jì)架構(gòu)如圖5所示,主要包括UI、數(shù)據(jù)獲取、數(shù)據(jù)解析以及定位解算四部分組成。UI部分主要是進(jìn)行人機(jī)交互操作與定位結(jié)果的實(shí)時(shí)顯示。數(shù)據(jù)獲取部分的主要功能是獲取實(shí)時(shí)精密定位所需的原始觀測(cè)數(shù)據(jù)、RTCM格式的廣播星歷數(shù)據(jù),以及誤差改正數(shù)據(jù)(即SSR產(chǎn)品)。其中,原始觀測(cè)數(shù)據(jù)使用標(biāo)準(zhǔn)Android Location API從內(nèi)置GNSS芯片獲取,RTCM數(shù)據(jù)流則通過(guò)網(wǎng)絡(luò)按照NTRIP協(xié)議由Client從Caster服務(wù)器上獲取。數(shù)據(jù)解析部分的主要功能是將從Android系統(tǒng)獲取的原始觀測(cè)信息數(shù)據(jù)進(jìn)行解析得到偽距、載波相位、多普勒、載噪比等定位解算所需觀測(cè)量,同時(shí),對(duì)RTCM電文進(jìn)行解碼獲得廣播星歷參數(shù)以及實(shí)時(shí)精密衛(wèi)星軌道和鐘差改正數(shù)與電離層參數(shù)信息。定位解算部分的功能是實(shí)現(xiàn)非差精密定位解算獲得用戶坐標(biāo)等。
圖5 Android實(shí)時(shí)非差精密定位軟件(PPPAnd)設(shè)計(jì)框架Fig.5 Design scheme of the real-time un-differencedprecise positioning software for Android (PPPAnd)
為測(cè)試和驗(yàn)證智能終端實(shí)時(shí)非差精密定位性能,分別進(jìn)行了多種場(chǎng)景下的實(shí)際定位實(shí)驗(yàn),所需的RTCM實(shí)時(shí)數(shù)據(jù)流從中國(guó)科學(xué)院光電研究院的Caster服務(wù)器上獲取。其中,廣播星歷使用RTCM3EPH-MGEX數(shù)據(jù)流,實(shí)時(shí)精密衛(wèi)星產(chǎn)品與電離層產(chǎn)品分別為中國(guó)科學(xué)院自主計(jì)算的CAS01和CAS10產(chǎn)品;測(cè)試終端為Nex9,測(cè)試時(shí)將其放置于測(cè)量型天線旁邊(車(chē)載測(cè)試時(shí)設(shè)備安裝于車(chē)頂),并使二者盡可能處于同一水平面上,測(cè)試場(chǎng)景如圖6所示。實(shí)時(shí)定位時(shí)使用的衛(wèi)星系統(tǒng)為GPS和GLONASS雙系統(tǒng),參考坐標(biāo)由測(cè)量型接收機(jī)(NovAtel PP6)數(shù)據(jù)做事后RTK解算得到,精度統(tǒng)計(jì)時(shí)忽略測(cè)試機(jī)與測(cè)量型天線二者之間的水平位置偏差(~10cm)。
(a)
(b)圖6 靜態(tài)(a)和車(chē)載動(dòng)態(tài)(b)測(cè)試場(chǎng)景示意圖Fig.6 Test scenarios for the static and kinematic experiments
圖7中給出了實(shí)時(shí)偽距單點(diǎn)定位結(jié)果在水平(H)和垂直(V)方向上的時(shí)間誤差序列及統(tǒng)計(jì)結(jié)果,包括均方根值(Root-Mean-Square, RMS)、68%概率值(CEP68,1σ)和95%概率值(CEP95,2σ)。可以看到,絕大多數(shù)歷元的平面定位誤差都在0~2m范圍內(nèi)波動(dòng),高程方向上的定位誤差絕對(duì)值在0~3m范圍內(nèi),相應(yīng)的誤差RMS分別為水平方向1.16m和垂直方向1.51m。從概率分布上看,水平和垂直方向上的1σ精度(CEP68)分別可達(dá)到1.22m和1.73m,2σ精度(CEP95)分別為1.72m和2.56m。
圖7 實(shí)時(shí)偽距單點(diǎn)定位誤差序列Fig.7 Time series of the positioning errors ofreal-time single point positioning in static scenario
圖8中給出了實(shí)時(shí)PPP靜態(tài)定位結(jié)果在水平(H)和垂直(V)方向上的時(shí)間誤差序列及其誤差統(tǒng)計(jì)結(jié)果(RMS、CEP68和CEP95)。可以看到,經(jīng)過(guò)約500s(8min)的收斂時(shí)間后,水平和垂直方向上的定位誤差將穩(wěn)定地收斂至1m以內(nèi),甚至0.5m左右,并且隨著觀測(cè)時(shí)間的累積,定位誤差亦能收斂至0.2m左右。對(duì)整個(gè)測(cè)試時(shí)段內(nèi)的全部定位解而言,誤差RMS分別為水平方向0.62m和垂直方向0.66m。從概率分布上看,水平和垂直方向上的1σ精度(CEP68)分別可達(dá)到0.42m和0.44m,2σ精度(CEP95)分別為1.55m和1.27m。
圖8 實(shí)時(shí)靜態(tài)PPP定位誤差序列Fig.8 Time series of the positioning errors of real-time precise point positioning in static scenario
圖9中給出了在城市道路環(huán)境下的實(shí)時(shí)PPP動(dòng)態(tài)定位結(jié)果在水平(H)和垂直(V)方向上的時(shí)間誤差序列及其誤差統(tǒng)計(jì)結(jié)果(RMS、CEP68和CEP95)。其中,用于比對(duì)的參考坐標(biāo)由NovAtel接收機(jī)觀測(cè)數(shù)據(jù)做事后RTK解算得到,圖中缺失的部分時(shí)段歷元是因?yàn)镹ovAtel接收機(jī)數(shù)據(jù)缺失的緣故??梢钥吹剑^大多數(shù)歷元的平面定位誤差都在0~2.5m范圍內(nèi)波動(dòng),高程方向上的定位誤差絕對(duì)值在0~1.5m范圍內(nèi)波動(dòng)。對(duì)整個(gè)測(cè)試時(shí)段內(nèi)的全部定位解而言,相應(yīng)的誤差RMS分別為水平方向1.32m和垂直方向0.81m。從概率分布上看,水平和垂直方向上的1σ精度(CEP68)分別可達(dá)到1.54m和0.93m,2σ精度(CEP95)分別為2.19m和1.28m。對(duì)比靜態(tài)PPP結(jié)果可知,實(shí)時(shí)動(dòng)態(tài)定位結(jié)果明顯較差,這主要是因?yàn)橹悄芙K端GNSS環(huán)路對(duì)導(dǎo)航信號(hào)的跟蹤和測(cè)量的性能受城市復(fù)雜觀測(cè)環(huán)境和動(dòng)態(tài)的影響而變差的緣故。另外從結(jié)果中可以看到,該組動(dòng)態(tài)實(shí)驗(yàn)的垂直精度優(yōu)于水平精度,這主要是因?yàn)檐?chē)輛行進(jìn)過(guò)程中高程方向上的運(yùn)動(dòng)變化平緩,對(duì)其使用運(yùn)動(dòng)學(xué)模型進(jìn)行約束的效果較水平方向上的約束效果要好。
圖9 實(shí)時(shí)車(chē)載動(dòng)態(tài)PPP定位誤差序列Fig.9 Time series of the positioning errors of real-time precise point positioning in kinematic scenario
表2匯總給出了3組定位實(shí)驗(yàn)中基于原始數(shù)據(jù)的解算結(jié)果與Android終端PVT Location結(jié)果的水平和垂直精度統(tǒng)計(jì)對(duì)比情況。對(duì)于實(shí)驗(yàn)一而言,測(cè)試終端的PVT結(jié)果的水平和垂直方向誤差RMS統(tǒng)計(jì)結(jié)果分別為3.88m和6.21m,而基于原始數(shù)據(jù)解算的靜態(tài)SPP解的相應(yīng)統(tǒng)計(jì)精度為1.16m和1.51m,較前者改善程度分別為70.1%和75.7%。對(duì)于實(shí)驗(yàn)二而言,測(cè)試終端的PVT結(jié)果在水平和垂直方向上的RMS精度分別為5.14m和3.61m,而基于原始數(shù)據(jù)解算的靜態(tài)PPP解算精度可達(dá)亞米級(jí)水平,分別為0.62m和0.66m,較PVT結(jié)果分別提高了87.9%和81.7%。在實(shí)驗(yàn)三即車(chē)載動(dòng)態(tài)實(shí)驗(yàn)中,測(cè)試終端的PVT結(jié)果在水平和垂直方向上的RMS精度分別為2.18m和2.33m,而基于原始數(shù)據(jù)解算的動(dòng)態(tài)PPP解算精度為1.32m和0.81m,較前者分別提高了39.4%和65.2%。
表2 三組實(shí)驗(yàn)中基于原始數(shù)據(jù)的解算結(jié)果與Android終端PVT結(jié)果的精度統(tǒng)計(jì)對(duì)比
本文通過(guò)采用Android系統(tǒng)最新開(kāi)放的GNSS原始測(cè)量數(shù)據(jù)進(jìn)行實(shí)時(shí)非差高精度定位,以期達(dá)到改善智能終端定位精度的目的。利用實(shí)測(cè)數(shù)據(jù)從信號(hào)載噪比特性、偽距殘差特性以及載波相位測(cè)量性能這3個(gè)方面對(duì)智能終端GNSS原始數(shù)據(jù)的基本特性進(jìn)行了分析。在此基礎(chǔ)上,基于智能終端原始GNSS數(shù)據(jù)實(shí)現(xiàn)了實(shí)時(shí)非差精密定位,并研制了面向Android系統(tǒng)的實(shí)時(shí)非差精密定位軟件PPPAnd,開(kāi)展了多種條件下的實(shí)際定位測(cè)試。結(jié)果表明:1)Android終端PVT結(jié)果的平面定位精度(RMS)約為3~5m;2)基于Android終端GNSS原始數(shù)據(jù)的靜態(tài)SPP定位水平精度可達(dá)1.2m左右,較PVT結(jié)果提高了70%,靜態(tài)PPP定位水平精度可達(dá)亞米級(jí),較PVT結(jié)果提高了88%;3)靜態(tài)PPP經(jīng)過(guò)約8min的收斂,其定位誤差將穩(wěn)定地收斂至1m以內(nèi),并且隨著觀測(cè)時(shí)間的累積定位誤差亦能收斂至0.2m左右;4)動(dòng)態(tài)PPP定位結(jié)果的水平精度約為1.3m,較PVT結(jié)果提高了39%,改善效果不及靜態(tài)場(chǎng)景明顯;5)基于Android終端原始測(cè)量數(shù)據(jù)的實(shí)時(shí)非差定位結(jié)果在高程方向上的定位改善效果最為明顯,較PVT結(jié)果平均提高了約74%。