曾樹林,匡翠林
(1.中南大學 地球科學與信息物理學院,長沙 410083;2.重慶市地理信息和遙感應用中心,重慶 401147)
隨著我國北斗三號衛星導航系統(BDS-3)的全面建成,目前已形成全球衛星導航系統(GNSS)服務新格局.GNSS 在測繪、交通、電力、農業等領域逐漸發揮重要作用,設備需求量隨之增加,并逐步向低成本高精度方向發展;另一方面,隨著智能手機和芯片技術的發展,如今智能手機中的衛星導航定位能力逐步凸顯,成為大眾位置服務的基石,同時也使得手機成為使用最普遍的一類GNSS 設備.2016 年谷歌公司開放了Android 智能終端的GNSS 原始觀測值[1],用戶可直接獲取偽距、載波等觀測數據,為開展手機高精度定位算法研究帶來了便利,同時也為手機應用領域的拓展創造了機遇.
目前已有較多學者開展了手機GNSS 高精度定位的研究.REALINI 等[2]最早運用Android 智能終端GNSS 原始觀測值進行了定位測試,結果表明運用相對定位技術時其精度可達亞米級.ZHANG 等[3]采用載波相位歷元間差分濾波的方法,也表明手機可達亞米級定位精度.GENG 等[4]和WEN 等[5]使用外接測量型天線,實現了模糊度固定,并達到了厘米級精度.但以上大多數研究都是利用手機應用程序(APP)記錄GNSS 觀測數據,再進行事后解算,真正在手機終端實現的實時高精度定位軟件產品還較少.而手機本身具有良好的網絡通訊和數據運算能力,完全具備運行高精度定位軟件的條件.對此,陳秉柱等[6]開發了一款手機廣域精密定位軟件,結果表明,手機廣域精密定位收斂后精度可達亞米級.汪亮等[7]以及郭斐等[8]都開發了一款手機實時精密單點定位(PPP)軟件,結果表明PPP 結果優于手機自身位置精度.但PPP 相對于實時動態(RTK)定位技術存在收斂時間和精度上的不足,鑒于RTK 定位技術在實際應用中更廣泛,且手機RTK 定位技術的研究較少,開展手機RTK 高精度定位研究更具有實用意義.
在手機中采用RTK 定位技術,有望實現連續穩定的亞米級定位,進而滿足車道級導航精度要求.在一些低精度需求的專業應用領域,如地理信息采集、國土巡查和地質調查等應用中,一般只需亞米級精度,采用手持GNSS 接收機即可滿足需求[9].如今在手機GNSS 定位性能逐步提升的情況下,有望采用手機RTK 定位代替傳統手持GNSS 接收機,以方便作業和節省生產成本.總之,不論是在民用導航中,還是在低精度專業測繪應用中,手機RTK 定位都將發揮重大作用,具有重要的應用前景.因此,為充分利用手機GNSS 原始觀測值和發揮RTK 高精度定位技術的優勢,本文以自主開發的手機RTK 定位APP 為載體,針對不同應用領域,選擇典型場景和條件進行應用試驗,以評估將手機作為專業級應用設備的可行性.
搭載Android 7.0 以上版本操作系統的智能終端可通過Android.location 應用程序接口(API)獲取GNSS 類中存儲的字段信息,這些信息可用于生成偽距、載波相位等觀測值,主要字段信息如表1 所示[1].

表1 Android API 中GNSS 原始測量值主要字段
1.1.1 偽距獲取
首先通過時間相關字段信息,計算各導航信號在相應時間系統內的接收時刻tRx(周內納秒)和信號發射時刻tTx(周內納秒):

式中:TS為其他衛星系統與GPS 之間的時間系統差異.在統一的時間基準下,根據手機接收到GNSS 信號及衛星端發射信號時刻之差,可計算出信號傳播時間,進而計算出偽距觀測值P,即

式中,c為光速.
1.1.2 載波相位獲取
載波相位φ由歷元之間的偽距增量計算得出

式中,λ 為載波波長.在GNSS 類中,還通過Accumulated DeltaRangeState 字段指示載波記錄狀態,如表2 所示.當被標記為2 或4 時,ADR記錄值將不連續,均視為發生了周跳,并以失鎖標識符(LLI)形式輸出.

表2 載波相位記錄狀態
1.1.3 多普勒獲取
多普勒D由偽距率計算得出,忽略接收機和衛星鐘頻率等誤差時,可表示為

1.1.4 載噪比獲取
載噪比(C/N0)可直接由字段Cn0DbHz 得到,單位為dB-Hz.手機跟蹤GNSS 信號具有較高的靈敏度,C/N0 過低的GNSS 信號也將被接收,應設置適當的C/N0 閾值來控制數據質量.
1.1.5 偽距和載波的不一致性處理
研究發現,利用上述方法直接計算得到的偽距和載波相位之間存在隨觀測時間延長而變大的差值,如圖1 所示,其原因是手機中采用了不同的鐘來跟蹤測碼偽距和載波[10].

圖1 手機中偽距與載波觀測值的不一致性
為保證輸出觀測數據的完整性,本文采用簡單的鐘差補償方法來消除此差異,進而得到補償后的偽距觀測值Pnew,即

式中:上標 s 為衛星標識;Δ為補償鐘差(換算成距離單位),理論上同一歷元偽距和載波之間的鐘差差異相同,其數值取當前歷元所有偽距減去載波相位距離的平均值,即:

式中,n為當前歷元觀測值個數.
1.2.1 函數模型
RTK 定位采用雙差函數模型,雙差后的觀測方程可表示為:

式中:Δ r 為雙差符號;I為電離層誤差;T為對流層誤差;N為整周模糊度;ε 為觀測噪聲.雙差可消除衛星星歷誤差、接收機鐘差誤差,在短基線下(<10 km),可進一步消除電離層和對流層誤差,主要用于多路徑誤差和測量噪聲.因在雙差過程中消除了絕大部分誤差,因而一般情況下通過相對定位可獲得高精度的定位結果.
1.2.2 隨機模型
在GNSS 數據處理中,驗前隨機模型可采用等權模型、高度角模型和C/N0 模型.對于高精度GNSS設備,其觀測值誤差與衛星高度角成負相關,故一般采用高度角定權[11].文獻[12]研究發現手機中GNSS觀測值精度與C/N0 的相關性比與高度角更強,因此針對手機GNSS 數據處理使用C/N0 定權更合理.基于C/N0 的隨機模型有多種形式,本文采用顧及雙頻C/N0 差異的SIGMA-Δ 模型[13],即

1.2.3 參數估計
在建立函數模型和隨機模型后,再進行參數估計.考慮到手機GNSS 觀測值精度低,粗差和難以探測的小周跳較多,本文采用抗差卡爾曼濾波方法估計坐標參數,以期獲得更平滑的定位結果.傳統的抗差卡爾曼濾波根據驗后殘差調整觀測值權重,需進行多次迭代濾波計算,增加了計算負擔,不便于實時應用.本文利用觀測值預測殘差直接調整權,以一次濾波實現抗差,具體原理可參見文獻[14].
此外,在數據質量控制方面,通過高度角、C/N0閾值篩選參與定位解算的觀測數據,以接收機自主完好性監測剔除偽距粗差,采用LLI 因子、多普勒、偽距-相位組合等方法探測周跳.手機RTK 定位流程如圖2 所示.

圖2 手機RTK 定位流程
將手機作為RTK 定位終端可由兩種方式實現:①由手機獲取GNSS 觀測值,并直接在手機上進行實時定位解算、展示、存儲;②采用云-端模式,即在手機端采集GNSS 數據,將數據通過網絡發送至云端,由云端解算完成后,再將結果返回至手機端,由手機展示定位結果.其中,方式②處理效率高,但對網絡通訊能力的要求更高.考慮到如今智能手機本身已有強大的計算和存儲能力,完全滿足方式①的環境要求,因此本文按方式①實現手機RTK 定位.以Android Studio 為開發平臺,使用Java 和C 語言完成APP 開發,如圖3 所示APP 設計分為四個模塊:

圖3 手機RTK 定位APP 框架設計圖
1)觀測值解析.從API 中獲取原始GNSS 類字段信息,經解析生成偽距、載波相位等觀測值,用于實時定位解算和輸出觀測值文件.
2)基準站數據和星歷獲取.基準站差分數據以美國海事無線電技術委員會(RTCM) 格式,通過互聯網RTCM 傳輸(NTRIP) 技術從數據中心實時獲取.本軟件采用單基準站RTK 技術,故只需連接一個基準站.
3)定位解算.RTK 定位解算是APP 的核心,其算法流程如圖2 所示.為增加核心算法的可移植性和簡化開發流程,將經過整個定位模塊開發完成后封裝為一個C 語言動態庫文件,并直接在Java 中運用Java 本地接口(JNI)技術調用該庫文件.
4)結果展示和輸出.通過星空圖、三維坐標等方式展示觀測數據和定位結果狀態,針對大眾應用將坐標顯示到地圖上實時展示用戶位置和移動軌跡,針對測量等專業應用設計單點測量和坐標轉換功能.將RTK 定位結果和手機本身內置芯片的定位結果保存為文本文件,同時可將觀測值以接收機無關的交換格式(RINEX)輸出,便于事后解算和分析.
APP 設計分為定位設置、定位狀態、地圖跟蹤和工具4 個頁面,主界面如圖4 所示.

圖4 手機RTK 定位APP 主界面
為檢驗該APP 的RTK 定位性能,在靜態開闊條件下使用兩臺小米8 (簡稱MI8 #1、MI8 #2)手機進行1 h 實時定位測試.流動站與基準站之間的基線長約0.5 km,其中,基準站數據源來源于自主架設的單基準站,通過NTRIP 協議實時播發RTCM 數據,流動站精確坐標利用測量型接收機通過事后RTK 方式得到.為保證信號接收充分,兩臺手機均采用手機支架豎直放置,如圖5 所示.

圖5 靜態條件下手機RTK 定位測試(左:MI8 #1,右:MI8 #2)
在測試過程中,主要使用北斗衛星導航系統(BDS)/GPS/ Galileo 三個系統進行組合定位.具體解算參數設置見表3 所示.

表3 手機RTK 解算參數設置
將APP 定位結果與手機內置芯片解和參考接收機RTK 坐標結果進行對比.當手機RTK 在東(E)、北(N)、天頂(U)三個方向誤差均小于0.2 m 時,視為收斂.定位結果如圖6 和表4 所示,從測試結果可以看出,手機APP 得到的RTK 定位結果精度明顯高于內置芯片解,收斂后精度約在1 dm,N 方向可達厘米級,而芯片解具有較大的系統偏差.手機內置芯片解一般采用多源傳感器融合單點定位,具有較高的平滑度,但隨著誤差累積,偏差會進一步加大.另外,測試結果表明,兩臺小米8 手機的實時定位結果具有一致性.


圖6 靜態條件下手機RTK 與內置芯片解對比

表4 靜態條件下手機RTK 定位測試統計結果 m
以自主開發的手機RTK 定位APP 為載體,針對不同應用領域,選擇典型應用場景和條件進行應用試驗.模擬RTK 導航和測量時,為便于獲取參考坐標,將小米8 手機和測量型天線同時安置于對中桿上進行同步實時定位,如圖7 所示.

圖7 模擬RTK 測量裝置
3.2.1 高精度導航應用試驗
手機本身具備大眾導航功能,但手機內置芯片解精度往往較低,本節采用手機RTK 模擬行人導航和車輛導航.
1)行人導航
圖8 中行人導航實驗場址為中南大學某體育場,環境相對開闊.將參考接收機天線和手機固定于對中桿上,行人手持對中桿步行導航,在同一場景進行了兩次試驗,每次試驗勻速繞體育場行走2 圈.

圖8 行人導航軌跡(黃:第一次;紅:第二次)
手機RTK 及手機內置芯片解結果如圖9 所示,統計結果如表5 所示,可以看出兩次試驗中平面方向精度可達亞米級,高程方向精度在2 m 以內,第二次精度高于第一次.第一次試驗時由于手持對中桿高度較低,受到一定程度的遮擋,接收到的GNSS 信號質量差,故RTK 定位結果波動較大,但仍遠優于芯片解.手機中的芯片解因采用了多源融合,在穩定性方面具有優勢,但N 方向產生了米級的系統偏差.第二次試驗RTK 和芯片解的精度和穩定性較第一次都有所提升,說明兩者都依賴接收到的GNSS 信號質量,但此時RTK 結果在精度和穩定性方面均優于芯片解.


圖9 行人導航誤差
2)車輛導航
如圖10 所示,車輛導航實驗場址為中南大學校園內道路,道路包含高樓、樹木、水面等強多路徑和信號遮擋路段,以及曲線等常規道路條件.分別選取了不同的線路進行了2 次試驗,線路長度分別為2.5 km和2.2 km.采用電動摩托車作為測試車輛,在行駛過程中車輛保持勻速.

圖10 車輛導航軌跡(黃:第一圈;紅:第二圈)
手機RTK 及內置芯片解結果如圖11 所示,統計結果如表5 所示.可以看出,在車載情況下,受到的觀測條件相比行人更復雜,此時手機RTK 也基本能夠保持在平面亞米級、高程1~2 m 的精度水平.兩次試驗中,RTK 結果精度均高于芯片解,尤其是在水平方向,而芯片解穩定性略高,第二圈的第200 和550 歷元處RTK 結果存在小跳點,可能是由周跳導致.

表5 行人和車輛導航RMS 統計 m

圖11 車輛導航定位誤差
3.2.2 低精度測繪應用試驗
本節采用手機RTK 定位APP 模擬低精度測繪應用,以單點測量的方式開展碎部測量、地理信息采集等工作.在校園內選取了5 個測量控制點和11 個井蓋作為待測地物.模擬RTK 測量作業時,人手持對中桿立于待測點位靜置約10 s 后,通過APP 單點測量功能記錄點位坐標.
2 處測量位置的點位布置情況如圖12 所示,均包含開闊和遮擋環境點位.

圖12 測量點位示意圖
測量結果平面坐標和點位誤差如表6 所示,其中精度統計中誤差為誤差絕對值的均值.可見,在點測量時,多數點位平面誤差在亞米級,個別點在1~2 m,高程誤差在1~4 m,其中平面統計精度為1.1 m,高程為2.4 m.點測量的精度略低于行人和車載,其主要原因是,點測量時受到的人員和環境干擾更復雜,設備運動狀態多變,降低了RTK 定位精度.整體上看,手機RTK 一般可達1 m 的平面精度,在觀測條件較好時可達到亞米級精度,基本滿足亞米級到米級的地理信息采集和調查作業精度要求.

表6 手機RTK 測量坐標結果 m
本文基于單站RTK 定位技術,設計并實現了一款手機RTK 定位APP,并開展了手機RTK 高精度導航定位應用試驗.利用谷歌公開的Android 應用程序接口,獲取手機GNSS 原始觀測數據,直接在手機端實現RTK 高精度定位.在靜態條件下,APP 實時定位精度可達1 dm;將RTK 定位APP 進行應用試驗,在行人和車載動態條件下,可達平面亞米級、高程1~2 m 的精度水平,且RTK 定位精度遠高于內置芯片解,但穩定性略差于內置芯片解;使用手機模擬RTK 測量,結果表明:RTK 結果平面精度約在1 m,高程方向誤差在米級,基本滿足亞米級到米級的地理信息采集和調查等應用的需求,融合手機中MEMS等傳感器后有望進一步提升RTK 定位精度和穩定性.文中方法和試驗結論可為相關研究提供參考借鑒.