I worked on the following aspects of the project
1.
Understanding how the overall TDOA algorithm works and when it works well: I looked through some papers that used TDOA for sound source localization to figure out how they did it. Given the time differences, the TDOA algorithm itself is just a simple least-square fit using matrix manipulations (though some papers use more fancy methods like RANSAC depending on their use case and the type of noise they encounter). The key though is how the time differences themselves are calculated – this is usually done using cross-correlation between the different microphone signals but regular cross-correlation is very susceptible to noise, so there are some “generalized cross-correlation” methods that most implementations use (one popular one is called gcc-phat) – I’m not yet 100% sure exactly how it works, but the general idea seems to be that it essentially weights the frequencies in the signal differently to try to focus more on peaks corresponding to the signal, rather than surrounding noise.
One fortunate thing we realized recently is that we might not actually have to go through the pain of implementing all of this because there are some DSP libraries on the boards we are considering that already do a good chunk of this TDOA stuff – but this is still good to know in case we want to tweak the method or if our use case requires something different from what the library has to offer.
2.
The other thing I worked on, along with my team-mates, was the Bill of Materials. I looked through possible microphones that we could use – in particular, we were considering the advantages and disadvantages of PDM microphones vs analog microphones and discussing how to interface the microphones with a board (using an SAI interface for PDM microphones vs an I2S interface, or whether to use analog microphones and the board’s ADC).
So far I am on schedule, and next week we will all continue working on the bill of materials.