Time synchronization in TDoA #143
-
Hi, According to the documents, in TDoA2 the anchors' clocks are synchronized based on 'anchor 0' and in the TDoA3 mode the anchors' clocks are not synchronized. My question is will the tag's (Crazyflie) clock be synchronized with 'anchor 0' as well in TDoA2 or maybe TDoA3? if not, is there an option to enable time synchronization between tags and anchors? Thank you |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 2 replies
-
I think that @krichardsson is the expert here, but since he is still on a holiday I'll try to help out. In both TDOA2 and 3, the loco nodes also range with each other in order for everything to work.
TDOA2 node ranging is quite fast, but as soon one node is disconnect this fails and it's is not flexible for adding more nodes. TDOA3 suffers from more packet loss due to collisions, but it's easier to add more nodes and more robust if one of the nodes fail. It's a bit of a nutshell explanation but I hope it is clear. @krichardsson wrote a blogpost of this quite recently which is interesting to read as well: https://www.bitcraze.io/2022/06/the-loco-positioning-system/ |
Beta Was this translation helpful? Give feedback.
-
Let me start a new thread here. Maybe this is possible with two way ranging mode? I unfortunately do not know enough about this, but kristoffer is back in a week so I'll ping him them to answer this |
Beta Was this translation helpful? Give feedback.
-
Hi, I'm back from my holidays, let's clear this up. There are a few clocks involved here, one clock in each DWM module (Loco decks and anchors) and one for each CPU. The sentence "clocks are synchronized based on 'anchor 0'" is pretty ambiguous :-) What we mean in the documentation is that the transmission time of each anchor is time slotted in a round robin fashion as @knmcguire mentioned, and based on when anchor 0 transmits. The scheme is pretty simple:
The high frequency DWM clocks are not fully synchronized, but their relative difference in clock rate is derived from the traffic in the same way as is done in TDoA3. Most of the code in the Crazyflie firmware for TDoA2 and 3 is actually shared, only the part that is handling the protocol is different.
Nope, not at this time as it is not needed for estimating the position. It is maybe possible to implement some sort of PLL in the Crazyflie that tracks the remote clock (both phase and rate) but it is pretty tricky. |
Beta Was this translation helpful? Give feedback.
Hi, I'm back from my holidays, let's clear this up.
There are a few clocks involved here, one clock in each DWM module (Loco decks and anchors) and one for each CPU. The sentence "clocks are synchronized based on 'anchor 0'" is pretty ambiguous :-)
What we mean in the documentation is that the transmission time of each anchor is time slotted in a round robin fashion as @knmcguire mentioned, and based on when anchor 0 transmits. The scheme is pretty simple: