Do I need both TOF and TDOA for indoor positioning(UWB)?

Hello, everyone.
I am a newbie and I need some help
I am learning UWB indoor positioning technology.
If I use TOF to get the distance between a Tag and four Anchors, do I still need to use TDOA to find the correct position of the Tag? Or can I directly use the way that the four distances intersect at one point to get the correct position?


Let me know if my question is not clear enough


By TOF I am going to assume you mean a Two Way Ranging (TWR) type system where packets are exchanged to calculate the time of flight between two devices.

You can use either method on their own. They each have pros and cons.

TWR makes the system more modular, you directly measure a set of ranges. You then perform trilateration (which is a fancy way of saying do some maths) to calculate the position that matches those ranges. Since each range is independent of everything else the anchors can be fairly simple. Technically you only need 3 anchors for this (3 unknowns, X,Y,Z, require 3 measurements to solve) but a 4th improves reliability since one measurement can fail and you still get a result. If you get all 4 then you can get fancy and use the extra data to improve the accuracy.

TDoA is more efficient, a single packet from the tag is all that is needed to position it. However you need all the anchors to be perfectly clock synchronised for this to work meaning the anchors are more complex. Also since you don’t have direct range numbers only range differences the maths is a little harder, you have to find the intersection of some hyperbolic functions rather than spheres. This requires 4 anchors minimum since there is now a 4th unknown to solve, the tag transmit time.

Which one is the best option depends on the application.

1 Like

sorry, I have the same problem.
My senior used “DW1000Ranging.h” to obtain the distance by TOF in Arduino and simply used some error correction methods to make the distance more accurately. Then use trilateration to the position, but keep failing. you know what happens you guess?


The most likely reason for trilateration to fail is if the ranges are too short.
If the ranges are too long then for most geometries that will push the solution vertically up or down from the true location. But if they are too short then you can get a situation where there is no position that meets the known data. If you are trying to solve equations to find the point that fits the data exactly then that will result in an error.
The most likely cause of ranges coming in too short by a significant distance is an incorrect antenna delay correction.

You can also get issues if you have an over constrained system, if you have 3 or more anchors for a 2d solution or 4 or more for a 3d solution then it’s possible that not all the data adds up to a single solution. In fact it’s almost guaranteed that it won’t all match up perfectly. In that situation you can either ignore some ranges, calculate multiple positions from each combination or use a position calculation method that gives the position that minimises the errors like a least squares optimisation.

1 Like