Page 1 of 1

TDoA structure

Posted: Mon Jul 15, 2019 8:36 pm
by WendaZ
Hello, Bitcraze team,

Our group is interested in the UWB localization system and currently working on a project based on Crazyflie. In order to support a swarm of Crazyflie, we would like to use TDoA mode. Currently, we only tried TDoA2 mode with 8 anchors set up as a cubic in an 8x8x3 indoor space. We have a couple of questions about the TDoA localization system.

1) TDoA structure
The TDoA structure is implemented as a round-robin fashion (7-0,0-1, ...,6-7). However, most TDoA localization systems are implemented in a centralized or decentralized way. Centralized means all tdoa measurements referring to the anchor 0. (d_{10},d_{20},..,d_{n0}) Decentralized means toda anchor pairs do not share anchor information.(d_{10},d_{32},d_{54}) Both centralized and decentralized tdoa setup have theoretical optimal configurations, however, the round-robin fashion does not have a feasible optimal geometry after similar derivation. Therefore, I wonder why you select round-robin fashion when you implement the tdoa algorithm. Are there any particular benefits of this structure?

2) Where does the history anchor data get information?
The second question is a particular code question. The history data of anchor packets are used throughout lpsTdoa2Tag.c. (It is declared at line 120: static history_t history[LOCODECK_NR_OF_TDOA2_ANCHORS]) However, I did not find where does this static structure get the data. It would be great if you can provide some guidance. Thanks.

3) Which anchor data are used each time in TDoA3 mode?
In TDoA3 mode, anchor data are stored in the " tdoaAnchorInfo_t" and when we process the data in the function, we search for the "tdoaAnchorInfo_t anchorStorage" to check if the anchor is available. Then I have 2 questions.
(3.1) Where does the "anchorStorage" get and update information?
(3.2) Just to confirm. In TDoA3 mode, the anchor pair is random, isn't it?

It would be very helpful if we can get some feedback from you.

Thanks in advance.


Re: TDoA structure

Posted: Tue Jan 28, 2020 12:55 pm
by kristoffer
Sorry for very late reply!
1) TDoA structure
Main reason was that it was easy to implement
2) Where does the history anchor data get information?
The history data is set at the end of the rxcallback() function.
(3.1) Where does the "anchorStorage" get and update information?
Information is written to the storage using the setter functions: tdoaStorageSetAnchorPosition(), tdoaStorageSetRxTxData(), tdoaStorageSetRemoteRxTime() and tdoaStorageSetTimeOfFlight
(3.2) Just to confirm. In TDoA3 mode, the anchor pair is random, isn't it?
Yes. Arrival time of packets is randomized. The packet is then matched with stored anchor information, this process is also (sort of) randomized.