Hi, I’m working on a demo device, where I would like to use 4 anchors on corners of main unit and detect movement of 1 tag moving around main unit. I have 5 ESP32 UWB boards with DW1000 chip.
For now, I’ve tested this setup with anchors distance about 60cm apart. It is working “strange” - sometimes it can work nicely for few minutes, but then the calculated position starts drifting even few meters around, when physically all boards are on same place, not moving. And problem is, that the drifting is not just few packets, but it can also take few seconds before it fixes itself back.
I have tried to go through documents on Qorvo website, but I cannot find information about minimal distance between anchors. Can someone help me with this, please?
What was your geometry like?
There is no minimum distance however anchor geometry has a huge impact on position accuracy. If all the anchors are close together and on one side of the tag then the accuracy is going to be poor, a slight error in range could have a significant impact on position output.
For the best accuracy you want anchors evenly spaced in all directions around the tag.
Without knowing what the firmware is doing it’s hard to say what the exact cause would be. The sort of drifting you are describing could be caused by some temperature compensation within the system causing one anchor to output a different range for a period of time.
The idea scenario is square device, one side is aprox. 60cm, 4 anchors (1 in every corner). And the tag is moving around the device in about 5 meter radius. Anchors are in height about 50 cm from ground, tag is in person’s pocket (so about 1.2 meters high).
I understand, that many other scenarios are “tag moving inside anchors field”. But I need the opposite, tag moving around anchors in the center. Do you think that this is doable?
The strange drifting is happening even in situations, where all 5 UWB boards are stable on one spot for minutes. And by drifting I mean that the calculated position can shift for even few meters in both X,Y position, drift like that for up to tens of seconds and then fixes itself back and work great for many minutes.
Yes, you can do tag outside the anchors. The issue isn’t that it doesn’t work. It’s that the performance is poor.
Some very rough back of the envelope numbers, and my geometry is fairly rusty but I think this is correct…
Lets say you have two anchors 60cm apart with a tag 5 meters away from both of them. If you were to get a 10 cm range error (4.9 m instead of 5.0) on one of the measurements this would move the tag around 80 cm.
The odd bit isn’t that you get big errors. It’s that you get a drift off, stay there for a while and then drift back, range errors like that should result in instant jumps and jumping back. How is the position being calculated? Is there a lot of averaging and smoothing going on?
Ways to improve the performance:
Outlier rejection to ignore bad data (the hard part is identifying the bad data).
Better smoothing / filtering, rather than taking the mean of a set of ranges use the median, put them through a low pass filter or do some other more complex filtering on the data. In a way this is another form of outlier rejection, rather than detecting and rejecting bad data use a system where the occasional bad value doesn’t impact the results.
Lots and lots of smoothing and averaging.
Over determine the position, most systems seem to take 3 ranges and calculate a position assuming they are correct. Or take 4 ranges and use 3 of them to calculate a position and then the 4th as a method to measure confidence (or ignore it). Instead use more anchors and find a position that is best fit for all the ranges simultaneously.