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