TL:DR - How can you find the 3D coordinates of a emitter than transmits an impulse signal?
I'm working on something to improve my bird-watching. I've got a camera that can take pictures of the birds when I'm not around, but currently it has to be zoomed out all the way to guarantee they're in frame. This doesn't make for good pictures, so here's what I've done:
Mounted camera on a motor so it can rotate, zoomed in enough that the pictures will be better quality, and attempted multilateration to make the camera turn.
My multilateration is simple. 4 microphones listen for sound. When an impulse (such as a chirp) is created from an emitter (bird), the microphones can detect the impulse, and my microcontroller can calculate the time differences between all 4 mics receiving the impulse.
My microcontroller then uses a home brew program that converts these time differences and the known locations of the microphones relative to each other into matrix form.
Once the program has the matrices, it can solve for the distance from each microphone to the bird's origin, which then can be used to figure out the coordinates of the bird relative to the microphones.
The problem with this, is that it needs to be really precise. I'm talking ~10 nanoseconds of difference in reception time between mics in theoretical math space will cause the program to miscalculate where the bird is.
I've muddled with the code to see if implementing more mics will lessen the need for precision, but I can't find a way to achieve a tolerance greater than ~±25ns.
With my setup, I can only calculate a reception time difference on the level of 10-5 seconds, so it's not possible for me to guarantee the level of precision that this type of math needs.
Can anyone think of a way for me to improve my setup so that it works? Are there other ways to accomplish multilateration? How else could I find where the bird is when it's chirping?
Thanks guys, you're always awesome!!!
I have written out the mathematical process I have used for this problem. Pictures of that, an excel sheet for generating initial conditions, and Matlab code for handling the maths can be found here.