I’m relatively new to this technology and am doing experiments for my thesis. For these experiments, four anchors are set in a square shape at one height and a tag is placed in static mode in the middle. I am getting around 10 cm error in x and y, which seems consistent with the manual’s numbers. However, I am getting around 50 cm in Z. Is there any way to see what I may be doing wrong? I tried putting all the anchors and the tag on the floor (z = 0) and the anchors in a square shape with a dimension of 60 cm. The estimates are giving me z = 20 cm again.
The main problem is that I am extracting the ranging measurements to do least-squares and get an estimate myself. And since the error is high, the least-squares diverges and doesn’t give me any numbers.
I have also tried updating the firmware using the DRTLS Android app but it always says “failed”.
Does anyone have an idea what might be wrong?
Nothing is wrong. Your anchors have a lot more horizontal diversity and separation than vertical diversity and separation and so you gain greater accuracy in the horizontal direction.
Think of it this way: If you move the tag 1m to the side how much does your range to an anchor change? Probably a fair proportion of 1 m. Now move your tag 1 meter vertically, how much does the range change? Assuming a horizontal distance of 5 m from the anchor the range will change by about 10 cm.
This is for a thesis so I’m assuming you want to be academically rigorous. Look up geometric dilution of precision. It’s normally used in relation to GPS but the principals are equally applicable to any positioning system.
Take the anchor locations, the tag location and the errors or uncertainty in the individual tag to anchor ranges. Use them as inputs to the GDoP calculation and you will get the horizontal and vertical accuracies you can expect to achieve.
How do you get more accuracy? You’re using least squares so more anchors will help. Average more measurements and reject outliers to reduce the measurement noise. Play with the anchor heights to improve the geometry.
Unfortunately there is only so much you can do, it’s a lot easier to vary the horizontal position of things than the vertical. And even if you have a very high ceiling and the ability to vary heights to give the same level of diversity you start hitting physical issues. You can’t put anchors under the ground and you can’t make antennas that are uniform in 3 dimensions, your electronics are going to start blocking the antenna at some point.
The other thing to do is look at relative accuracy and repeatability rather than absolute accuracy.
If you move and then return to the same location do you get the same output? If it’s repeatable then in theory it can be calibrated and corrected for. If you move horizontally does the height stay the same or change in a predictable way? If so that makes the correction a lot simpler to do.
With 12 anchors and a lot of work fine tuning the system we still see vertical position noise that’s around 3 to 4 times the horizontal position noise. Absolute accuracy shows a similar ratio between horizontal and vertical.
Thanks for the thorough explanation!
I do get your point about GDoP and repeatability and understand that it makes sense to get higher error rates in the height. However, the concern I have is that this was not happening up until now. I was doing the exact same experiments in February and was getting lower error rates (less than 20 cm in MRSE). But now, I am doing the same procedure and getting more than 40 cm in MRSE.
Is there any possibility of clock drift or any calibration that needs to be fixed after some time of using the devices?
In addition to this, I was able to do least-squares on my ranging measurements back in February, but now the code diverges and gets stuck in the loop, giving me no final estimated location.
Do you have any idea what might be causing the difference between my current results and the ones from back in February?
Thanks again for the help!
Is your setup the same between the two times? Same anchor locations, things in the same orientation? Same or very similar environment?
How neat was the setup? I’ve seen worse results (both real world and simulated) when everything was set up in a perfect grid rather than having slight variations in the locations. This is one of the times when getting everything mm perfect actually makes things worse.
Either way it is critical that your configuration information is correct, you need the anchor locations that you give the system to be as accurate as you can make them. And make sure you don’t get two anchors locations swapped by accident, that is easy to do.
To answer your question, no there isn’t anything that will drift over time, at least not significantly. The clock will drift but the ranging measurement should already allow for that since if clock error isn’t corrected the accuracy is terrible.
There will be antenna delay values that will add a constant offset to all range measurements. But these shouldn’t change meaningfully over time.
Look at the range values you are feeding in to the position calculation and check they seem sensible and low noise.
If they have a constant bias then look at doing an antenna delay calibration - Put the tag at a known point. Use UWB to measure range for all possible tag to anchor and anchor to anchor combinations. Set up a least squares system to work out what constant distance needs to be added to each antenna to minimise the differences between the measured and the actual distances. Once you have that for each anchor and tag you can correct each range by the appropriate anchor and tag values before calculating position.