1. 程式人生 > >好好說一說室內定位技術

好好說一說室內定位技術

預備知識:GSM蜂窩網路基礎結構

我們知道,GSM網路的基礎結構是由一系列的蜂窩基站構成的,這些蜂窩基站把整個通訊區域劃分成如圖所示的一個個蜂窩小區(當然實際上,一個基站往 往不併不只是對應一個小區,但是這個與我們討論的主題關係不大,我們不做深究)。這些小區小則幾十米,大則幾千米。如下圖所示,我們用移動裝置在GSM網 絡中通訊,實際上就是通過某一個蜂窩基站接入GSM網路,然後通過GSM網路進行資料(語音資料、文字資料、多媒體資料等)傳輸的。也就是說我們在GSM 中通訊時,總是需要和某一個蜂窩基站連線的,或者說是處於某一個蜂窩小區中的。那麼GSM定位,就是藉助這些蜂窩基站進行定位。

2009698297_thumb1

1).COO(Cell of Origin)定位

COO定位是一種單基站定位,即根據裝置當前連線的蜂窩基站的位置來確定裝置的位置。那麼很顯然,定位的精度就取決於蜂窩小區的半徑。在基站密集的 城市中心地區,通常會採用多層小區,小區劃分的很小,這時定位精度可以達到50M以內;而在其他地區,可能基站分佈相對分散,小區半徑較大,可能達到幾千 米,也就意味著定位精度只能粗略到幾千米。目前Google地圖移動版中,通過蜂窩基站確定“我的位置”,基本上用的就是這種方法。

從原理上我們可以看出,COO定位其精度是不太確定的。但是這卻是GSM網路中的移動裝置最快捷、最方便的定位方法,因為GSM網路端以及裝置端都 不需要任何的額外硬體投入。只要運營商支援,GSM網路中的裝置都可以以程式設計方式獲取到當前基站的一個唯一程式碼,我們可以稱之為基站ID,或 CellID。在一般的裝置中,可能都存在一個類似如下的GetCurrentCellID()方法的介面來提供當前GSM蜂窩基站ID:

CellID = GetCurrentCellID();

通過這個介面獲取到CellID後,我們還需要根據這個CellID查出該蜂窩基站所在的具體地理座標。這時,我們可能就需要呼叫一些包含 [CellID,地理座標]對應關係的外部資料以確定相應的地理座標。這個外部資料,通常可以由一些第三方Web服務來提供。這些Web服務的介面可能類 似於如下形式:

Position=GetPosition(CellID);

當然,再次說明,上面的GetCurrentCellID方法、GetPosition方法都是我虛構的,只是為了說明邏輯關係,並不一定實際存在。關於COO方法在Windows Mobile環境下的具體程式設計方法,請參考《

為Windows Mobile裝置建立位置感知的應用程式》。

2).七號信令定位

該技術以信令監測為基礎,能夠對行動通訊網中特定的信令過程,如漫遊、切換以及與電路相關的信令過程進行過濾和分析,並將監測結果提供給業務中心, 以實現對特定使用者的個性化服務。該項技術通過對信令進行實時監測,可定位到一個小區,也可定位到地區。故適用對定位精確度要求不高的業務,如漫遊使用者問候 服務,遠端設計服務、平安報信和貨物跟蹤等。目前,國內各省和地區移動公司的簡訊歡迎系統採用的就是此種技術。

3).TOA/TDOA定位

TOA(Time of Arrival,到達時間)、TDOA(Time Difference of Arrival,到達時間差)都是基於電波傳播時間的定位方法。同時也都是三基站定位方法,二者的定位都需要同時有三個位置已知的基站合作才能進行。

TOA_DTOA_thumb6

如上圖所示,TOA/DTOA定位方法都是通過三對[Positioni,Ti](i=1,2,3)來確定裝置的位置Location。二者的不同只是GetLocation()函式的具體演算法上的不同。

TOA電波到達時間定位基本原理是得到Ti(i=1,2,3)後,由Ti*c得到裝置到基站i之間的距離Ri,然後根據幾何只是建立方程組並求解,從而求得Location值。如下圖所示。

TOA_thumb1

由於圖中距離的計算完全依賴於時間,因此TOA演算法對系統的時間同步要求很高,任何很小的時間誤差都會被放大很多倍,同時由於多徑效應的影響又會帶來很大的誤差,因而單純的TOA在實際中應用很少。

DTOA電波到達時間差定位是對TOA定位的改進,與TOA的不同之處在於,得到Ti後不是立即用Ti去求距離Ri,而是先對T1,T2,T3兩兩求差,然後通過一些巧妙的數學演算法建立方程組並求解,從而得到Location值。如下圖所示。

DTOA_thumb

DTOA由於其中巧妙設計的求差過程會抵消其中很大一部分的時間誤差和多徑效應帶來的誤差,因而可以大大提高定位的精確度。

由於DTOA對網路要求相對較低,並且精度較高,因而目前已經成為研究的熱點。

4).AOA定位

AOA(Angle of Arrival,到達角度)定位是一種兩基站定位方法,基於訊號的入射角度進行定位。

AOA_thumb

如上圖所示,知道了基站1到裝置之間連線與基準方向的夾角α1,就可以畫出一條射線L1;同樣知道了知道了基站2到裝置之間連線與基準方向的夾角α2,就可以畫出一條射線L2。那麼L1月L2的交點就是裝置的位置。這就是AOA定位的基本數學原理。用函式呼叫表達如下。

Location=GetLocation([Pisition1,α1],[Position2,α2]);

AOA定位通過兩直線相交確定位置,不可能有多個交點,避免了定位的模糊性。但是為了測量電磁波的入射角度,接收機必須配備方向性強的天線陣列。

5).基於場強的定位

該方法是通過測出接收到的訊號場強和已知的通道衰落模型及發射訊號的場強值估計收發信短的距離,根據多個三個距離值就可以得到裝置的位置。從數學模型上看,和TOA演算法類似,只是獲取距離的方式不同。場強演算法雖然簡單,但是由於多徑效應的影響,定位精度較差。

6).混合定位

混合定位就是同時使用兩種以上的定位方法來進行定位。通過各種定位方法之間結合使用,互補短長,以達到更高的定位精度。

A-GPS定位(輔助GPS定位)就是一種混合定位,是GPS定位技術與GSM網路的結合。A-GPS具有很高的定位精度,目前正被越來越廣泛的使用。

GPS定位作為一種傳統的定位方法,仍是目前應用最廣泛、定位精度最高的定位技術。但是相對而言,GPS定位成本高(需要終端配備GPS硬體)、定 位慢(GPS硬體初始化通常需要3~5分鐘甚至10分鐘以上的時間)、耗電多(需要額外硬體自然耗電多),因此在一些定位精度要求不高,但是定位速度要求 較高的場景下,並不是特別適合;同時因為GPS衛星訊號穿透能力弱,因此在室內無法使用(關於GPS的定位原理可參考GPS定位基本原理淺析)。相比之下,GSM蜂窩基站定位快速、省電、低成本、應用範圍限制小,因此在一些精度要求不高的輕型場景下,也大有用武之地。關於在Windows Mobile環境下GPS定位和GSM蜂窩基站定位的相關開發技術,可參考為Windows Mobile裝置建立位置感知的應用程式