Calculating Distances Between Drones with Acoustic Signals
A project I did for my undergraduate thesis. I was fascinated by multi-robot systems and localization problems associated with such systems, and wanted to find interesting ways to calculate distances from one drone to another. I came across Peng et al.’s BeepBeep paper which introduced the concept of time-of-arrival (TOA) measurements without the need for clock synchronization, and decided to implement that for finding distances between drones.
Usually, when you want to calculate the distance between two devices using time-of-arrival techniques, you use D=c*t
where c
is a constant (in this case, the speed of sound) and t
is the time traveled by the signal. It’s a simple equation, but requires one critical assumption: the clocks on each device should be synchronized to calculate true t
. Peng et al. uses sample counting (off-the-shelf smartphones had 44.1KHz sampling frequency), two-way sensing, and self-recording to eliminate the need for clock synchronization.
I thought the idea was neat, so I implemented it as an Android app using Java and attached an Android phone to a custom-built drone as a companion computer. I used a speaker and an amplifier to amplify the acoustic signal generated by the companion computer. However, the noise generated by the brushless motors of the drone drowned out the noise, even with signal processing techniques. Eventually, the utility of such measurement techniques in inter-drone measurement techniques were deemed unfeasible, but I learned about signal processing, localization techniques, and robot networks in the journey so I have a personal bond with this project.
You can find more details of the build in rotorbuilds.