蔣長輝,陳育偉,Juha Hyyppa
(芬蘭地球空間研究所遙感與攝影測量部, 芬蘭 埃斯波 FI-02450)
芯片級全球導航衛星系統(Global Navigation Satellite System,GNSS)接收機一直是智能手機的重要組成部分[1]。智能手機GNSS接收機可以提供三維位置信息,支持各種基于位置的服務應用(Locat-ion-Based-Service,LBS)[1]。然而,在以高樓為特征的城市地區,受天線限制,智能手機GNSS信號質量較差,在信號惡劣的環境下定位精度有時會下降。具體來說,城市地區的GNSS信號傳輸路徑受多徑(Multi-Path,MP)、非視距(None-Line-Of-Sight,NLOS)信號等多種因素的影響。MP是指GNSS接收機同時收到了反射信號和直射信號,兩個信號混和在一起;NLOS是指GNSS接收機接收到反射信號,而沒有接收到直射信號。額外的信號傳輸路徑會引起高達數十米的位置偏差,這是導致城市地區智能手機GNSS定位精度降低的主要因素[2-4]。
在智能手機GNSS接收機中,通常使用最小二乘法(Least Square,LS)完成位置、速度和時間(Position Velocity and Time,PVT)的計算[5]。在 LS 方法中,PVT的計算是基于最小化測量殘差的規則進行的。在城市復雜環境下,NLOS造成的偽距偏差會污染測量并導致位置偏差[4]。就其本質而言,LS方法忽略了位置和速度之間的內在關系。事實上,在NLOS條件下,速度更值得信賴,可以用來平滑位置。卡爾曼濾波器(Kalman Filter,KF)是計算 PVT信息的另一種方法,其規則是最小化均方誤差[5]。KF相對于LS而言,結合運動模型利用速度信息對位置信息進行平滑。具體來說,首先構建位置-速度狀態傳播模型,通過這種方式利用速度信息平滑位置估計[6]。由于信號的反射對導航信號多普勒頻移影響相對更小,速度比位置更準確,在KF中采用狀態傳播模型的預測信息,期望得到更平滑和更準確的解。然而,KF 忽略了這些狀態的時間相關特性,這些狀態通過速度信息高度相關。KF以遞歸方式工作,在估計當前狀態時忽略過去的歷史信息[6]。
因子圖優化(Factor Graph Optimization,FGO)方法在同步定位和制圖(Simultaneous Localization and Mapping,SLAM)中獲得了巨大的成功[7-10]。它利用所有與時間相關的過去測量一起估計所有過去的狀態,FGO算法在GNSS位置信息估計中具有巨大的潛力。T.Suzuki在 GNSS 時間相關實時動態(Real-Time Kinematic, RTK)中使用了FGO,并獲得了優于KF的位置結果[7]。蔣長輝在GNSS矢量跟蹤(Vector Tracking,VT)中實現了FGO,通過在VT 導航濾波器中用FGO代替KF獲得了更好的定位結果[9]。此外,在 GNSS中研究了FGO,以提高城市地區位置的穩健性[10-13]。然而,在減小NLOS引起的誤差方面,速度并未得到充分利用。尤其是智能手機GNSS,受限于硬件,研究利用速度平滑定位結果具有重要意義。
為了減少城市復雜環境下NLOS信號對智能手機 GNSS引起的位置誤差,本文提出了一種基于自適應FGO的智能手機GNSS位置平滑方法,并通過實際場景實驗驗證了所提算法的性能。

(1)
式中,tb表示GNSS接收機時鐘鐘差;c表示光速。另外,式(1)中的偽距指矯正過之后的[6]。
根據式(1)可以計算用戶位置,位置增量和偽距增量之間的關系可以表示為

(2)

(3)
在NLOS環境下,式(3)可以被寫成如下
(4)
式中,bNLOS為NLOS信號造成的位置偏差。通過對比式(3)和式(4)可以發現,NLOS信號導致了位置估計結果的額外偏置。
KF狀態方程建立在用戶運動學模型之上,狀態方程如下
=Fk,k+1·Xk+wk+1
(5)

KF量測方程如下
=Hk+1·Xk+1+ηk+1
(6)

在NLOS環境下,將NLOS信號造成的偏置添加到量測信息,新的模型如下
(7)

KF更新過程如下
(8)
(9)
(10)
Kk+1=
(11)
(12)
式中,Qk和Rk+1為狀態方程噪聲協方差矩陣和量測噪聲協方差矩陣;Pk和Kk+1為誤差協方差矩陣和卡爾曼增益矩陣。
在NLOS環境下,式(10)可以寫成如下形式
(13)
從式(13)可以看出,NLOS信號從以下兩個方面對KF估計的狀態產生影響:1)NLOS信號產生的量測偏置在KF狀態更新時降低了狀態估計精度;2)信號經過反射之后,量測噪聲變大,如果保持量測噪聲協方差不變會對狀態估計產生消極影響。
在因子圖中,通常用邊連接因子節點和變量節點。對于給定的測量,狀態估計的目的是找到最佳的后驗狀態估計,可以寫成如下形式
(14)

(15)
如上所述,狀態估計是基于運動模型和測量模型進行的。基于速度的狀態變換和位置測量被建模為兩個獨立的節點。假設狀態過程噪聲和測量噪聲均服從具有協方差矩陣的零均值高斯分布,可以將狀態估計表述為最大后驗問題,模型寫為
(16)
(17)

(18)

(19)
基于式(5)~式(7)列出的狀態和測量模型,FGO的圖形結構如圖1所示。如前所述,這里有兩個因子:運動模型因子和GPS位置因子,詳細信息和誤差函數如下所示。

圖1 因子圖結構Fig.1 Structure of the factor graph
(1)運動模型因子
兩個連續位置通過速度相關,基于運動模型,兩個連續位置表示為
(20)
因此,代價函數可以寫成如下
(21)

(2) GNSS因子
GNSS位置信息作為量測,模型如下

(22)
對應的代價函數如下
(23)
綜上,位置的最優估計可以轉換成最小化下列代價函數
(24)
本文中,采用GTSAM圖優化庫求解狀態的最優估計[14-16]。
如上分析,NLOS會導致位置估計的偏差。NLOS環境下的代價函數如下
(25)
從式(25)可以觀察到,NLOS產生的偏置會影響代價函數的值,最終影響位置信息的估計。相對而言,衛星導航信號的多普勒頻率被信號反射影響較小,因此速度信息理論上相對更準,這里基于速度信息構建殘差如下
(26)
在NLOS環境下,殘差會越來越大。這里給出兩種策略。
(1) 魯棒核函數
這里將Huber魯棒函數引入FGO算法以抑制NLOS帶來的位置誤差,Huber函數定位如下[8]
(27)
式中,x為變量;b為閾值。
(2) 自適應協方差矩陣
如式(26)所示,NLOS信號會造成殘差突然變大,自適應協方差矩陣定位如下
(28)
本章利用二種不同的手機采集了靜態和動態數據,對提出的算法進行驗證。這里采用Google手機定位比賽數據集中的一組Google Nexus 5手機靜態數據和一組Xiaomi 8動態數據對算法進行進一步的驗證和分析。
首先采用Google Nexus 5手機采集的靜態數據對算法進行測試,采集地點為(37.422578°, -122.081678°, -28m)[11]。該場景中,GPS衛星2、5、12、15、18、20、21、25、26、29、31被用于定位。圖2所示為跟蹤的衛星信號強度隨時間變化,圖3所示為標準LS計算的水平位置和速度誤差。可以看到,水平位置誤差在10m以內,速度誤差在0.2m/s以內。圖4進一步地給出了水平位置誤差分布、定位精度因子和衛星數量變化。50%概率水平位置誤差為4.8m;可見衛星數很快穩定到10顆;HDOP值很快收斂到1以內。圖5所示為LS、KF和FGO對應的水平位置誤差對比,三種方法速度誤差方差為0.01,位置誤差方差為5。表1所示為以上三種方法對應的水平位置誤差統計分析。從統計分析結果可知,經過KF平滑之后的位置誤差均值和均方根降低了19.8% 和19.6%;經過FGO算法平滑之后的位置誤差均值和均方根進一步降低了40.1% 和26.3%。圖6給出了水平位置誤差的概率分布,和KF算法相比,50%和90%概率位置誤差減少了48.7% 和28.8%。

圖2 衛星信號載噪比Fig.2 Satellite signal C/N0

圖3 水平位置和速度誤差Fig.3 Horizontal position and velocity errors

圖4 水平位置誤差分布、HDOP和衛星數Fig.4 Horizontal position distribution, HDOP and satellite amount

圖5 Nexus 5定位誤差對比Fig.5 Comparison of Nexus 5 horizontal position errors

表1 定位誤差統計分析
這里在量測位置上加上固定偏差30m,以模擬NLOS場景造成的位置誤差,圖7所示為該場景下的位置誤差對比。圖7(a)為模擬從100s開始的10s NLOS場景下的FGO-Huber和自適應FGO的定位誤差;圖7(b)和圖7(c)分別為從100s開始的20s和30s NLOS場景下的定位誤差對比。從圖中的位置誤差曲線可以看出,FGO-Huber和自適應FGO算法可以有效地消除NLOS信號對水平定位精度的影響。在10s和20s NLOS場景下,FGO-Huber和自適應FGO定位誤差類似;但是當NLOS時間變長時,自適應FGO算法效果更好,可以有效地減小最大定位誤差。

圖6 水平位置誤差概率分布Fig.6 Probability distribution for horizontal position errors

(a) 10s NLOS定位誤差
進一步采用另一組Google手機定位比賽動態數據評估算法的有效性。此數據采用Xiaomi 8手機裝在車上采集,軌跡如圖8所示。位置誤差隨時間變化如圖9所示,FGO算法定位誤差最小。詳細的定位誤差統計分析如表2所示,和LS相比,KF和FGO算法的位置誤差均值減少了16.4%和39.3%,位置誤差均方根誤差也有不同程度的減少。

圖8 動態實驗軌跡圖Fig.8 Dynamic trajectory

圖9 水平位置誤差對比Fig.9 Comparisons of horizontal position errors

表2 水平定位誤差統計分析
和靜態實驗類似,在軌跡200s開始增加30m恒定誤差模擬NLOS信號造成的位置偏差,以評估算法在動態軌跡下的性能。圖10給出了從第200s開始的10s、20s和30s NLOS環境下的不同算法定位誤差對比。從圖中位置誤差可以看出,LS和KF結果被NLOS影響較嚴重,尤其是長時間NLOS信號導致LS和KF定位結果位置誤差異常,最大達40m左右。KF-Huber和自適應KF對NLOS造成的誤差有一定的抑制作用,但是當NLOS時間變長時,最大定位誤差仍然在變大,本實驗中最大誤差達到了40m。實驗結果證明了Huber魯棒核函數和自適應策略對NLOS誤差具有一定的抑制作用。對于10s NLOS場景,FGO-Huber和自適應FGO可以有效地抑制NLOS造成的位置誤差異常;但是當NLOS時間變長時,FGO-Huber效果有所下降,在20s和30s NLOS場景下,FGO-Huber算法的最大位置定位誤差大約達到了30m和43m,證明了本文提出的算法對NLOS誤差的抑制作用。
針對城市復雜環境下NLOS信號對智能手機定位精度的影響,本文基于因子圖框架和運動模型構建位置優化方法,并提出了FGO-Huber和自適應FGO方法抑制NLOS造成的位置誤差。通過靜態和動態實際場景實驗證明了所提算法可以有效地減少NLOS信號造成的位置誤差。根據實驗結果可以得出以下結論:
1)采用速度優化可以平滑定位結果,FGO算法可以有效地提高智能手機的GNSS定位精度;靜態實驗中,KF平滑之后的位置誤差均值降低了19.8%;經過FGO算法平滑之后的位置誤差均值進一步降低了40.1%;動態實驗中,和LS相比,KF和FGO算法的位置誤差均值減少了16.4%和39.3%。
2)自適應協方差矩陣結合FGO方法可以有效地克服NLOS信號對智能手機GNSS水平定位精度的影響,提高智能手機GNSS在城市復雜環境下的定位精度;動態實驗中,在10s、20s和30s NLOS環境下,自適應FGO算法可以一直抑制NLOS造成的位置誤差,而FGO-Huber等方法在20s和30s NLOS時長下,位置誤差逐漸變大,最大達到43m。