声音定位系统之TDOA算法的研究

一:引言

TDOA定位是一种利用时间差进行定位的方法。通过测量信号到达监测站的时间,可以确定信号源的距离。利用信号源到各个监测站的距离(以监测站为中心,距离为半径作圆),就能确定信号的位置。但是绝对时间一般比较难测量,通过比较信号到达各个监测站的时间差,就能作出以监测站为焦点,距离差为长轴的双曲线,双曲线的交点就是信号的位置。

关键是利用时间差来定位因为实际时间往往很难确定下来。

二:分析

声音定位系统之TDOA算法的研究_第1张图片 声音定位系统之TDOA算法的研究_第2张图片

上图中的公式是我百度到的,不过它是个错的公式!不相信的朋友可以自己验证不过我上传这个图片的意义在于他给出了一个比较好的思路

就是利用s2=b-a=(Tb-Ta)*C(声速)  ps: Tb-Ta是时间差如果这个系统你们连时间差都无法得到那就没得研究了(同时使用时间差是由于单纯的直接时间难以得到只能使用这样一个间接时间来计算 不过既然想到使用TDOA算法一般都知道这个原因吧)

              s1=a-d      又sin =(AD*AD-s1*s1+2*a*s1)/(2*a*AD);  cos=(AB*AB-s2*s2-2*a*s2)/(2*a*AB) ;

     sin*sin+cos*cos=1   接下来要做的就是考研你自己的代数水平了a,b,d为未知  AB,AD,s2,s1已知    

  3个未知数3个等式所以上面的方程绝对可以解出就是过程有点艰辛。。。我也是推了好久

  当然这里就不麻烦你们了我直接给出我所使用的结果吧,亲测误差几乎为0

         X=(AB*AB*s1*s1)+(s2*s2*AD*AD)-(AD*AD*AB*AB);
Y=(-AB*AB*s1*s1*s1)+(AB*AB*AD*AD*s1)+(AD*AD*s2*s2*s2)-(AB*AB*AD*AD*s2);
Z=(AB*AB*AD*AD*AD*AD)+(AB*AB*s1*s1*s1*s1)-(2*AD*AD*AB*AB*s1*s1)+(AD*AD*AB*AB*AB*AB)+(AD*AD*s2*s2*s2*s2)-(2*AB*AB*AD*AD*s2*s2);
   a1=sqrt((-Z/X+((Y*Y)/(X*X))))-Y/X;
if(a1>21.8||a1<0)(21.8是我假设长10M  宽8M得出的一个a1最大值  ps:a1=2*a   因为计算过程a1=2a想知道为什么自己可以算一次)
{
a1=-sqrt((-Z/X)+(Y*Y)/(X*X))-Y/X;
}
else 
{
a1=sqrt((-Z/X)+(Y*Y)/(X*X))-Y/X;
}  
a=a1/2;
b=s2+a;  
cs=(AB*AB-s2*s2-2*a*s2)/(2*a*AB);
sn=(AD*AD-s1*s1+2*a*s1)/(2*a*AD);
x=a*cs;
y=a*sn;


你可能感兴趣的:(声音定位系统之TDOA算法的研究)