文章出處

作者:Vamei 出處:http://www.cnblogs.com/vamei 歡迎轉載,也請保留這段聲明。謝謝!

 

簡介

GPS的全稱是全球定位系統(the Global Positioning System)。它屬于美國政府,并由洛杉磯的聯合項目辦公室(JPO, Joint Program Office)管理。

1957年,蘇聯發射第一顆人造衛星。為了確定衛星的位置,多個地面基站同時觀測衛星發出的電波,并據此計算從基站到衛星的距離。這個想法很快被美國人發展下去: 既然多個地面基站可以確定空中的衛星位置,那么空中的多個基站也就可以確定地面上的位置了。GPS衛星組成的網絡就構成這樣的一個空中基站網絡。地面上的使用者只需要接收來自多個GPS衛星的信號,就可以計算出自己所在的位置。第一顆GPS衛星發射于1978年2月22日,最早的GPS系統只進行二維定位,但很快,GPS系統允許包括高度在內的三維定位。

 

 出埃及記,上帝是GPS?

GPS產生的初期主要是由美國國防部贊助。顯而易見,這樣一個全天候,不受天氣干擾的全球定位系統,有著極為重要的軍事意義。GPS系統第一次大顯身手也是在海灣戰爭。當時的GPS系統還沒有完成,所以美國空軍調整了GPS衛星的軌道,以便更好的服務于海灣地區。有一些部隊,比如坦克部隊,并沒有使用過GPS接收器,甚至于用膠布把GPS接收器固定在車內。即使如此,GPS系統還是發揮了它重要的導航功能,特別在難以識別地貌特征的沙漠地區。可以說,GPS系統重塑了現代戰爭的形式。

1983年的韓國空難,促使里根總統決定將GPS系統開放給民用。但很快,五角大樓意識到,通過一些GPS接收技術,民用碼和軍用碼可以產生幾乎相同的定位精度。出于軍事考慮,民用碼中被刻意引入誤差(selective availability)。1996年,克林頓總統簽署法令,停止對民用碼的干擾。GPS設備和技術開始在民用領域蓬勃發展,并帶動了技術本身的快速進步。

GPS系統已經滲入到我們的生活。在IT領域,移動端革命與GPS系統正在緊密融合。從IPhone 3G開始,IPhone中開始內置GPS接收器。GPS接收系統成為智能手機、平板電腦甚至筆記本的電腦的必然配置。GPS定位與軟件融合,構成了一個完美而廉價的導航和定位系統。以地理定位為基礎的移動應用,比如Google Map,Foursquare,Waze,都產生了巨大的成功。而以地理定位系統為基礎的真人游戲,更是沖擊著人們的想象力。

Foursquare

 

Ingress,基于GPS的游戲 地址http://v.youku.com/v_show/id_XNDc1NjUxNTI0.html

 

 

基本原理

如果在平面上,已知兩個點的坐標位置[$(x_1, y_1),(x_2, y_2)$],并且知道這兩個點到某個未知的距離[$r_1, r_2$],那么可以確定未知點的坐標位置。未知點的坐標為[$(x,y)$],我們實際上有兩個方程,來解出[$x, y$]兩個未知數。

$$(x - x_1)^2 + (y - y_1)^2 = r_1^2$$

$$(x - x_2)^2 + (y - y_2)^2 = r_2^2$$

從幾何上來說,我們可以從已知點畫兩個半徑分別為[$r_1,r_2$]的圓,它們的交點就是未知點的位置。

(這樣的點實際上有兩個,但在GPS情況下,未知點在衛星的下方,所以很容易選擇正確的解。)

兩圓相交

如果在三維空間,已知三個點的坐標位置,并且知道這三個點到未知點的距離[$r_1, r_2, r_3$],那么就可以有三個方程,用來解三個未知數[$(x, y, z)$],這樣我們就可以確定未知點的左邊位置。

從幾何上來說,我們可以從已知點畫三個半徑為[$r_1, r_2, r_3$]的球,這三個球的交點即未知點的位置。

 

三球相交

 

對于GPS來說,衛星的坐標位置是已知的。衛星在某個時間t向地面廣播信號。接收器在T時間接收到信號。電磁波信號在空間中的傳播速度近似于真空中的光速c。因此,[$c(T - t)$]就獲得了從衛星到接收器的距離。

在GPS衛星中,安裝有準確而昂貴的原子鐘,所以可以比較準確的或者t。而GPS接收器使用的通常是廉價的石英鐘,這大大減少了接收設備的成本,但也因此造成T誤差較大。由于無法準確的獲知T,所以通常將T當做一個未知項。這樣,在GPS應用中,要求至少四個已知點,即接收四顆衛星的信號,得到四個方程,解出四個未知數[$(x, y, z, T)$]。

 

如果一個衛星可以接收到更多顆衛星信號,就可以解出更多的相對較小的誤差項,因此獲得更好的定位精度。通常使用最小方差(Least Square)或者卡曼濾波(Karman Filter)的方法,來獲得最終解。

 

衛星網絡

GPS的衛星網絡最初設計為24顆衛星。這24顆衛星分布在6個軌道上,每個軌道上有4顆衛星。全球的任意一點都可以在任意時刻接收到至少4顆衛星的信號。 現在的GPS衛星網絡超過了24顆衛星,因此有的軌道上是5顆衛星。

 地球上一點可觀測到的衛星數

根據開普勒定律,衛星的軌道都是一個橢圓形。GPS軌道的偏心率僅為0.01,所以可以近似為一個圓形(圓形的偏心率為0)。軌道的半長軸大約為26560公里,大約為4個地球半徑(地球半徑約為6371公里)。下圖顯示了GPS軌道與地球半徑的比例:

GPS衛星的軌道周期大約為11小時58分鐘。GPS衛星的周期是特意選擇的,以便吻合地球自轉和公轉周期,從而讓同一衛星在每一天的同一時間出現在天空的同一位置。我們可以用地表路徑的方式,來表示衛星的位置。取衛星和地心的連線,該連線與地表的交點可以繪制在下面的地圖中:

 

GPS衛星的地面投影圖

每個衛星的軌道平面傾角都是55度,即衛星軌道平面與赤道面的夾角為55度。在北極的接收者看來,一顆衛星最多也只能上升到距離天頂35度的距離。因此,在高緯度地區,GPS的精度要差于赤道附近。下圖顯示了軌道側面與赤道的角度:

共計有6個軌道平面,所以每個軌道平面轉過了60度(360/6)。

 

GPS信號

GPS衛星像廣播一樣,不斷向外發送信號。GPS接收器是一個被動的接收裝置,用于接收GPS衛星發出的信號,并反演接收器所在位置。GPS信號的基礎是簡諧的載波(carrier wave)。衛星播放兩個頻率的信號: L1載波,1575.42MHz,波長19厘米; L2載波,1227.60MHz,波長24.4厘米。同時擁有兩個波段的信號,可以抵消掉一個重要的誤差,即電離層造成的延遲。由于電離層造成的延遲與頻率相關,因此可以通過兩個不同頻率波的差異,來反映出電離層的狀況。

(新一代的GPS衛星將帶有第三個波段L5) 

載波與碼

 

在載波上,可以加載-1和1的二值碼(binary code)。在接收到信號時,可以利用信號處理技術,將載波和碼分開。這些碼是偽隨機性質的,并在一定位數后重復自己。在接收到衛星發出的碼時,接收器本身也使用自己的時鐘產生相應的碼。通過比較兩個序列,可以知道衛星信號延遲的位數,從而計算衛星與接收器的距離。

一種碼是C/A碼(coarse aquisition),只存在于L1波段(但新一代的GPS衛星將在兩個波段同時加載C/A碼)。C/A碼的信號速率為1.023Mbps。也就是說,每一位持續約1ms。另一個碼是P碼,信號速率為10.23Mbps,同時存在于L1和L2波段。后來P碼被加密為專用的Y碼(Anti-Spoofing)。C/A碼可以被任意用戶使用,也比較容易處理,但精度相對較差。P(Y)碼必須經過特別的許可才能使用。在沒有干擾的情況下,C/A碼和P碼的精度差距并不大。

此外,在L1和L2波段上,還加載有GPS的航行信息(navigation message),它也是二值碼,用于說明GPS衛星的位置。

 

除了使用加載的C/A碼或者P碼定位之外,還可以使用載波的相位(phase)定位。相位可以理解為間歇運動經歷的周期數。簡諧波在到達接收器之前經歷了x個周期,x是一個實數。通過測量x,再乘以波長,就可以更加精確的獲得從衛星到接收器的距離。然而,載波相位的處理比較復雜。相位本身會隨著周期重復。也就是說,我們只能測量x的小數位。相同測量值,可能相差整數個波長。為了確定x的整數位,相位定位需要更加復雜的技術手段,因此它主要用于高精度的定位。

 

GPS的發展

GPS有其它定位技術無可比擬的優勢,但也有自身的弱點。由于需要接收衛星發射的信號,所以GPS技術很難用于隧道或者室內作業。此外,GPS的計算相對比較復雜,有時會難以應對有實時需求的情境。因此,GPS技術也經常與其它定位技術相結合,以提供覆蓋面更廣,更精確,也更快速的定位。

一個例子是汽車駕駛導航。汽車導航系統可以由兩套獨立系統構成。一套是GPS系統,它依賴于GPS信號,無法在一些特定地形下導航(比如隧道)。一套是由里程表和陀螺儀構成的傳統導航系統,里程表負責記錄距離,陀螺儀負責記錄方向。然而這兩個裝置都可能在長時間的運作下積累誤差。這兩者融合,可以在有GPS信號時,用GPS導航,并對里程表和陀螺儀進行校準;在沒有GPS信號時,使用傳統導航系統。這樣的混合導航系統,將有能力滿足未來自動駕駛的需求。再一個例子是將GPS技術和激光定位結合,避免城市的高樓大廈對GPS信號的遮掩。這對城市建筑作業有重要的意義。

自動駕駛

IPhone的GPS系統則融合了蜂窩網絡和WiFi。蜂窩基站和一些Wifi擁有自己準確的位置信息,可以通過探測IPhone信號的方向,可以粗略的獲得IPhone在網絡中的方位。這也是你在IPhone定位一開始,看到的大圓圈的原因。蜂窩網絡的基站安裝有時間同步系統,可以減少接收時間T包含的誤差。在這些信息的幫助下,IPhone可以更加快速,精準的進行GPS定位,圓圈迅速縮小,形成準確的位置。


 

 除了導航和定位功能外,GPS系統還可以基于多普勒原理,通過測量電波的頻率變化,來測量GPS接收器的運動速度。

GPS信號在穿越大氣層的時候,會受到電離層和對流層的影響。利用廣泛覆蓋的GPS網絡,來觀測電離層和對流層的大氣狀況,也是氣候變化和日地環境的一個全新研究方法。美國、歐洲和日本的研究和應用處于領先地位。

Ionosphere: 電離層; Troposphere: 對流層

 

由于GPS技術的巨大潛力,各國也在爭相發展自己的定位系統,比如俄國的GLONASS已經形成了全球定位的衛星網絡,再比如中國的北斗系統,利用靜地衛星提供區域定位。

幾十年的時間,GPS技術從萌發到滲入到生活的各個角落,可以說是技術發展史上的一個奇跡 (1978年才發射了第一顆GPS衛星,GPS技術比計算機都要新)。可以相信,GPS技術會繼續影響我們的生活。

我將在博客中繼續關注和深入介紹GPS技術,歡迎交流!

 

附錄,部分代碼

GPS軌道半徑示意圖:

# By Vamei

import
numpy as np import matplotlib.pyplot as plt r1 = 26.56 # GPS radius r2 = 6.371 # Earth radius theta = np.linspace(0, 360, 361) / 180. * np.pi # angles of plotting points # Polar coordinate to Cartesian coordinate x1 = r1*np.cos(theta) y1 = r1*np.sin(theta) x2 = r2*np.cos(theta) y2 = r2*np.sin(theta) fig = plt.figure() ax = plt.subplot(111) ax.set_aspect("equal") plt.plot(x1, y1, color="red", label="GPS") plt.plot(x2, y2, color="blue", label="Earth") plt.title("Earth and GPS orbit, unit: 1000 km") plt.legend() plt.show()

 

GPS軌道傾角示意圖:

# By Vamei

import
numpy as np import matplotlib.pyplot as plt r1 = 26.56 # GPS radius r2 = 6.371 # Earth radius theta = np.linspace(0, 360, 361) / 180. * np.pi # angles of plotting points # Polar coordinate to Cartesian coordinate end_x = r1*np.cos(55./180.*np.pi) end_y = r1*np.sin(55./180.*np.pi) x1 = [end_x, -end_x] y1 = [end_y, -end_y] x2 = r2*np.cos(theta) y2 = r2*np.sin(theta) fig = plt.figure() ax = plt.subplot(111) ax.set_aspect("equal") plt.plot([]) plt.plot(x1, y1, color="red", label="GPS profile") plt.plot(x2, y2, color="blue", label="Earth") plt.plot([-r2, r2], [0, 0], color="green", label="equator") plt.title("Earth and GPS orbit, unit: 1000 km") plt.legend() plt.show()

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()