<p>Not an expert, but the general rule of thumb is the minimum number of sensors for positioning is N dimensions +1. For 2d you need at least 3 mics and for 3d you need at least 4 mics (see review here [1]). This is the 'minimum sensor' case. With Ndimensions + 2 you can uniquely identify sources (as pointed out by @WMXZ below).</p>
<p>About the 3d tracking with 3 mics, I doubt if this study actually produced 3d positions using solely the TDOA of the array. It is possible to place 3 mics in an L shaped array, and thus get azimuth and elevation headings. Perhaps with additional information or constraints it is possible to get 3d coordinates (received levels, echoes from reflections etc).</p>
<p>Don't know which 3-channel 3D position study you're referring to, bu not all studies need 3D locations. In this whale tracking study [2], a 3-channel array was used to track whales that have been sighted in the direction of observation (there are two possible solutions for the 3 sensor case, here the 'front' solution is always chosen).</p>
<h4>Refs</h4>
<p>[1] Li, X., Deng, Z. D., Rauchenstein, L. T., &amp; Carlson, T. J. (2016). Contributed Review: Source-localization algorithms and applications using time of arrival and time difference of arrival measurements. Review of Scientific Instruments, 87(4), 041502.</p>
<p>[2] Clark, C., Ellison, W., &amp; Beeman, K. (1986, September). Acoustic tracking of migrating bowhead whales. In OCEANS'86 (pp. 341-346). IEEE.</p>

CC BY-SA 4.0
2022-06-27T17:52:23.630Z
This answer could be improved with some links to online tutorial/summary information, and/or literature citations. It seems to me there should be a good textbook to recommend!
Dan Stowell
CC BY-SA 4.0
2022-06-27T21:09:55.217Z
Valid point. Added now - hope it clears things up.
Thejasvi
CC BY-SA 4.0
2022-06-27T15:41:21.367Z
2022-06-27T22:34:59.830Z
2022-06-27T22:34:59.830Z
Thejasvi
<p>having 3 unknowns (x,y,z) you need at least 3 equations, that is, 4 sensors that give you 3 time delays.</p>
<p>However, these 3 equations are non linear and not always unique as they include a square-root.</p>
<p>To obtain a unique solution you need 5 sensors that result to 4 linear equations in x,y,z, and distance to acoustic reference. It is clear that the 4 parameters are not independent and may be used to cross-validate the solution.</p>
<p>References</p>
<p>ZIMMER W., (2011) Passive Acoustic Monitoring of Cetaceans, Cambridge University Press, pages 198 ff</p>
<p>SPENCER, Steven J. Closed-form analytical solutions of the time difference of arrival source location problem for minimal element monitoring arrays. The Journal of the Acoustical Society of America, 2010, 127. Jg., Nr. 5, S. 2943-2954.</p>

CC BY-SA 4.0
2022-06-27T17:15:48.617Z
Added as comment: 4 sensors (tetrahedral configuration) are typically used for direction finding.
WMXZ
CC BY-SA 4.0
2022-06-27T17:52:28.133Z
This answer could be improved with some links to online tutorial/summary information, and/or literature citations. It seems to me there should be a good textbook to recommend!
Dan Stowell
CC BY-SA 4.0
2022-06-27T18:33:01.317Z
I prefer to refer to answer for https://bioacoustics.stackexchange.com/questions/72/real-time-3d-tracking-of-flying-insects-using-a-microphone-array
WMXZ
CC BY-SA 4.0
2022-06-27T21:59:59.430Z
You don't necessarily need five (or four) sensors.  You can often get by with fewer sensors if you can make assumptions such as "the sound isn't coming from underground".
Mark
CC BY-SA 4.0
2022-06-28T04:44:51.487Z
@Mark Strictly speaking, additional information and assumptions can replace physical sensors.  In other words, assumptions can also be replaced by additional sensors.
WMXZ
CC BY-SA 4.0
2022-06-28T04:45:45.313Z
edited my answer do give two references
WMXZ
CC BY-SA 4.0
2022-06-27T17:10:36.767Z
2022-06-28T04:38:44.507Z
2022-06-28T04:38:44.507Z
WMXZ
<p>Magnus Wahlbergs paper on that topic may be helpful:
<a href="https://marinebioacoustics.files.wordpress.com/2018/04/wahlberg_et_al_2001.pdf" rel="nofollow noreferrer">https://marinebioacoustics.files.wordpress.com/2018/04/wahlberg_et_al_2001.pdf</a></p>

CC BY-SA 4.0
2022-09-26T14:43:23.983Z
It would be extremely beneficial to at least add some brief explanation of the "solution" proposed in the link. This way, your answer will serve both as a starting point for someone and a future reference for people.
ZaellixA
CC BY-SA 4.0
2022-07-05T11:01:55.377Z
2022-07-05T11:01:55.377Z
Marinebioacoustics Aarhus Univ
<p>The answer is actually five since it's impossible to resolve the three spatial dimensions without also deriving the time of the call (relative to it's arrival on one of the 'phones), so you have 3+1 'dimensions' and therefore need 4 independent time measurements from 5 'phones to get these. This is explained in Spiesberger 2001. Often, 4 will suffice, depending on where the source is, but in some locations, there can be ambiguous solutions.</p>
<p>Of course, there are plenty of practical considerations too and you may need many more 'phones to accurately localise over a large volume.</p>
<p>Reference</p>
<p>Spiesberger, J. L. (2001). “Hyperbolic location errors due to insufficient numbers of receivers,” The Journal of the Acoustical Society of America, 109, 3076–3079</p>
<p>Code</p>
<p>The Matlab (should work in Octave) code below is a 2D simulation of localisation with n hydrophones. Launch it and click on it with the mouse. It will calculate time delays and then calculate hyperbole from the time delays. In most locations, you're OK and only get one solution, but 'behind' or close to the 'phones you start to get multiple solutions. Run with 4 'phones and you always get a unique solution.</p>
<pre><code>function hyperbolicsim(userphones)
% function to calculate hyperbolic localisation lines for a moving point
% for an arbitrary array of hydrophones. 
% phones should be an n row by 2 (x,y) column vector. 
global phones centre range
if nargin &lt; 1
    userphones = [-50, 0;
        50, 0;
        0, 50/sind(30)];
%     userphones = [-50 -50;
%         -50 50;
%         50 -50;
%         50 50];
end
phones = userphones;
centre = mean(phones)
nPhone = size(phones,1);
range = 0;
for i = 1:nPhone
    for j = (i+1):nPhone
        d = norm(phones(i,:)-phones(j,:))
        range = max(range, d);
    end
end
range = range * 1.5;

remakePlot(mean(phones).*rand(1,2));
f = figure(1)
set(f,'WindowButtonDownFcn',@onMouse)

function onMouse(hObject,~)
axes_handle = gca;
pt = get(axes_handle, 'CurrentPoint');
pt = pt(1,1:2);
remakePlot(pt)

function remakePlot(pt)
global phones centre range
figure(1)
clf
plot(phones(:,1), phones(:,2), 'ob')
hold on
plot(pt(1), pt(2), '*r', 'markersize', 12)
% now draw the hyperbolic curves
nPhone = size(phones,1);
for i = 1:nPhone
    for j = (i+1):nPhone
        drawHyperloid(phones(i,:), phones(j,:), pt);
    end
end


xlim = centre(1) + [-1 1]*range;
ylim = centre(2) + [-1 1]*range;
set(gca, 'xlim', xlim)
set(gca, 'ylim', ylim);
axis square

function drawHyperloid(phone1, phone2, pt) 
% draw locus of point passing through pt. 
global phones centre range
phoneCent = (phone1 + phone2)/2;
% also need to work out a rotation matrix to draw curves for arbitrary
% points
ang = atan2(phone2(2)-phone1(2),phone2(1)-phone1(1));
rot = [cos(ang) -sin(ang); sin(ang) cos(ang)];
invrot = inv(rot);

phoneSep = norm(phone1-phone2);
pt0 = pt - phoneCent;
pt0 = invrot*pt0';
scale = phoneSep/2;
r1 = norm(pt-phone1);
r2 = norm(pt-phone2);
k = (abs(r2-r1)/(phoneSep))^2;
x = -5:.001:5;
k2 = sqrt(1-k);
y = sqrt((x.^2)/k-1)*k2;
isR = imag(y)==0 ;
if (r1&gt;r2)
    isR = isR &amp; x &gt; 0;
else
    isR = isR &amp; x &gt;0;
    x = fliplr(x);
    y = fliplr(y);
end
x = x(isR);
y = y(isR);
x = [fliplr(x) x];
y = [fliplr(y) -y];
locii = [x;y];
locii = rot*locii;
x = locii(1,:);
y = locii(2,:);

x = x*scale + phoneCent(1);
y = y * scale + phoneCent(2);
plot(x,y, 'linewidth', 1.5);


grid on

legend({'Hydrophones', 'True location'})
</code></pre>

CC BY-SA 4.0
2022-06-29T07:14:19.497Z
2022-06-29T07:14:19.497Z
Doug Gillespie
<p>I've heard from colleagues that you need at least 4 mics to get 3d coordinates from time-difference-of-arrival (TDOA) tracking.</p>
<p>Then again, I also remember reading papers which use 3 microphones to track animals. Can someone please clarify the minimum number of sensors required for 3d tracking?</p>

<localisation><time-difference-of-arrival><tracking><array>
what are the minimum number of micro/hydro-phones needed to perform 3d tracking?
# what are the minimum number of micro/hydro-phones needed to perform 3d tracking?

(Asked by: username_0 on 2022-06-27)

I've heard from colleagues that you need at least 4 mics to get 3d coordinates from time-difference-of-arrival (TDOA) tracking.

Then again, I also remember reading papers which use 3 microphones to track animals. Can someone please clarify the minimum number of sensors required for 3d tracking?

**Tags:** localisation, time-difference-of-arrival, tracking, array


---

## 4 answers

### Answer by username_6 on 2022-06-29. Score: 8 | Accepted answer

The answer is actually five since it's impossible to resolve the three spatial dimensions without also deriving the time of the call (relative to it's arrival on one of the 'phones), so you have 3+1 'dimensions' and therefore need 4 independent time measurements from 5 'phones to get these. This is explained in Spiesberger 2001. Often, 4 will suffice, depending on where the source is, but in some locations, there can be ambiguous solutions.

Of course, there are plenty of practical considerations too and you may need many more 'phones to accurately localise over a large volume.

Reference

Spiesberger, J. L. (2001). “Hyperbolic location errors due to insufficient numbers of receivers,” The Journal of the Acoustical Society of America, 109, 3076–3079

Code

The Matlab (should work in Octave) code below is a 2D simulation of localisation with n hydrophones. Launch it and click on it with the mouse. It will calculate time delays and then calculate hyperbole from the time delays. In most locations, you're OK and only get one solution, but 'behind' or close to the 'phones you start to get multiple solutions. Run with 4 'phones and you always get a unique solution.

```
function hyperbolicsim(userphones)
% function to calculate hyperbolic localisation lines for a moving point
% for an arbitrary array of hydrophones. 
% phones should be an n row by 2 (x,y) column vector. 
global phones centre range
if nargin < 1
    userphones = [-50, 0;
        50, 0;
        0, 50/sind(30)];
%     userphones = [-50 -50;
%         -50 50;
%         50 -50;
%         50 50];
end
phones = userphones;
centre = mean(phones)
nPhone = size(phones,1);
range = 0;
for i = 1:nPhone
    for j = (i+1):nPhone
        d = norm(phones(i,:)-phones(j,:))
        range = max(range, d);
    end
end
range = range * 1.5;

remakePlot(mean(phones).*rand(1,2));
f = figure(1)
set(f,'WindowButtonDownFcn',@onMouse)

function onMouse(hObject,~)
axes_handle = gca;
pt = get(axes_handle, 'CurrentPoint');
pt = pt(1,1:2);
remakePlot(pt)

function remakePlot(pt)
global phones centre range
figure(1)
clf
plot(phones(:,1), phones(:,2), 'ob')
hold on
plot(pt(1), pt(2), '*r', 'markersize', 12)
% now draw the hyperbolic curves
nPhone = size(phones,1);
for i = 1:nPhone
    for j = (i+1):nPhone
        drawHyperloid(phones(i,:), phones(j,:), pt);
    end
end

xlim = centre(1) + [-1 1]*range;
ylim = centre(2) + [-1 1]*range;
set(gca, 'xlim', xlim)
set(gca, 'ylim', ylim);
axis square

function drawHyperloid(phone1, phone2, pt) 
% draw locus of point passing through pt. 
global phones centre range
phoneCent = (phone1 + phone2)/2;
% also need to work out a rotation matrix to draw curves for arbitrary
% points
ang = atan2(phone2(2)-phone1(2),phone2(1)-phone1(1));
rot = [cos(ang) -sin(ang); sin(ang) cos(ang)];
invrot = inv(rot);

phoneSep = norm(phone1-phone2);
pt0 = pt - phoneCent;
pt0 = invrot*pt0';
scale = phoneSep/2;
r1 = norm(pt-phone1);
r2 = norm(pt-phone2);
k = (abs(r2-r1)/(phoneSep))^2;
x = -5:.001:5;
k2 = sqrt(1-k);
y = sqrt((x.^2)/k-1)*k2;
isR = imag(y)==0 ;
if (r1>r2)
    isR = isR & x > 0;
else
    isR = isR & x >0;
    x = fliplr(x);
    y = fliplr(y);
end
x = x(isR);
y = y(isR);
x = [fliplr(x) x];
y = [fliplr(y) -y];
locii = [x;y];
locii = rot*locii;
x = locii(1,:);
y = locii(2,:);

x = x*scale + phoneCent(1);
y = y * scale + phoneCent(2);
plot(x,y, 'linewidth', 1.5);

grid on

legend({'Hydrophones', 'True location'})

```


---

### Answer by username_0 on 2022-06-27. Score: 5

Not an expert, but the general rule of thumb is the minimum number of sensors for positioning is N dimensions +1. For 2d you need at least 3 mics and for 3d you need at least 4 mics (see review here [1]). This is the 'minimum sensor' case. With Ndimensions + 2 you can uniquely identify sources (as pointed out by @username_2 below).

About the 3d tracking with 3 mics, I doubt if this study actually produced 3d positions using solely the TDOA of the array. It is possible to place 3 mics in an L shaped array, and thus get azimuth and elevation headings. Perhaps with additional information or constraints it is possible to get 3d coordinates (received levels, echoes from reflections etc).

Don't know which 3-channel 3D position study you're referring to, bu not all studies need 3D locations. In this whale tracking study [2], a 3-channel array was used to track whales that have been sighted in the direction of observation (there are two possible solutions for the 3 sensor case, here the 'front' solution is always chosen).

#### Refs

[1] Li, X., Deng, Z. D., Rauchenstein, L. T., & Carlson, T. J. (2016). Contributed Review: Source-localization algorithms and applications using time of arrival and time difference of arrival measurements. Review of Scientific Instruments, 87(4), 041502.

[2] Clark, C., Ellison, W., & Beeman, K. (1986, September). Acoustic tracking of migrating bowhead whales. In OCEANS'86 (pp. 341-346). IEEE.

> **Comments:**
> **username_1**: This answer could be improved with some links to online tutorial/summary information, and/or literature citations. It seems to me there should be a good textbook to recommend!  
> **username_0**: Valid point. Added now - hope it clears things up.  

---

### Answer by username_2 on 2022-06-27. Score: 4

having 3 unknowns (x,y,z) you need at least 3 equations, that is, 4 sensors that give you 3 time delays.

However, these 3 equations are non linear and not always unique as they include a square-root.

To obtain a unique solution you need 5 sensors that result to 4 linear equations in x,y,z, and distance to acoustic reference. It is clear that the 4 parameters are not independent and may be used to cross-validate the solution.

References

ZIMMER W., (2011) Passive Acoustic Monitoring of Cetaceans, Cambridge University Press, pages 198 ff

SPENCER, Steven J. Closed-form analytical solutions of the time difference of arrival source location problem for minimal element monitoring arrays. The Journal of the Acoustical Society of America, 2010, 127. Jg., Nr. 5, S. 2943-2954.

> **Comments:**
> **username_2**: Added as comment: 4 sensors (tetrahedral configuration) are typically used for direction finding.  
> **username_1**: This answer could be improved with some links to online tutorial/summary information, and/or literature citations. It seems to me there should be a good textbook to recommend!  
> **username_2**: I prefer to refer to answer for https://bioacoustics.stackexchange.com/questions/72/real-time-3d-tracking-of-flying-insects-using-a-microphone-array  
> **username_3**: You don't necessarily need five (or four) sensors.  You can often get by with fewer sensors if you can make assumptions such as "the sound isn't coming from underground".  
> **username_2**: @username_3 Strictly speaking, additional information and assumptions can replace physical sensors.  In other words, assumptions can also be replaced by additional sensors.  
> **username_2**: edited my answer do give two references  

---

### Answer by username_4 on 2022-07-05. Score: 1

Magnus Wahlbergs paper on that topic may be helpful:
<https://username_4.files.wordpress.com/2018/04/wahlberg_et_al_2001.pdf>

> **Comments:**
> **username_5**: It would be extremely beneficial to at least add some brief explanation of the "solution" proposed in the link. This way, your answer will serve both as a starting point for someone and a future reference for people.  

---

