I have 4 sensors capturing signal data. Signal distribution speed is constant and known. I have sensors positions in 3d space. Also, I have an amplitude/frequency decomposition for data received by each sensor over time (imagine a 3d terrain). Sensors capture signal from 2 moving sources.


Here on the image: blue dots are the sensors; red solid Capsules are emmiting objects; transparent red capsules are here to show signal wave propagation pattern; yellow cubes show projections from objects onto a plane formed by sensors; green "points" are desired positions on a plane.


  • In real life emitters have pill-shaped form emitting in all directions, yet we can assume that they are points emitting spherical waves.

enter image description here

  • In my particular case, we discuss audio waves via air to microphones (but I hoped for a general solution).
  • We do not know the exact signal being transmitted from any of the emitters, yet we do know that there are only two signal sources with not equal positions in space and noise is filtered and extremely low.
  • We can perform any kinds of transformations on top of received signals and we have exact time-data correlation per each sensor.
  • Sensors form a square with side of length $l$

So how to triangulate sources positions on a 2d plane formed by 4 sensors - what is the algorithm?

  • $\begingroup$ 1. I think this is multilateration, not triangulation. 2. Note that if you want to find position in 3D space, your sensors cannot be coplanar. (That's not what you said you want, though.) 3. What kind of signals are being transmitted and what kind of signals are picked up by sensors? Do you have to cross-correlate them yourself or are delays already easy to identify from the signals? $\endgroup$
    – endolith
    Jun 6, 2017 at 14:56
  • $\begingroup$ @endolith: 2. I just want position on a plane=) 3. Audio waves via air to microphones (with exact timing known); All we have is 4 waves received by 4 microphones, say noise is filtered or extremely low. $\endgroup$
    – Blender
    Jun 6, 2017 at 15:34
  • $\begingroup$ The sources are really pill-shaped and not sending out spherical waves? Do you also have amplitude/attenuation information, or just timing? $\endgroup$
    – endolith
    Jun 6, 2017 at 15:46
  • $\begingroup$ Well in real life they have pill-shaped form emitting in all directions, yet we can assume that they are points emitting spherical waves. Timing + Signal from 4 sensors + knowledge that sounds from both objects are covered inside given signal waves (we can perform any kinds of transformations on that signals) $\endgroup$
    – Blender
    Jun 6, 2017 at 16:46
  • $\begingroup$ do you know the signal that's being transmitted? you should edit all this info into the question, by the way. $\endgroup$
    – endolith
    Jun 6, 2017 at 17:25

1 Answer 1


Conceptual partial answer:

You can use 3 mics to find position in 3D space, except you can't tell if it's above the plane or below the plane (unless you already know there's nothing above the plane, of course).

Since your 4 microphones are in the same plane, the 4th microphone is redundant and doesn't help you know whether the source is above or below the plane. (Though it improves SNR/accuracy of estimate, as would any number of additional mics in the same plane).

There is a delay due to speed of sound from the source ($S$) to each microphone. The delay difference between each pair of microphones gives you a hyperboloid (green cross-section) that the source must be on, in order for the waves to be delayed by that relative amount (due to extra distance $a$). Each pair of mics defines a hyperboloid, so by combining 3 pairs of mics, you can find the intersection of the 3 hyperboloids, which will define a unique set of 2 points. (Symmetrical above and below the plane.)

(4 mics gives you 6 pairs of microphones, so by averaging the intersection point of all 6 hyperboloids you can improve the accuracy of the estimate, but you still don't know if it's above or below the plane. With a tetrahedron of mics you would only have one intersection point. You could probably weight the average, too, since some source positions will be more accurately measured by some pairs of mics, etc.)

Also, the sound pressure drops off as 1/r with distance. The attenuation (amplitude) ratio between each pair of microphones gives you a sphere (yellow cross-section) that the source must be on. By combining this information from every pair of microphones you can find average intersection of all 6 spheres and improve accuracy from that, too.

Diagram of geometry of a source being received by 2 microphones

The spheres and hyperboloids are usually not tangent at the intersection point, so they each improve accuracy in a particular direction:

multiple hyperbolas and circles intersecting

To find the relative delay, you can use cross-correlation of the signal from the 2 mics. There will be a peak at the "lag" at which the two signals line up with each other.

Cross-correlation of two noise-like signals, showing peak at their delay

To find the projection of the source location on the plane itself, just throw away the z coordinate.

See https://en.wikipedia.org/wiki/Multilateration#Solution_algorithms for more details on actual implementation.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.