1、基于某TDOA原理计算信号源位置的算法探讨基于TDOA原理计算信号源位置的算法探讨(C语言)省无线电监测中心 唐皓 吴季达 鲁东生摘要 目前,在无线电监测工作中小型监测站以其成本低、体积小、便于维护等众多优势得到广泛应用,已逐渐成为行业趋势。但是,众多小型监测站目前仅具备监测功能,不具备测向功能,给未知信号源的定位带来诸多不便,因此基于TDOA(Time Difference Of Arrival)定位方法的研究便显得尤为重要。本文中主要讨论基于未知信号源到不同监测站的时间差,计算未知信号源位置的方法,并用C语言实现。关键词 TDOA、双曲线、经纬度、时差定位概述TDOA(Time Diffe
2、rence Of Arrival)是通过测量无线电信号到达不同监测地点的天线单元时间差,来对发射无线电信号的发射源进行定位的技术。根据平面解析几何原理,我们知道与平面上两个定点的距离之差的绝对值为定值的点的轨迹是双曲线。在实际中,无线电波在空中以光速在空中传播,当有两个监测站搜到未知无线电信号时(若发射源不在两监测站的中心线上)则信号源一定在以两个监测站为交点的双曲线上,当有三个或三个以上的监测站都能收到该信号时,平面中的双曲线就会有交点,则未知信号源一定在其中的一个交点上。如果我们能找出该交点,并输出该点的经纬度信息,那么就可以确定未知信号源的实际位置。假设在每个小站都能接收GPS时钟,那么
3、每个监测站的时钟将是同步的,再通过每个监测站对每一时隙监测到的时域数据打上时间戳,并将多个打好时间戳的数据返回一台服务器,那么就可以通过相关运算核对波形后找到时间差。用时间差乘与在其环境中实际的光速则得到了未知信号源到达两个监测站的距离差。目前由于各个厂商对各自设备的底层数据及接口大多都不开放,无法得到统一的数据结构并进行相关运算的程序开发。因此,本文假设了以下条件进行讨论:1、假设有三个监测站能收到未知信号源的无线信号;2、假设已通过相关算法得到了较为准确时间差,此时可以计算出未知信号源到达各个监测站的距离差;3、假设地球是正球体;4、假设未知信号源为全向发射;图1如图1示,当确定到达每两个
4、监测站的距离差后就可以画出一对双曲线,同理可以画出3对双曲线,由于三对双曲线中任意两对都有共同的焦点,因此在平面必有交点。一、关键问题分析1、计算地球上任意两点间的距离在直角坐标系中建立方程组并求解,不难求出若干条双曲线的交点,若采用此方法,实际应用中就会遇到经纬度信息与直角坐标的变换,而且整体过程对单位的控制不好把握,相对繁琐。考虑到地球为近似球体,如果直接采用经纬度信息作为方程变量,则输出交点也为经纬度信息,也便于C语言实现,因此使用球坐标系建模计算比较可行。地球是一个近乎标准的椭球体,其赤道半径为6,378.140 km,极半径为6,356.755 km,平均半径6,371.004 km
5、。如果我们假设地球是一个完美的球体,那么其半径就是地球的平均半径,记为R,如图2示。如果以0度经线为基准,那么根据地球表面任意两点的经纬度就可以计算出这两点间的地表距离(这里忽略地球表面地形对计算带来的误差,对于就方圆几十公里围的监测站使用,正球体计算带来的误差极小)。图2设第一点A的经纬度为(LonA, LatA),第二点B的经纬度为(LonB, LatB),按照0度经线的基准,东经取经度的正值(Longitude),西经取经度负值(-Longitude),北纬取90-纬度值(90-Latitude),南纬取90+纬度值(90+Latitude),则经过上述处理过后的两点被计为(MLonA,
6、 MLatA)和(MLonB, MLatB)。那么根据三角推导,可以得到计算两点距离的如下公式: (1) (2)注:S的单位为度,Distance的单位为米,下文中A、B两点的Distance简写为DA-B。2、求解双曲线交点双曲线,即与平面上两个定点距离之差的绝对值为定值的点的轨迹。对未知信号源的定位至少需要3个监测站,如果我们仅考虑3个站的情况,以任意两个监测站为交点可以画出1对双曲线,此时共有3对双曲线。当3对双曲线中的任意3条相交时就是未知信号源可能存在的点。由于6取3的组合有20种可能,且任意1对双曲线不可能与剩余4条中的1条共交一个点,所以3对双曲线其中3条相交于同一点的最大可能为
7、20-43=8个,因此在程序中需要8个数组存放可能存在的8组相互近似的交点。利用程序解方程组时通常是设定一个极小值a,将方程化为F(x,y)=0形式,用点(x1,y1)不停地递增或递减一个步进值step,当代入该点的两个式子之差的绝对值小于极小值a时,便认为存在交点(x1,y1),将其统统存放于一个结果数组。 (3) 由于在程序中使用经纬度做变量进行计算,且以距离“米”为单位控制计算精度,因此在程序中需要有用经纬度来表示距离的对应关系。我们知道在地球赤道附近经度每差1度,实际距离相隔约111 km,即n=111 000,当使用error/n表示步长step时,能使精度随纬度升高而提高。当在每次
8、计算中取极小值a为“error/n/3.3”时,整个计算的精度将控制在误差error以,error值由人为定值。3、合并相似点 根据(3)式步进得到的点可能有很多,本文称这些点为相似点,其共有特征是都能使(3)式成立,为此,需要进一步甄别,依前述可知,3个站点至多可能有8个交点,于是应当根据某种算法把8组相互近似的交点区别清楚。本文根据同组相似点应当相关性较大,反之即为差异性较小,于是令(Xi,Yi)表征结果数组中的元素,i为正整数。依下述公式: (4) 此时,以经纬度两点距离公式(1)、(2)进行计算,当两点间距离小于时,可以默认为该点为同一个点的近似值,单位是米。当(Xi,Yi)中有满足(
9、4)式的点时,将其逐一分组,分别存放在8个数组中,然后根据(5)式对其求均值,以此值作为该组的代表点,最后可得至多8个交点。 (5)二、仿真模型1、常量定义如下:常量名数值单位说明R6 371 004米地球半径(近似球体)n111 000米地球赤道上每一经度对应的距离2、变量定义如下:常量名数值单位说明error100米计算的误差精度,人工输入d20公里扫描区域边界拓展宽度,人工输入steperror/n/3.3度定义了变量x、y的增量x_n待计算度存放可能存在的交点的纬度y_n待计算度存放可能存在的交点的经度3、题设a地球是球形的,采用球坐标系建模,认为在方圆20公里近地面是平面;b三个监测
10、站的经纬度分别为:A(x1,y1),B(x2,y2),C(x3,y3); cr1、r2、r3为真假判决值,取1时表示条件成立;ds1_2、s1_3、s2_3分别为未知信号源任意两站点间的距离差,使用式(1)、(2)进行计算;f未知信源记为点O,未知信号源的纬度为x,经度为y;gO点信号到达A点与B点的时间差为TD1,距离差为SD1,O点信号到达B点与C点的时间差为TD2,距离差为SD2,O点信号到达A点与C点的时间差为TD3,距离差为SD3;h. a= error/3,b=2*error;三、算法设计1、计算地球上任意两条双曲线的交点在程序中如用变量“x”表示纬度,用“y”表示经度,“S”表示
11、距离,则两点的距离差可以表示为(其中/1801/57.2958),依式(1)有:S=fabs(R*acos(sin(x2/57.2958)*sin(x1/57.2958)+cos(x2/57.2958)*cos(x1/57.2958)*cos(y2-y1)/57.2958).求双曲线交点本文采用穷举法,以step为步进值,遍历可行域,该域在三站点经纬度的最值之左右上下各拓展d的矩形区域,在此域寻找符合判决条件的点,然后将这些点存于结果数组。为保证下次判决有效,每次判决结束后都要对r值清零。流程图如下:计算双曲线交点的程序段:if(fabs(fabs(R*acos(sin(x/57.2958)*
12、sin(x1/57.2958)+cos(x/57.2958)*cos(x1/57.2958)*cos(y-y1)/57.2958)-fabs(R*acos(sin(x/57.2958)*sin(x2/57.2958)+cos(x/57.2958)*cos(x2/57.2958)*cos(y-y2)/57.2958)-s1_2)(error/3) r1=1;if(fabs(fabs(R*acos(sin(x/57.2958)*sin(x1/57.2958)+cos(x/57.2958)*cos(x1/57.2958)*cos(y-y1)/57.2958)-fabs(R*acos(sin(x/57
13、.2958)*sin(x3/57.2958)+cos(x/57.2958)*cos(x3/57.2958)*cos(y-y3)/57.2958)-s1_3)(error/3) r2=1;if(fabs(fabs(R*acos(sin(x/57.2958)*sin(x2/57.2958)+cos(x/57.2958)*cos(x2/57.2958)*cos(y-y2)/57.2958)-fabs(R*acos(sin(x/57.2958)*sin(x3/57.2958)+cos(x/57.2958)*cos(x3/57.2958)*cos(y-y3)/57.2958)-s2_3)=0&fabs(
14、R*acos(sin(x_ii/57.2958)*sin(x_ii-1/57.2958) + cos(x_ii/57.2958)*cos(x_ii-1/57.2958)*cos(y_ii-y_ii-1)/57.2958)=0) /若第一组元素取完后,x_i,y_i数组中仍有元素,继续执行以下代码 x_1i1=x_ii; y_1i1=y_ii; i-; i1+=1; 对数组中的元素求平均值,程序段如下:double average(double array,int m)/求数组平均值 int k; double aver; double sum; sum=array0; if(m0) for(k
15、=1;km;k+) sum=sum+arrayk; aver=sum/m; else aver=0; return(aver);四、验证仿真结果选取地区的三个固定监测站1、省监测中心站(24.9889 102.6570)2、五华山监测站(25.049358 102.706879)3、机场监测站 (25.012774 102.74032)设未知信号源位置为(24.979197 102.714763)三个固定监测站点及“未知信号源”实际位置图3示:图3利用google earth测距功能测出信号源与监测站的距离分别为:s1=5933m; s2=7838m; s3=4532m; s1_2=1905m
16、;s1_3=1401ms2_3=3306m 将以上变量输入程序,取error为100米,扫描半径为20公里,运行程序,输出见图4:图4从输出可知,在方圆约20公里的围,共存在两个三线相交点,分别为:计算信号源位置1(24.979363 102.714758)计算信号源位置2(25.033645 102.677175)在实际操作中可以根据监测到最大值的监测站应靠近发射源(假设发射源为全向发射)的原则来甄别计算点中的真实点。在本例中假设已经通过以上原则判定计算真值为“计算信号源位置1(24.979363 102.714758)”,如图5示:图5图6 放大图图6如上可知,计算误差为19.87米五、结
17、论本文叙述了一种TDOA定位算法,算法以可调的穷举方式侦测可行域的点,巧妙地避开了经纬度坐标与直角坐标系的映射问题,转而使用经纬度坐标系下的两点间的距离,便于整体算法在数据单位上的统一。经验证可以看出,该算法的误差围是极小的,准确率较高,由于采用了C语言编写,具有较强的移植性。但是该算法同样存在许多不足:1、条件是在理想的环境下进行的考虑,在其中忽略了地球的椭球特性,给计算带来误差(虽然在小围计算时误差极小),当三个监测站能提供精确地时间差或对未知信号源的位置精度有很高要求时,后期可能需要考虑使用椭球坐标进行建模分析;2、假设了未知信号源为全向发射为条件才能依据监测站的电平值高低判定真值,在实
18、际应用中可能存在定向信号源或在信号源周围存在近距离遮挡的情况,这时给多交点的真值判定带来困难,但如果有测向站能收到未知信号,则可以结合进行真值判定;3、本算法采用的在给定围的穷举算法,效率不高,当手动输入的精度较高或扫描的面积较大时程序运行时间较长,后期将利用二分法或更优的方法来优化;4、目前,由于国各厂家生产的设备接口不一,数据结构难于统一,要做到多台设备协调定位不太容易;其次,即便是同一个厂家生产的同一类设备,也未必都能做到时钟同步,而采样的时间差通常是纳秒级别的,这样极有可能造成时间差的误判或造成精度问题。对于这一问题的解决仍需要广行们的共同努力。参考文献1.TDOA基本原理及应用景春;2.C语言程序设计(第二版)谭浩强 主编清华大学;3.C语言程序设计教程毅坤,曹锰,亚玲等编交通大学;4.到达时间差(TDOA)侧向定位研究朱庆厚,中国电子科技集团第五十四研究所,电现技术第47卷第1期,2007年2月;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1