袁陽,周汝雁,張云
(1. 上海海洋大學 信息學院,上海 201306;2. 農(nóng)業(yè)部漁業(yè)信息重點實驗室,上海 201306)
隨著手機的廣泛使用以及人們對手機的依賴程度的提高,手機定位應用的場景也越來越多,這種需求促使市場上出現(xiàn)了多種手機定位軟件.現(xiàn)代生活節(jié)奏的加快,日常生活中實時獲取高精度地理位置信息也成為人們不斷關注的熱點,例如:危險品運輸車定位追蹤[1],無人機配送[2]等.目前智能手機室內(nèi)外定位的研究才剛起步,科研成果較少,主要原因是智能手機全球定位系統(tǒng)(GPS)定位模塊在性能上與 GPS 接收機相差甚遠[3].任超等[4]研究了基于 GPSOne 技術的智能手機定位精度及可靠性;Zandbergen等[5]比較了輔助GPS、WiFi 和蜂窩定位技術,還研究了高靈敏度GPS手機的定位精度[6];但以上研究皆是使用輔助設備來提高手機定位精度,本文研究了利用Android手機自帶的GPS芯片,通過設計擴展卡爾曼濾波定位算法來提高定位精度.
目前求解用戶位置最常用的算法是加權最小二乘法.加權最小二乘法的思想就是賦予每個衛(wèi)星的偽距測量值不同的權重,權重越大的偽距測量值在解方程的過程中起到的作用越大[7]. 加權最小二乘算法定位解算的步驟為: 數(shù)據(jù)準備與初值設定、線性化方程組、求解矩陣方程以及迭代性判斷.加權最小二乘法不需要動態(tài)知識,僅使用偽距測量來估計位置,但該方法存在缺點:估計的質(zhì)量完全取決于測量的質(zhì)量,并且其要求最少的測量次數(shù)(要估計用戶位置和接收機時鐘偏差,通常需要4個衛(wèi)星).卡爾曼濾波技術是20世紀60年代產(chǎn)生的一種遞推線性最小方差估計技術,估計誤差最小的更多狀態(tài)的估計值[8],具有以下特點[9]: 1)處理對象是隨機信號; 2)被處理對象無有用和干擾之分,被處理信號通過濾波進行估算; 3)系統(tǒng)的白噪聲激勵和量測噪聲并非要濾除,而是估計所需要的統(tǒng)計特征.GPS動態(tài)定位自適應卡爾曼濾波算法,通過仿真實驗可知該方法快速有效地提高了GPS定位精度[10],濾波過程穩(wěn)定[11-12].并且擴展卡爾曼濾波在偽距差分定位[13]、多徑誤差削弱[14]、松組合導航[15]等應用中具有較好的效果.本文就是在擴展卡爾曼濾波算法的基礎上,具體設計并實現(xiàn)了靜態(tài)卡爾曼濾波和動態(tài)卡爾曼濾波算法,兩種算法最主要的差別就是它們在狀態(tài)向量和狀態(tài)轉(zhuǎn)移矩陣上的差別,動態(tài)卡爾曼濾波在狀態(tài)向量中增加了速度參數(shù),在低速動態(tài)實驗中能夠結(jié)合時間來獲得更好的定位結(jié)果.
隨著Android 7.0系統(tǒng)的發(fā)布,手機芯片提供了有關定位的應用程序接口(API),應用開發(fā)者可以根據(jù)相關API獲取定位所需數(shù)據(jù),通過使用更好的定位算法來實現(xiàn)更高的定位精度.本文就是通過API中提供的location類獲取定位所需參數(shù),同時使用安卓開發(fā)軟件設計了靜態(tài)卡爾曼濾波、動態(tài)卡爾曼濾波定位算法.鑒于手機的應用場景,本文完成了靜態(tài)與低速動態(tài)實驗,并與加權最小二乘法進行了對比分析,結(jié)果表明兩種擴展卡爾曼濾波算法具有更好的定位效果.
對于衛(wèi)星與接收機之間偽距的測量,有如下非線性方程:
ΡRC=r+δtR-δtS+dion+dtrop+ε,
(1)
式中:ΡRC為衛(wèi)星與接收機之間的偽距;r為衛(wèi)星與接收機之間的幾何距離;δtR為接收機鐘差;δtS為衛(wèi)星鐘差;dion為電離層延遲;dtrop為對流層延遲;ε為接收機噪聲.
如果知道接收機的近似位置,就可以將公式(1)線性化,其近似位置可以通過系統(tǒng)API中得到.所以在近似位置坐標處用一階泰勒級數(shù)展開,得到如下線性方程:
ΡRC-r0+δtS-d0,ion-d0,trop,R
(2)
式中: (XS,YS,ZS)為衛(wèi)星的位置坐標;(X0,Y0,Z0)為接收機的近似位置坐標.下標0表示通過使用近似接收機位置信息來估計的參數(shù).通過該線性化偽距方程,可以得到觀測矩陣.
1.2.1 擴展卡爾曼濾波計算過程
卡爾曼濾波算法核心思想在于:預測+測量反饋.算法將通過系統(tǒng)狀態(tài)方程計算得到的預測值作為先驗信息,之后在觀測部分更新此信息.卡爾曼濾波計算過程如下:
1) 該算法在第k個歷元的狀態(tài)向量xk及其協(xié)方差矩陣Pk的時間預測方程為
(3)
(4)
式中:Fk為狀態(tài)轉(zhuǎn)換矩陣;Qk為過程噪聲矩陣.
2) 計算更新向量γk及其協(xié)方差矩陣Sk:
(5)
(6)
式(5)和式(6)中:zk為觀測向量;Hk為觀測矩陣;Rk為測量噪聲協(xié)方差矩陣.
由公式(5)可以計算卡爾曼增益Kk:
(7)
3) 由式(3)、(4)、(5)、(7)可以得到最后的測量更新方程:
(8)
(9)
1.2.2 靜態(tài)卡爾曼濾波實現(xiàn)
對于靜態(tài)用戶,本文設計的在歷元k處的狀態(tài)向量xk為
(10)
靜態(tài)用戶不會改變其移動位置,這意味著隨著時間的推移(X,Y,Z)坐標保持不變.因此只需要考慮如何對接收器時鐘的動態(tài)行為進行建模,其近似為:
(11)
(12)
式中,ΔT是測量時間間隔.
所以就有狀態(tài)轉(zhuǎn)換矩陣Fk為
(13)
在靜態(tài)情況下,可以假設用戶沒有移動并且接收器時鐘具有一些頻率和相位誤差.因此,過程噪聲矩陣Q就可以寫成如下形式:
(14)
式中接收器時鐘參數(shù)Sg,Sf分別表示為
Sg≈2π2h-2,
(15)
(16)
式中,h-2和h0分別為隨機頻率噪聲和白噪聲的功率譜密度(PSD).
1.2.3 動態(tài)卡爾曼濾波實現(xiàn)
對于動態(tài)用戶,必須考慮用戶速度的問題.所以需要重新定義新的狀態(tài)向量如下:
(17)
式中:U,V,W分別表示X、Y、Z方向上的速度,初始值為0.
動態(tài)卡爾曼濾波的狀態(tài)向量發(fā)生改變,因此也需要重新定義一個新的狀態(tài)轉(zhuǎn)換矩陣Fk和一個新的過程噪聲矩陣Qk,其定義如下:
(18)
式中,SX、SY和SZ分別為位置隨機過程的光譜幅度,根據(jù)經(jīng)驗,本文中取值分別為0.5,0.5,0.1.
本文實驗使用的手機設備是小米6X,手機參數(shù)如表1所示.
表1 小米6X手機參數(shù)
該手機中Android版本是Android 8.1,可以通過API中提供的location類獲取定位所需參數(shù).運行內(nèi)存和處理器能夠保證有較好的數(shù)據(jù)收集和數(shù)據(jù)處理能力,并且支持GPS導航和北斗衛(wèi)星導航系統(tǒng)(BDS),為實驗提供了設備基礎.本文算法的實現(xiàn)是使用GPS衛(wèi)星數(shù)據(jù).
本文實驗分為2種:靜態(tài)實驗和低速動態(tài)實驗.
靜態(tài)實驗是指將手機置于某地靜止不動獲取數(shù)據(jù).靜態(tài)實驗要求四周沒有反射環(huán)境,能夠很好地接收衛(wèi)星信號.通過分析靜態(tài)實驗定位結(jié)果圖像以及各個定位結(jié)果到平均值點的距離差的大小,判斷每種方法在靜態(tài)實驗中的定位效果.
低速動態(tài)實驗又分為電動車實驗和步行實驗.電動車實驗是將手機置于電動車上行駛,步行實驗是手持手機行走,兩個實驗都盡量保持勻速,且要求良好的實驗環(huán)境.通過分析實驗路線定位結(jié)果圖像的變化幅度與實際路線的相似情況以及各個定位結(jié)果到實際路線的距離差,判斷哪種方法更加適合動態(tài)定位.
靜態(tài)實驗與低速動態(tài)實驗數(shù)據(jù)收集時間與平均速度如表2所示,從表中可知兩個低速動態(tài)實驗速度不高,是屬于低速動態(tài)實驗.
表2 靜態(tài)實驗與低速動態(tài)實驗數(shù)據(jù)收集時間與平均速度
本文中靜態(tài)實驗地點是上海海洋大學信息學院旁邊校友之家的樓頂,該實驗環(huán)境良好,四周空曠無反射環(huán)境.實驗時間為2019年5月6日中午12點20分,持續(xù)獲取數(shù)據(jù)時間為半個小時.靜態(tài)實驗定位結(jié)果如圖1所示(文中所有圖片均使用Google Earth軟件畫出).
(藍色:加權最小二乘法結(jié)果;紅色:靜態(tài)卡爾曼濾波結(jié)果;白色:動態(tài)卡爾曼濾波結(jié)果)圖1 3種算法的定位結(jié)果圖
由圖1的定位結(jié)果可知,對于靜態(tài)用戶,靜態(tài)卡爾曼濾波算法定位結(jié)果最集中,變化幅度最小,說明每一時刻的定位結(jié)果幾乎沒有發(fā)生太大變化,其定位結(jié)果最好.動態(tài)卡爾曼濾波算法定位結(jié)果相對集中,變化幅度相對較小,僅有幾個數(shù)據(jù)結(jié)果較差,定位結(jié)果在旁邊水面.加權最小二乘法算法定位結(jié)果變化幅度最大結(jié)果最差,有較多的數(shù)據(jù)結(jié)果定位在旁邊的水面上以及草地上;其定位結(jié)果在各個方向上都有結(jié)果較差的數(shù)據(jù).
根據(jù)計算出來的定位結(jié)果坐標,取3種方法的經(jīng)緯度坐標的平均值(作為有效點),并根據(jù)坐標轉(zhuǎn)換公式算出3種方法每個定位結(jié)果坐標點到有效點的距離差(單位:m),最后算出距離差的平均值,均方根值和均方根誤差.其結(jié)果如表3所示:
表3 3種方法距離差的平均值,均方根值和均方根誤差 m
平均值越小表明通過某種算法得到的定位結(jié)果坐標越集中.均方根誤差值越小,說明定位結(jié)果越好.從表3中可以看出,靜態(tài)卡爾曼濾波算法得到的距離差的平均值、均方根值和均方根誤差分別為0.28、0.32、0.15,其值均為其中最小,也直接說明靜態(tài)卡爾曼濾波的定位結(jié)果最好.動態(tài)卡爾曼濾波算法的定位結(jié)果其次,加權最小二乘法的定位結(jié)果最差.
綜上可知,靜態(tài)卡爾曼濾波算法更加適合靜態(tài)用戶定位.
3.2.1 電動車實驗
電動車實驗地點為:上海海洋大學體育館旁大路,道路中間無遮蔽物,道路兩旁有樹木,距離道路中間有一段距離,不會有反射等情況.行走路線為直線,距離約為320 m,收集數(shù)據(jù)時間為1分30秒,電動車平均速度約為:13 km/h.3種方法的定位結(jié)果路線與實際路線如圖2所示.
(藍色:加權最小二乘法結(jié)果;紅色:靜態(tài)卡爾曼濾波結(jié)果;白色:動態(tài)卡爾曼濾波結(jié)果;黑色:實際路線)圖2 3種方法的定位結(jié)果路線與實際路線圖
圖2中紅色、白色、藍色和黑色分別代表了靜態(tài)卡爾曼濾波、動態(tài)卡爾曼濾波、加權最小二乘法的定位結(jié)果和實際路線.從圖中可以看出,動態(tài)卡爾曼濾波和加權最小二乘法的定位結(jié)果與實際路線接近,其中動態(tài)卡爾曼濾波定位結(jié)果更加平滑,更接近實際路線,定位結(jié)果更好.靜態(tài)卡爾曼濾波因為其定位結(jié)果變化幅度小,其路線明顯偏離了實際路線,定位結(jié)果最差.
同步行實驗數(shù)據(jù)處理相同,由于靜態(tài)卡爾曼濾波方法明顯偏離了實際路線,在這里不做計算.計算加權最小二乘法和動態(tài)卡爾曼濾波2種算法每個定位結(jié)果到實際行走路線的誤差.它們的平均值,均方根值和均方根誤差如表4所示.
表4 2種算法誤差的平均值,均方根值和均方根誤差 m
從表4中可以看出,動態(tài)擴展卡爾曼濾波算法誤差的平均值,均方根值和均方根誤差均比加權最小二乘法的值小,表明使用該算法能夠得到更好的定位結(jié)果.從該數(shù)據(jù)可知,對于電動車實驗,動態(tài)擴展卡爾曼濾波定位結(jié)果最好,比加權最小二乘法更加適合低速動態(tài)實驗.
3.2.2 步行實驗
步行實驗地點是上海海洋大學操場,該地點是一個空曠環(huán)境,周圍沒有反射物體.手持手機收集數(shù)據(jù),行走路線為外圈橢圓形,速度約為5.4 km/h,收集數(shù)據(jù)時間為5分40秒. 其定位結(jié)果如圖3所示.
(藍色:加權最小二乘法結(jié)果;紅色:靜態(tài)卡爾曼濾波結(jié)果;白色:動態(tài)卡爾曼濾波結(jié)果)圖3 步行實驗結(jié)果
圖3中,紅色、白色和藍色分別代表了靜態(tài)卡爾曼濾波、動態(tài)卡爾曼濾波和加權最小二乘法的定位結(jié)果.行走路線為操場最外圈、接近紅白相間處的橢圓形,由于實際路線沒有具體坐標數(shù)據(jù),所以并未在圖中畫出,也無法計算兩種方法距離行走路線誤差的平均值,均方根值和均方根誤差.從圖中可知,加權最小二乘法和動態(tài)卡爾曼濾波最接近實際行走路線,適合動態(tài)用戶定位.但其中動態(tài)卡爾曼濾波路線波動幅度較小,可以看出其誤差更?。o態(tài)卡爾曼濾波結(jié)果同電動車實驗相同,定位結(jié)果變化幅度小,與實際路線明顯偏差較大,說明靜態(tài)卡爾曼濾波不適合動態(tài)用戶.從靜態(tài)卡爾曼濾波的推導公式中也可以看出,在它的狀態(tài)向量、轉(zhuǎn)換矩陣中沒有速度的概念,不能令其定位結(jié)果隨時間變化而快速改變.
從電動車實驗和步行實驗結(jié)果可知:動態(tài)卡爾曼濾波算法更加適合低速動態(tài)實驗.
針對現(xiàn)階段直接利用手機的GPS芯片原始數(shù)據(jù)的定位研究比較少的背景,本文主要對基于手機GPS原始數(shù)據(jù)定位可行性以及定位算法進行了研究.利用Android 7.0系統(tǒng)提供的API獲取定位所需GPS原始數(shù)據(jù)參數(shù),并將這些參數(shù)應用到設計的靜態(tài)卡爾曼濾波和動態(tài)卡爾曼濾波算法中.為測試算法的性能,進行了靜態(tài)實驗和滿足日常手機定位需要的低速動態(tài)實驗,并與傳統(tǒng)的加權最小二乘法作對比分析.在分別進行的靜態(tài)實驗以及電動車實驗和步行實驗的實驗結(jié)果可以看出:在靜態(tài)實驗中,靜態(tài)卡爾曼濾波誤差的平均值和均方根誤差值都是最小,其定位結(jié)果最好.在低速動態(tài)實驗中,動態(tài)卡爾曼濾波誤差的平均值和均方根誤差值都是最小,定位結(jié)果最好,更加接近實際路線.
實驗結(jié)果證明了利用手機GPS原始數(shù)據(jù)實現(xiàn)定位的可行性,同時也證明了本文設計的卡爾曼濾波算法可以提高相應場景的定位精度,論文的研究結(jié)果為將來實現(xiàn)靜態(tài)與動態(tài)的高精度手機定位算法(如RTK算法)提供了必要的理論依據(jù).