基金项目:“国家质检总局科技计划项目(2012QK244)”。
近年来随着无线局域网(WLAN)的兴起,以及支持WIFI接入的移动终端的普及,基于WLAN的各种应用得到迅速发展,基于WLAN的无线定位技术也引起了国内外学者的广泛关注[1]。目前,现有无线定位技术主要基于TOA(Time of Arrival), AOA (Angle of Arrival),RSSI(Received Signal Strength Indicator)和TDOA(Time Difference of Arrival)等定位技术[2-3]。TOA定位时要求基站和移动终端之间有非常精确的同步时钟,这一点实现起来相当困难。AOA方法受限于非视线问题对信号传播的影响,且需要增加额外的硬件设备用于角度测量。
基于RSSI 的方法定位精度不够,受无线电波传播环境的影响非常大。基于TDOA的定位算法,只要求基站间同步,而不要求基站与移动终端间同步。基站位置是固定的,基站间实施同步比移动终端与基站间同步要容易。因此,TDOA定位相比其他方法更具有适用性,应用也相对广泛。由于TDOA 方程组是非线性方程组,通常需要先将其转化为线性方程组后再求解。Y. T. Chan 提出了一种两步最大似然估计算法[4-5] ,该算法在高斯噪声下具有较好的定位估计,但是当误差较大时,特别是存在NLOS 误差时,其定位性能显著下降。泰勒级数展开法具有定位精度高、顽健性强的优点,但是需要迭代运算的初始值必须接近真值,否则就会导致算法不收敛[6]。另外,上述算法都存在参与计算的基站数较少时(3个)定位精度明显下降,而参与计算的基站较多时计算量大的问题。
本文首先介绍时差定位的基本原理,然后取3个基站得出非线性方程组并进行线性化处理,求解方程组;利用移动台到达时间的先后,将计算结果代入原方程组、剔除不符合要求的解。最后编码实现了该算法,并通过实验验证了该算法的定位精度与性能。
1 基于数学模型的TDOA算法
TDOA定位的基本原理。TDOA定位算法又称为双曲线定位,它是定位目标向多个基站发送信号,从第一个接收到信号的基站处开始计时,分别记录下信号到达其余各个基站的时刻,这些时刻便是第一个接收到信号的节点与其余节点信号到达的时间差,根据这些时间差可以列出双曲线方程组。目标位置将位于以两个接收基站为焦点的双曲线的某一分支上,确定目标的二维坐标需要两个或以上双曲线方程,两个双曲线的交点即为定位目标的二维位置坐标。因此TDOA定位最少需要3个基站。在通常情况下,一般两个双曲线会交于两点,但利用一些先验知识可剔除其中不符合要求的一点。其定位原理如***1所示。
***1 TDOA定位原理***
设BS1,BS2,BS3的坐标分别为(X1,Y1), (X2,Y2), (X3,Y3),接收时候分别为t1,t2,t3;
目标位置坐标为(X,Y),c为电波传播速度,则可列方程组如下:
(1)
(2)
基于数学模型的TDOA算法设计。求解以上双曲线方程组就可得到目标终端的估计位置。由于双曲线方程组不是线性方程组,因此,求解它并不容易。目前,己经提出了多种具有不同精度和计算复杂性的TDOA无线定位算法[7,8]。本文将详细介绍一种基于数学模型的TDOA定位算法,并用实验数据来验证算法的性能和精度。其算法的详细设计过程如下:
1)将坐标原点平移至最先收到信号的基站(x1,y1),将(x1,y1),(x2,y2),(x3,y3)转换成相对坐标(0,0),(X1,Y1),(X2,Y2),令d1 = c(t2 - t1),d2 = c(t3 - t1)简化方程组为:
(3)
(4)
2)将(3)式平移、开方化简得:
(5)
将(4)式平移、开方化简得:
(6)
3)令,,(6) - (5)得
(7)
令, 得 X = a bY,代入(3)式化简得
(8)
4)令,,,可得AY2 + BY + C = 0,解方程即可得到目标的相对坐标,将相对坐标转化为绝对坐标即为所求。
根据如上算法所求的目标位置理论上存在无解,有唯一解,有两解三种情况,但实际的目标位置是唯一的。对于无解的情况,从***1的定位原理***来分析,式(1)和式(2)所对应的双曲线必有一个公共焦点,且离心率相同。只要不存在三个基站位于同一直线的情况,二条双曲线必然相交,即双曲线方程组有解。该文原载于中国社会科学院文献信息中心主办的《环球市场信息导报》杂志http://总第539期2014年第07期-----转载须注名来源对于有二解的情况,由于在列方程时,已选定最先到达的基站为相对坐标原点,故d1、d2均应大于等于零,利用这一先验条件可以过滤掉不符合要求的解。
基于数学模型的TDOA算法实现。本文实现的定位系统是通过TDOA方式,借助定位AP、WiFi电子标签和预设的地***与场地模型信息,实现对电子标签的定位功能。系统结构如***2所示,系统由多个无线接入点、一个定位服务器和一个带有WiFi接口的终端组成。当终端发出定位请求时,各AP的时间处理模块记录信号到达时间点并上报服务器。由定位服务器根据算法计算出终端所在的位置。其主要功能包括以下两个方面:
1)在同一系统中实现所有AP的时间同步。利用各AP坐标已知,用专用的WiFi终端在某个已知位置点发送数据;AP接收到定位终端的数据并上报服务器,由服务器根据AP和已知终端的坐标计算相对某固定AP的时间差,即为各AP的同步时间误差。
2)实际定位时,服务器将某个时候各AP发送的接收时候减去该AP对应的同步时间误差,即可求出某时候终端信号到达各AP的时间差,然后根据算法求出坐标。
***2 系统结构***
程序中实现的基于数学模型的TDOA算法,用threePointDoCal()函数来封装,其核心代码如下:
//根据3个AP接收到终端的时间差计算坐标
int threePointDoCal(CParam_TDOA* tagParam, Coordinate& result)
{
//根据时间差计算距离差
dis_2 = calDiffDistance(tempParams[2],tempParams[0]);
dis_1 = calDiffDistance(tempParams[1], tempParams[0]);
//将绝对坐标转换成相对坐标
X2 = calRelativeValue(apInfo[0].m_horiCoor, apInfo[2].m_horiCoor);
X1 = calRelativeValue(apInfo[0].m_horiCoor, apInfo[1].m_horiCoor);
Y2 = calRelativeValue(apInfo[0].m_vertCoor, apInfo[2].m_vertCoor);
Y1 = calRelativeValue(apInfo[0].m_vertCoor, apInfo[1].m_vertCoor);
DIS_2= sqrt(dis_2*dis_2 - H2*H2);
DIS_1= sqrt(dis_1*dis_1 - H1*H1);
if(DIS_2 == DIS_1 && DIS_2!=0){ DIS_2 += 5; }
if(DIS_2 != 0) { c2 = (X2*X2 + Y2*Y2 - DIS_2*DIS_2)/(2*DIS_2); }
if(DIS_1 != 0) { c1 = (X1*X1 + Y1*Y1 - DIS_1*DIS_1)/(2*DIS_1); }
a = (DIS_2*DIS_1*(c2-c1))/(DIS_1*X2-DIS_2*X1);
b = (DIS_1*Y2-DIS_2*Y1)/(DIS_1*X2-DIS_2*X1);
float A = ((b*X2 -Y2)/DIS_2)*((b*X2-Y2)/DIS_2)-b*b -1;
float B = 2*((c2-a*X2/DIS_2)*((b*X2-Y2)/DIS_2)+a*b);
float C = (c2-a*X2/DIS_2)*(c2-a*X2/DIS_2)-a*a;
double deitar = B*B-4*A*C;
if(deitar < 0) { return RETURN_ERROR; }
else if(deitar == 0)
{
Y = (int)(-B/(2*A));
X = (int)(a-b*Y);
s_point1.m_X = (int)calabsoluteValue(apInfo[0].m_horiCoor, X);
s_point1.m_Y = (int)calabsoluteValue(apInfo[0].m_vertCoor, Y);
}
else
{
Y = (int)((-B + sqrt(deitar))/(2*A));
X =(int)(a - b*Y);
s_point1.m_X = (int)calabsoluteValue(apInfo[0].m_horiCoor, X);
s_point1.m_Y = (int)calabsoluteValue(apInfo[0].m_vertCoor, Y);
Y = (int)((-B - sqrt(deitar))/(2*A));
X =(int)(a - b*Y);
s_point2.m_X = calabsoluteValue(apInfo[0].m_horiCoor, X);
s_point2.m_Y = calabsoluteValue(apInfo[0].m_vertCoor, Y);
}
}
2 实验结果与性能分析
为了测试系统性能,获得定位算法的精度,搭建实验环境如***3所示。为了表示测试点位置和实际目标点的真实位置,系统以***的左下角为坐标原点,水平向右为X轴正向,垂直向上为Y轴正向建立直角坐标系,长度以厘米为单位。经测量AP1,AP2,AP3的位置分别为(1329,807),(3386,807),(2370,2663)。
***3 实验场景***
实验过程中一共选取了5个点进行测试,详细数据如表1所示。从实验结果分析,本文设计的算法在实验环境中定位精度在1米之内,在3个AP构成的区域外定位精度相对较低。与传统的RSSI算法[9]和Chan算法等相比,定位精度有明显的提高;且该算法不存在递归运算,也不存在似然估计中大量的矩阵运算,因而计算量小,具有良好的实用性能。
在无线定位技术迅速发展的今天,如何提供高效的、可靠的高精度定位服务成为新的研究热潮。本文从数学模型出发,提出了一种基于TDOA的定位算法,并通过实验来验证该算法具有定位精度高、计算量小且容易实现等优点,在电波环境较好的区域具有良好的实用性。
(作者单位:1.济宁市衡器管理所;2.济宁市山推公司)
转载请注明出处学文网 » 一种基于数学模型的TDOA定位算法