A viable range compensation model

Hello everyone,

We are using a trio of DW1000 sensors to obtain 2-way range information in real-world scenarios (open grass field and hardwood indoor courts).

We are aiming for centimeter accuracy of the two-way-ranging observables at 8 to 40 m range and therefore must worry about received power level for range compensation (as described in application note 11).

Our hope was that the estimated received signal power (as described in 4.7.2. of dw1000_user_manual-2.13) would be a good enough indicator of received power given the real-world environment so we could re-create a table like that on page 12 of application note 11.

However, when recording static calibration data, are finding that received power levels readings vary so much that they can’t directly be used as an input to a curve giving the necessary range-compensation.

For example, even after subtracting out biases, there does not seems to be a discernable trend between different sensors at different distances.

Is this approach reasonable? Should we instead try to develop an empirical range-compensation vs range model (assuming no multi-path)?

Surely others have bumped into this issue as well.

A few more details: we are seeing differences between the received power levels and the first path power levels (as described in 4.7.1. of dw1000_user_manual-2.13) anywhere between 4 to 11 dB (6-9 indicates multipath according to the user manual).

Any advice would be greatly appreciated.

The approach I’ve taken is to assume that the laws of physics are more consistent than the DW1000’s ability to give me the signal strength.
For an open field LOS situation there will be a direct relationship between signal strength and distance no matter what the reported power levels are.

So rather than using the signal power to calculate how much to compensate for the power sensitivity I used the measured range. I plotted measured range Vs range error and then fit a curve to the results and used that as my compensation.

Using this assumption means that the system will all fall to pieces as soon as you have a NLOS situation but if your use case avoids that then it works fine and has the added benefit that it’s faster and easier to do since you are already measuring the range.

Thank you Andy,

Since we are only concerned with LOS situations, your hard-nosed approach makes perfect sense.

Given the recommendations of application note 11, we’ll use the 8.15 m as the calibration point which for our PRF and BW is supposed to be the neutral spot where zero range correction is needed.

After that, it will be a case of measuring the calibration data with (laser accuracy) at every 2-meter intervals (it will be interesting to measure how the received power level deviates from Friis’ law).

Incidentally, we also looked at using fig 22 (dw_user_manual_2.13) to correct the measured received power, but even then it is rather coarse for our purposes.

Interestingly we found rather different received power levels for the different sensors despite the anchor and tag being above the 1st or 3rd Fresnel zones – which is why we got into the received power level quagmire.

Thank you, Andy, for sharing your experience. We’ll bite the bullet and gather the data.

(Last comment: the data gathering exercise is a little more painful for us since we need to know the correction at different power settings on the DW – these don’t necessarily get reflected dB for dB with the measured received power level – even with the relative yardstick of Friis’ law).

The magic zero correction point is really just the point at the range where you calibrated your antenna delays.

I was rather CPU limited so I ended up splitting the range into 3 regions and doing a straight line fit for each one. This wasn’t perfect but it kept the errors under my measurement noise level which I considered good enough. This had the big plus that a comparison, a multiplication and an addition is a lot less work than interpolating a lookup table or applying a non-linear correction factor.

I was somewhat fortunate when it came to collecting the data, I have a robotic total station available. An overpriced but very cool piece of kit. It was a case of setting that to log ranges at 1 Hz, log my UWB ranges and then walk away stopping for a few seconds every few meters. I could then filter out any points where I wasn’t static and I was left with the required set of data points without all the painful and slow hassle of aiming a laser range finder.

Hi Andy,

Right, the zero point is mainly a convenience for our fixed cable delays. And fortunately, we can be quite cavalier about MIPs so having a polynomial for the fit is fine for us.

Sadly, we have no such robots for the data collection, but we do have a nice jig for housing and pointing a laser, and some scripts to automate the data collection.

Thanks again for your insightful comments!

Hi Andy,

One quick question for you: when you did your range compensation runs, were the tag and anchor(s) situated high enough such that you were absolutely certain there would be no multi-path contamination?

Ours were set a minimum of 1.4 m above the ground.


Good question, I can’t remember checking at the time.

One end was on a tripod around 2 m up with most of the test area down a ramp, once I got more than about 10 m away the ground level was probably closer to around 4 m below the fixed antenna. The other end was on the top of a survey pole that I carried around. That put the other antenna at around 2.2 m above the ground.

I had space to walk out to a range of around 120 m before I ended up in some bushes. We were on channel 4. Some quick back of the envelope calculations I make it that with those heights I should be ok to around 200 m before the ground bounce becomes an issue with that setup.

Thank you Andy,

That is interesting since we were only going out to 25 or 30 m (indoors). Our experience was that in this environment, setting the anchors lower at 1.4 m gave more consistent SNR values (in the 5 to 25m range) than (say) at a height of 2m.

The other concern was mast sway if the anchors were set to 2m in a production setting. If you are in an indoor basket ball court, merely walking near the mast holding the anchors could cause a couple of cms in sway.

Basically our carefully surveyed data is not lining up with the curves in the DecaWave user manual. We’ll have to delve into this further.

Thanks again for sharing your experiences,

I assume your ceiling was more than 4 m high?

We’re using some fairly solid tripods so unless the wind is strong enough to push them over (takes gusts of about 40 mph as we discovered once) there isn’t much sway. Final solutions we’ll be fixed to the walls so height won’t be an issue from that point of view.

Our biggest concern when it came to height ended up being getting enough vertical diversity to get a meaningful height calculation. Turns out using 8 anchors spread out over a 30x100 m area you can actually get a noisy but usable height value with only 1 meter in variation of anchor height.

Our ceiling is around 10m high. The rafters (mix of wood and steel plates) were at that height, the roof itself is another 2 m above that.

Yes, vertical diversity is a challenge for us too – our 3 anchors are only about 50 cm apart (so we have a sort of ‘float’ solution with carrier phase). Our ‘hub’ houses the 3 anchors, CPU etc and needs to be very portable yet stable in the wind - hence the emphasis in lowest possible mounting height.

I am not the HW expert, but I think that is where we must delve in, to fix our range error inconsistencies.

That many antennas and electronics in a single box could cause all sorts of fun and games.
And with that little diversity your geometry is going to be poor to start with for getting accurate locations.

We spent ages getting the antenna right so that we got good accuracy over the whole coverage area. With the wrong antennas or mechanical setup you can get angle dependent range errors.
And that’s when we could put them on all sides.

Fortunately I can say our antennas don’t give us any grief as far as pitch and yaw. They can be over 80 degrees off boresight in yaw without appreciable drop in SNR. In pitch (up) we can handle 45 degrees or more – but of course pitch down opens the doors to ground bounces etc.

As for the tiny enclosure housing all the RF, CPU and other WiFi stuff – that was a dog’s breakfast. The guys were pretty sure they plugged the last of the leaks with their shields.

One other possible source is the gym walls of course. That is the next step to rule out.

Sorry, I should have been clearer, I didn’t mean SNR variation with angle, I meant antenna delay variation with angle.
If we rotated the system about the antenna centre point there would be a noticeable impact on measured range, up to around 15 cm difference between the two extremes.
Admittedly we needed 360 degree coverage, if you only need one direction then you may be OK.

Hi Andy,

It never occurred to us to investigate pitch and roll angle related range errors. All our data was taken essentially on bore-sight. I can’t imagine the mechanism which would affect the range errors given that the SNR variation was essentially negligible, but we will definitely chase down this avenue. Thank you for pointing out this non-obvious effect.

It comes down to two different effects: Antenna asymmetry and environmental effects.

A crude explanation for the antenna part of it is simple:
Say you have a PCB type antenna that is 4 cm across with a phase center that’s right in the middle.
From square on the signal travels through the air for the entire distance.
From the side the signal travels the last 2 cm through the PCB. FR 4 has a dialectic constant of just over 4, the signal is going to travel at half the speed for those last 2 cm and so add around 2 cm to your antenna delay.
In reality I saw an effect that was larger than this even for isolated antennas. I have no idea why.

Other effects are a lot harder to explain but as soon as you put anything else metallic near the antenna it’s going to do weird things to both the antenna gain pattern and also the antenna delay. I’m not RF expert so I can’t explain the mechanism but when I plotted measured range over time at a high enough rate and then averaged to reduce the noise there were some clear discontinuities in the measurements as the angle changed.

Thank you for these insights. Again… not obvious to an non-RF guru.

Bottom line, it should be quite easy to check this at say 8m range with a stationary jig and just vary pitch and yaw. In fact I think we still have the old data. I’ll check it right now.