This is the code for Android part to implement our distributed localization protocol. The distributed pipeline is shown as follows,
Now the code can support a group maximum of 6 people. One of the devices serves as a leader, and the remaining devices serve as users with pre-assigned IDs. The basic protocol of the devices is the Time-Duplex Division. After the leader broadcast a preamble to all the users, the users will reply a preamble after a certain time interval based on their ID to avoid packet collision.The preamble is composed of 4 OFDM symbols modulated with CAZAC code, and followed by a FSK symbol to encode the user ID.
Our distributed protocol is robust to the issues like Packet Drop and Out of the Leader's range. Specifically, even though one device cannot receive the leader's preamble and it can still send the preamble based on other devices' reply signal and recover Time-Duplex Division protocol.
The pairwise 1D ranging algorithm using dual-mic channel estimation
The Python code for 3D localization of divers using SMACOF algorithm with outlier detection