GPS定位,實際上就是通過四顆已知位置的衛(wèi)星來確定GPS接收器的位置。
GPS接收器為當(dāng)前要確定位置的設(shè)備,衛(wèi)星1、2、3、4為本次定位要用到的四顆衛(wèi)星:
Position1、Position2、Position3、Position4分別為四顆衛(wèi)星的當(dāng)前位置(空間坐標(biāo)),已知
d1、d2、d3、d4分別為四顆衛(wèi)星到要定位的GPS接收器的距離,已知
Location 為要定位的衛(wèi)星接收器的位置,待求
那么定位的過程,簡單來講就是通過一個函數(shù)GetLocation(),從已知的[Position1,d1]、[Position2,d2]、[Position3,d3]、[Position4,d4]四對數(shù)據(jù)中求出Location的值。用程序員熟悉的函數(shù)調(diào)用來表示就是:
Location=GetLocation([Position1,d1],[Position2,d2],[Position3,d3],[Position4,d4]);
一看到這個函數(shù)調(diào)用,程序員們就該來勁了:這些參數(shù)從哪里來?這個函數(shù)又是如何執(zhí)行?由誰來執(zhí)行的呢?立體幾何還沒有忘干凈的可能還要問:為什么必須要4對參數(shù)呢?那下面我們就來一起探究一下。
1.Position1、Position2、Position3、Position4這些位置信息從哪里來?
實際上,運行于宇宙空間的GPS衛(wèi)星,每一個都在時刻不停地通過衛(wèi)星信號向全世界廣播自己的當(dāng)前位置坐標(biāo)信息。任何一個GPS接收器都可以通過天線很輕松地接收到這些信息,并且能夠讀懂這些信息(這其實也是每一個GPS芯片的核心功能之一)。這就是這些位置信息的來源。
2.d1、d2、d3、d4這些距離信息從哪里來?
我們已經(jīng)知道每一個GPS衛(wèi)星都在不辭辛勞地廣播自己的位置,那么在發(fā)送位置信息的同時,也會附加上該數(shù)據(jù)包發(fā)出時的時間戳。GPS接收器收到數(shù)據(jù)包后,用當(dāng)前時間(當(dāng)前時間當(dāng)然只能由GPS接收器自己來確定了)減去時間戳上的時間,就是數(shù)據(jù)包在空中傳輸所用的時間了。
知道了數(shù)據(jù)包在空中的傳輸時間,那么乘上他的傳輸速度,就是數(shù)據(jù)包在空中傳輸?shù)木嚯x,也就是該衛(wèi)星到GPS接收器的距離了。數(shù)據(jù)包是通過無線電波傳送的,那么理想速度就是光速c,把傳播時間記為Ti的話,用公式表示就是:
di=c*Ti(i=1,2,3,4);
這就是di(i=1,2,3,4)的來源了。
3.GetLocation()函數(shù)是如何執(zhí)行的?
這個函數(shù)是我為了說明問題而虛構(gòu)的,事實上未必存在,但是一定存在這樣類似的運算邏輯。這些運算邏輯可以由軟件來實現(xiàn),但是事實上可能大都是由硬件芯片來完成的(這可能也是每一個GPS芯片的核心功能之一)。
4.為什么要必須要四對參數(shù)?
根據(jù)立體幾何知識,三維空間中,三對[Positioni,di]這樣的數(shù)據(jù)就可以確定一個點了(實際上可能是兩個,但我們可以通過邏輯判斷舍去一個),為什么這里需要四對呢?理想情況下,的確三對就夠了,也就是說理想情況下只需要三顆衛(wèi)星就可以實現(xiàn)GPS定位。但是事實上,必須要四顆。
因為根據(jù)上面的公式,di是通過c*Ti計算出來的,而我們知道c值是很大的(理想速度即光速),那么對于時間Ti而言,一個極小的誤差都會被放大很多倍從而導(dǎo)致整個結(jié)果無效。也就是說,在GPS定位中,對時間的精度要求是極高的。GPS衛(wèi)星上是用銫原子鐘來計時的,但是我們不可能為每一個GPS接收器也配一個銫原子鐘,因為一個銫原子鐘的價格可能已經(jīng)超過了這個GPS設(shè)備再加上使用GPS的這輛名貴汽車的價格。
同時,由于速度c也會受到空中電離層的影響,因此也會有誤差;再者,GPS衛(wèi)星廣播的自己的位置也可能會有誤差。其他等等一些因素也會影響數(shù)據(jù)的精確度。
總之,數(shù)據(jù)是存在誤差的。這些誤差可能導(dǎo)致定位精確度降低,也可能直接導(dǎo)致定位無效。GetLocation(函數(shù))中多用了一組數(shù)據(jù),正是為了來校正誤差。至于具體的細(xì)節(jié),我們就不用關(guān)心了,我們只要知道,多用一組數(shù)據(jù),就可以通過一些巧妙的算法,消除或減小誤差,保證定位有效。這就是GetLocation()函數(shù)必須用四組數(shù)據(jù)的原因,也就是為什么必須有四顆衛(wèi)星才能定位的原因。
5.GetLocation()函數(shù)返回的位置信息怎樣被GPS設(shè)備識別呢?
前面說在進行位置計算時都是用的空間坐標(biāo)形式表示,但是對GPS設(shè)備及應(yīng)用程序而言,通常需要用的是一個[經(jīng)度,緯度,高度]這樣的位置信息。那么我們可以想象,在GetLocation()函數(shù)返回位置結(jié)果前,可能會進行一個從空間坐標(biāo)形式到經(jīng)緯度形式的轉(zhuǎn)換,我們不妨假設(shè)存在一個Convert(經(jīng)緯度,空間坐標(biāo))這樣的函數(shù)來進行這個轉(zhuǎn)換。
6.單點定位與差分定位
實際上上面所說的只是定位原理中的其中一種,稱為單點定位,或絕對定位。就是通過唯一的一個GPS接收器來確定位置。
目前定位精度最高的是差分定位,或稱相對定位。就是通過增加一個參考GPS接收器來提高定位精度。
轉(zhuǎn)自:互聯(lián)網(wǎng)