Fesibility of Triangulating object, and identifying speed.

I am a newer member to the boards here, and am newer to the Arduino community. I am looking at getting more familiar with the Arduino coding, and systems, and am thinking a good way to do that is by using say 3 or 4 microphones to triangulate the position of a car or a plane as it flies or drives near by.

I would set up the microphones in a N,E,S,W orientation, and set them about 10 feet or so away from each other, and possibly increase the Z distance on two of them (either the N/S, or E/W) to get a better triangulation for aircraft. I am thinking of using the UNO for this project as I have heard many great things about the board, and all, but I am unsure as to what sensors would be good to use.

My questions are:
-Is this a good advanced beginner/intermediate project. (will answer any questions further if asked)
-Would the UNO board be a good starting point?
-What sensors do people recommend for ease of use/programming
-Anything else I am missing?

  1. Welcome!
  2. Old thread: Sound Triangulation with 3 Microphones - Audio - Arduino Forum
  3. High level: http://www.engineersgarage.com/contribution/expert/sound-localization-and-triangulation
  4. Sensor workshop: http://itp.nyu.edu/physcomp/sensors/Reports/Triangulation
  5. Prototype: DIY Sound Localization Sensor | Hackaday

Good luck!

Ray

-Is this a good advanced beginner/intermediate project. (will answer any questions further if asked)

Hi,

Maybe is a good one as long as you pose yourself (related to but) simpler projects as intermediate ones (i.e.: locate an object in a line, then a plane, . . .). As a pedagogical hint, I would proposing this simple project to be fully finished (debugged, commented, an so on: to use in the future as included modules)

Regards

SGrog:
am thinking a good way to do that is by using say 3 or 4 microphones to triangulate the position of a car or a plane as it flies or drives near by.

It seems to me that this would need some pretty clever audio processing, if it's possible at all. Have you got any evidence to indicate that it's feasible, or any explanations of the method used to do it? Assuming you can get it working at all, I would expect the sensitivity to depend on the ratio between the distance between the sensors, and the distance to the target. To determine the bearing and range to an aircraft many thousands of feet away I think you would want your sensors a lot more than a few feet apart.

mrburnette: Thank you for those links, It was one of the Arduino links that actually got the gears turning in my head with regards to this project. It would be similar to the item 3 you had listed, but instead of the microphone moving, I would have the individual mics stationary, thus being able to identify some other factors.

vffgaston: I do think I will pace myself, and fully develop this project in phases, realistically, I am thinking of phase one being the acquisition of the equipment, Phase two would be setting up the control board (Arduino Mega 2560) to communicate with the sensors (Microphones for the detection, and a temp sensor for sound wave corrections) on a basic level of detecting noise, Phase three would be to locate the microphones around the property and have a very detailed location for each of them (to make calculations easier), Phase four would be to Develop the software to a much higher level bit by bit, and Phase 5 would be to comment, and roll out the finished code for others to enjoy or so that they can improve on it. This will likely take years, but worth a shot!

PeterH: Great questions. Similar apparatus have been used through out history, prior to RADAR, military units would use the sound at various stations to identify a flight of aircraft, and they could triangulate its position. Similarly, sound ranging was used by artillery to locate other artillery units during WWI, this was primarily done by using the difference in time of arrival of sound waves. The best analogy I can think of is how earthquakes Foci are found. Each seismograph picks up the frequency of waves produced by the Earth, and a sphere is created indicating points where it could have originated, putting 4 or more together and you can identify where not only the epicenter of the quake was, but also where the focus, deep underground is. That is the approach I would take if that makes sense. And I agree that the sensitivity will depend on distance to target and distance between sensors. But, with quick processing capabilities, the shorter distance (up to 100 feet apart in my case) can be mitigated. Another issue to which I foresee is the errors produced by temperature, as it affects the speed of sound, but that coupled with a humidity sensor, I hope to correct the data.

Hopefully I am not getting to wordy hear,

Thank you for the input all!

I remembered that a member last year was attempting to reproduce a commercial design used on the firing range to determine projectile velocity. I then Goolged triangulate gunshot sounds which produced more results than I expected; apparently this science is widely distributed. These may be research avenues that would provide interesting insights. FYI,

Ray

Thank you for the feedback! A neighboring city uses Shotspotter Technology to locate gunfire and respond quicker to potential gunshot incidents. It would be very similar to that actually since you mention that, but instead of looking for a certain frequency, I would be looking for a variety of frequencies. The following concept of Multilateration is something I believe will be rather useful: Multilateration - Wikipedia

With a lot of this information, I believe I will start with finding what frequencies aircraft and motor vehicles typically are on, and find a sensor that is sensitive to those frequencies so that I can mostly filter out other noises such as birds or rain, etc. In terms of coding, I think I would start with a single sensor, and picking up frequencies, then determining if there is a Doppler shift, and possibly exploring that concept further. From there, I would incorporate a basic correction due to temp and humidity, and finally I would develop it so that I could compare all 4 microphones to each other to locate the X,Y,Z coordinates of the object, and finally a GUI to make it into a visual file. Does this sound about right for development?

The only physical problem I see is how to transmit the data from the sensors to the Mega 2560 I have, and I believe that might be solved with setting the sensor up with a small, 9v battery or something similar, then wirelessly transmitting the data and using the program to filter and do what is mentioned above.

I believe I will start with finding what frequencies aircraft and motor vehicles typically are on, and find a sensor that is sensitive to those frequencies so that I can mostly filter out other noises such as birds or rain, etc. In terms of coding, I think I would start with a single sensor, and picking up frequencies, then determining if there is a Doppler shift, and possibly exploring that concept further. From there, I would incorporate a basic correction due to temp and humidity, and finally I would develop it so that I could compare all 4 microphones to each other to locate the X,Y,Z coordinates of the object, and finally a GUI to make it into a visual file. Does this sound about right for development?

It is a plan, which is a start! This is really outside my experience zone, so here are my thoughts.
You may want to play with 1 mic and FFT:
ARM: Hardware | FFT: Fun with Fourier Transforms | Adafruit Learning System
AVR: FFT Archives | Arduino Blog
AVR: Sound analysis in Arduino | Bocho's Blog
Take note to Adafruit's comments about ARM benefits.

  • Sounds traveling from high altitudes will transverse various temperature layers.
  • AVR chips used in the Arduino only have 1 SAR AD register. It is unclear to me how phase differences between different analog channels would be implemented.

Ray

It is not that difficult to use time-of-flight distance measurements (trilateration) to estimate the distance to and origin of an event that produces an very sharp impulse, like a gunshot. It is an entirely different problem to use audio methods to estimate the distance to an object producing a continuous sound, like an airplane.

You can, however, estimate the direction to the source of, for example, a well defined tone using phase shift methods and as googling “arduino sound localization” will reveal, lots of people are trying to do just that.

mrburnette: In looking up information myself, I have seen lots about the FFT, and will definitely explore it further! The wordpress site was something I had not stumbled upon before, good catch! And hm, with the temperature differences, I have used Zigbee radios to collect and analyze weather with weather balloons up to 100,000 ft, and could also figure out a way possibly of taking local radiosonde raw data from the National weather service, and incorporating that information into the algorithm for correcting for pressure and temperature to get a more accurate readout. Well, as I get a better idea of what I want to collect, I can start obtaining the equipment, and writing the code. Think I might start with a temp and humidity sensor first and build off of that.

jremington: I agree with the difficulty of finding the distance of a continuous sound as it has to first be plucked out of the other background noise, and then identified for its duration to track it. I will look up the Arduino Sound Localization, thank you for the suggestion! I think I will be relying on Doppler affect and increased volume over normal background noise to identify and track, at least one object at a time.

SGrog:
prior to RADAR, military units would use the sound at various stations to identify a flight of aircraft, and they could triangulate its position

A human being can get a pretty estimate of the direction that a continuous sound is coming from. With two listening posts a suitable distance apart, you can triangulate to estimate the position of the source. Note that this relies absolutely on being able to get a direction from each listening post. It’s not obvious how you would achieve that with a single unidirectional microphone and an Arduino.

SGrog:
Similarly, sound ranging was used by artillery to locate other artillery units during WWI, this was primarily done by using the difference in time of arrival of sound waves. The best analogy I can think of is how earthquakes Foci are found. Each seismograph picks up the frequency of waves produced by the Earth, and a sphere is created indicating points where it could have originated, putting 4 or more together and you can identify where not only the epicenter of the quake was, but also where the focus, deep underground is. That is the approach I would take if that makes sense.

All of these approaches rely on an easily recognisable event which can be detected and correlated in multiple locations. I don’t think you can rely on there being such an event when you’re listening to the continuous sound of a moving vehicle.

What you’re trying to do doesn’t seem fundamentally impossible, but I think it’s a lot harder than you are suggesting. The sort of approach I’d be looking for is a pair (or perhaps an array) of microphones at each listening post, and something to do real-time waveform capture and correlation to calculate the phase delay between the microphones, from which you could estimate the direction. With two or more listening posts giving you a direction, you could triangulate the position. I think you’d probably need something a bit more powerful than an Arduino to do that real-time waveform capture and correlation, though.