I am trying to figure out if UWB, in particular DWM1000 or DWM3000 might be a suitable solution for accurate static distance measurement. My application will need to measure the distance between two positions that are static, i.e. I can let them sit still during the measuring period. I would need the units to be able to measure between 1 cm and up to a few meters with an accuracy of about ±1 cm. Would this be possible to achieve?

My initial thought is that it might be possible to do a hundred-way symmetric measurement or however many “ways” are needed. As stated, they are static and up to 10 seconds of measuring could be tolerated in position were antennas can be fixed in an optimal direction (if there is such a direction).

I would gladly receive feedback and thoughts on how to achieve this accuracy if possible to determine if this might be the product for me.

There are two types of error, random ones and systematic ones.
The random ones are things like thermal noise, errors caused by background noise and the general uncertainty you’re going to get trying to accurately measure a very weak signal.
The systematic ones are things like antenna delays. These may drift slowly over time due to temperature or supply voltage but over the short term will be fairly constant.

Averaging is only ever going to get rid of the random noise. You can work out how well this will work if you measure the standard deviation of the measurements, we see between 3 and 5 cm for most situations so averaging 100 points will get this down to well under 1 cm.

The systematic delays you can in theory either calculate or calibrate out and so correct for but getting that correction correct to that level of accuracy is very tricky. For a start you need to correct for a signal strength related bias, going from 1 cm to 5 m is around a 50 dB difference in signal levels, getting a correction that is cm level accurate over that whole range will be tricky. (If you aren’t using to thinking in dB, the signal strength at 1 cm will be about 100,000 times stronger than at 5 m)

So in theory it is doable with some averaging but in reality it may prove tricky to get that level of accuracy.

It’s actually easier to get an accurate position than distance. For position you can average across multiple tags/anchors which allows you to average out some of the systematic errors in the individual range measurements.

It would indeed be useful to use more than two tags/anchors, but it would unfortunately not be suitable for the application.

Is it tricky to program the averaging? Any caveats that should be taken into consideration?

Do you have any other tips on measuring distance within ±1 cm over about 0-5 meters, that might be interesting too. I have also glanced at TI mmWave and some LiDAR options, but there are some drawbacks to all of them.

How tricky it is to program depends on how you do it.
If you use the decawave libraries and modules then most of those systematic errors are already corrected for and it’s simply a case of calculating the average of the ranges it outputs which is about as basic as programming can get.

If you want to add some sort of outlier filter then it can get a bit more complicated depending on the method used. If you want am uncertainty number then looking at the standard deviation of the values may be helpful.

What I would be tempted to do would be try the decawave libraries with some averaging and maybe a basic outlier rejection to cope with obviously bad measurements (e.g. discard any points more than 30cm from the median).
Then plot the measurements you get against truth for a number of different environments / temperatures and see firstly what the errors are and secondly if there is any consistent pattern to them that you can correct to improve accuracy.

Keep in mind that at zero range you will get a bias, you can’t have a negative distance and so the noise can’t be symmetrical, it will all be to one side of truth and not average out correctly. Very short ranges will be less accurate for this reason but again, assuming this is repeatable you can correct for it. It helps that you will be measuring antenna to antenna distance but the separation you’re interested in I’m guessing will be between board/housing edges, this means that even at 0 your UWB range will be a few cm.