位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机、掌上电脑等)的标配。随着人们对BLS(Based Location Serices,基于位置的服务)需求的飞速增长,无线定位技术也越来越得到重视。GSM蜂窝基站定位,以其定位速度快、成本低(不需要移动终端上添加额外的硬件)、耗电少、室内可用等优势,作为一种轻量级的定位方法,也越来越常用。本文简单介绍一下各种基于GSM蜂窝基站的定位方法及基本原理,给开发人员作为参考。我将尽量尝试用开发人员熟悉的方式来描述问题。

预备知识:GSM蜂窝网络基础结构

我们知道,GSM网络的基础结构是由一系列的蜂窝基站构成的,这些蜂窝基站把整个通信区域划分成如图所示的一个个蜂窝小区(当然实际上,一个基站往往不并不只是对应一个小区,但是这个与我们讨论的主题关系不大,我们不做深究)。这些小区小则几十米,大则几千米。如下图所示,我们用移动设备在GSM网络中通信,实际上就是通过某一个蜂窝基站接入GSM网络,然后通过GSM网络进行数据(语音数据、文本数据、多媒体数据等)传输的。也就是说我们在GSM中通信时,总是需要和某一个蜂窝基站连接的,或者说是处于某一个蜂窝小区中的。那么GSM定位,就是借助这些蜂窝基站进行定位。

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.七号信令定位

该技术以信令监测为基础,能够对移动通信网中特定的信令过程,如漫游、切换以及与电路相关的信令过程进行过滤和分析,并将监测结果提供给业务中心,以实现对特定用户的个性化服务。该项技术通过对信令进行实时监测,可定位到一个小区,也可定位到地区。故适用对定位精确度要求不高的业务,如漫游用户问候服务,远程设计服务、平安报信和货物跟踪等。目前,国内各省和地区移动公司的短信欢迎系统采用的就是此种技术。

7.TOA/TDOA定位

TOA(Time of Arrival,到达时间)、TDOA(Time Difference of Arrival,到达时间差)都是基于电波传播时间的定位方法。同时也都是三基站定位方法,二者的定位都需要同时有三个位置已知的基站合作才能进行。

如上图所示,TOA/DTOA定位方法都是通过三对[Positioni,Ti](i=1,2,3)来确定设备的位置Location。二者的不同只是GetLocation()函数的具体算法上的不同。

TOA电波到达时间定位基本原理是得到Ti(i=1,2,3)后,由Ti*c得到设备到基站i之间的距离Ri,然后根据几何只是建立方程组并求解,从而求得Location值。如下图所示。

由于图中距离的计算完全依赖于时间,因此TOA算法对系统的时间同步要求很高,任何很小的时间误差都会被放大很多倍,同时由于多径效应的影响又会带来很大的误差,因而单纯的TOA在实际中应用很少。

DTOA电波到达时间差定位是对TOA定位的改进,与TOA的不同之处在于,得到Ti后不是立即用Ti去求距离Ri,而是先对T1,T2,T3两两求差,然后通过一些巧妙的数学算法建立方程组并求解,从而得到Location值。如下图所示。

DTOA由于其中巧妙设计的求差过程会抵消其中很大一部分的时间误差和多径效应带来的误差,因而可以大大提高定位的精确度。

由于DTOA对网络要求相对较低,并且精度较高,因而目前已经成为研究的热点。

4.AOA定位

AOA(Angle of Arrival,到达角度)定位是一种两基站定位方法,基于信号的入射角度进行定位。

如上图所示,知道了基站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设备创建位置感知的应用程序。