Signal trilatation using difference in arrival time

I'm having problems finding or implementing a signal source search algorithm. The purpose of my work is to find the position of the sound emitter.

I use three microphones for this. The multilateration method used is based on the difference in arrival time .

the difference in arrival time between each microphone is determined using the correlation of the received signals.

I already implemented an algorithm to find the difference in arrival time , but my problem is more related to how multilateration works, this is unclear to me based on my help and I could not find another useful link for this that is free / open.

If you have some links to how I can implement the multilateration algorithm or some other trilateration algorithm that I can use based on the difference in arrival time this will be a big help.

Thanks in advance.

+7
source share
3 answers

The point you are looking for is the intersection of three hyperbolas. I accept 2D here since you only use 3 receptors. Technically, you can find a unique 3D solution, but as you probably have noise, I assume that if you wanted to get a 3D result, you would take 4 microphones (or more).

The wikipedia page does some calculations for you. They do it in 3D, you just need to set z = 0 and solve for the system of equations (7).

The system is overridden, so you want to solve it in the least quadratic sense (this point actually uses 3 receptors).

+3
source

I can help you with multithreading in general.

Basically, if you want a solution in 3d - you should have at least 4 points and 4 distances from them (2 - give you a circle in which there is a solution, because this is the intersection between two spheres, 3 points give you two possible solutions (intersection between 3 spheres) - so in order to have one solution, you need 4 spheres). Thus, when you have several points (4+) and the distance between them (there is an easy way to turn TDOA into a set of equations just to have a length length / not time /), you need a way to solve many equations. First, you need a cost function (or a decision error function, as I call it), which would be something like

err(x,y,z) = sum(i=1..n){sqrt[(x-xi)^2 + (y-yi)^2 + (z-zi)^2] - di} 

where x , y , z are the coordinates of the current point in the numerical solution, and xi , yi , zi and di are the coordinates and the distance to the ith link point. To solve this problem, my advice is NOT to use Newton / Gauss or Newton methods. You will need the first and second derivatives of the above function - and they have a finite termination at some points in space - therefore, this is not a smooth function, and these methods will not work. A direct family of algorithms will work to optimize functions (search for minima and maxima, in our case, the minimum error / cost function).

This should help anyone who wants to find a solution to a similar problem.

+2
source

Have you ever successfully implemented a solution? I have an almost identical application, and I want to confirm that this can be done, and to avoid getting into any pitfalls, since you can be further than me.

0
source

All Articles