Time sync for TDoA

I am developing a TDoA-based positioning system.
I don’t know some things and I hope they tell me here.

  1. A time synchronization error of 1ns will produce a distance measurement error ≈30 see This is true?

  2. It follows from 1 that the timing error should be < 1 ns?

  3. Wire timing (reset signal) has poor accuracy because the timing error of individual chips differs (+/- 0.5 ppm)?

  4. To use wire synchronization, do you need to make a single clock (38.4 MHz), not reset?

  5. Due to the difficulties of implementing synchronization over the wire, Decawave developed “Wireless Sync Algorithm”. However, you need a license to use it. Where and how to get it?

  6. How much does the distance between anchors affect accuracy? If anchors are installed in the room at a distance of 5 meters, then the accuracy will be high. However, what if anchors are installed at a distance of 30 cm? Antenna array. How will this affect accuracy or not?


1: Yes a 1 ns time error will give a range error of ~30 cm.
2: Yes, time sync should be in the order of 100 ps or better to get good results.
3,4 & 5:
There are two time errors, differences in the clock rate and synchronization differences, when do you call time 0.
Differences in clock rate can be fixed by using a wired clock. Synchronization differences are harder, a wired sync signal will have propagation delay issues unless all the cables are the same length. If all the devices are using the same wired clock then this synchronization error will be a constant.
One solution is to place a synchronization tag at a known location. Since it’s location and the anchor locations are known the time of flight of the signal from the tag to the anchors is also known. If the anchors all takes the time they see the signal from the synchronization tag and subtract the known time of flight they can all calculate their internal clock time when that tag sent its signal. This allows all the anchors to calculate their clock offset errors. Since the error should be constant this value can be averaged to improve accuracy.

Now if you want to get really fancy you can remove the wired clock signal. Each anchor will now see the synchronization tag signal repeating at a very slightly different rate. By using that rate to scale their internal clock they can compensate for their internal clock rate error. Individual measurements will be noisy so you need to do some smoothing and averaging. But since the clock rate will drift with time you need to constantly update the scale factor.

While I’ve not looked into it I’m guessing that this is the basis of the decawave wireless sync system. As with most things to do with UWB the basic concept isn’t too complicated. Getting a good real world implementation can be tricky.

6: Assuming you have good clock synchronization then errors tend to be fairly random. More anchors = more points to average = lower noise in the calculated position. But there are diminishing returns for adding more and most systems assume an angle independent antenna delay. Antenna characterization is almost always done assuming nothing nearby. Putting antennas every 30 cm they are likely to start impacting each other and so may have some strange effects.

1 Like

AndyA, thank you.

I want to put anchors in the form of a triangle with a distance between them for example 20 cm. Then compare the incoming signals and determine the location.(The concept in the image.)
Wire lengths are the same.
The required timing accuracy is less than 0.1 ns.
I hope to get a positioning accuracy of 10-30 cm.
How to implement this better?