DW1000 CIR real meaning doubts

Hello,
I’ve started to work on UWB only few months ago, for this reason I apologize if some questions could be trivial ones.

I’m using EVK1000 board for indoor localization with tag & anchor. My goal is to improve its precision till ‘mm’.
To do that, I was thinking to use the received signal at the receiver or the phase in the CIR.
Here the first problem arises: I’m not able to fully understand the CIR meaning.

My questions are:

  1. why the phase (computed as atan(Im/Real)) continously changes over every CIR accumulation obtained via the LOG file from DecaRanging application even if I take measurements in the same isolated environment and at the same distance?
  2. The amplitude is somehow scaled, because doesn’t matter if the 2 antenna are far away, LOS, or NLOS condition, I’ll get always results around 20383. So, which is the logic behind? And what does this 20383 mean?
  3. The x axes is express in ‘ns’, but which is it’s meaning? Because reading different topic I’ve understood that there is a LDE algorithm able to move the first path index always around 750, but I’m not able to understand which is the usefulness of it and what important information I can extract
  4. Right now, from the CIR, I can understand only if I’m in LOS or NLOS due to the multipath detection, but nothing more. Which are useful information that I’m missing?

I attached 2 pictures of my measurements. The first one with different peaks has been taken in NLOS, with wood and metallic interference, at distance of 1 meter.
The second one, instead, is LOS at distance of 15cm.
Picture1
Picture2

Thank you

Precision in the mm region is easy. Just set the printf to 3 decimal places.
Accuracy in that range is a lot harder :smiley:

  1. Keep in mind that the transmitting system is not phase locked to the receiving system. This means that the phase is effectively a random number for each reception. For phase to be used for distance measurement but you’d to either phase lock the two systems or have some way to measure the phase of the transmitter relative to the receiver.

  2. I’m not sure how that application logs the CIR values but if you read the registers directly there is a significant difference in the peak values depending on signal power and distance. Is there a chance that your power and range is such that things are saturating the receiver and so always giving similar values?

  3. In the raw CIR data x axis time units are 1/(2* 499.2 MHz) which works out as just over 1 ns per count. However as previously mentioned the absolute values are not in any way locked to the transmitter time. This is all purely based on receiver clock values.
    When the preamble is first detected the system makes an estimate as to where it expects the leading edge to be and aims to put this around 3/4 of the way along the CIR memory. It places it there rather than the middle of the memory to allow for the fact that in a NLOS situation the leading edge could be significantly earlier and weaker than this first approximation value. This means that most of the time the leading edge will be in the 740-750 region.
    This leading edge location is added to the the DW1000s internal clock value for CIR location 0 to give the fill Rx time stamp value.

  4. In theory looking at the CIR you can throw a lot more computing power at leading edge detection than the chip does. This could allow you to detect a NLOS signal that the chip missed due to it being too weak or perform a better interpolation to find the true leading edge if the signal to noise ratio is poor and so the start is hidden in the noise.
    In practice I’ve only ever used it for diagnostics and detecting when there is a long lived reflection giving me shorter than true range results.

Best of luck to you with your quest for mm accuracy. This is one of those things where getting an approximate value is relatively simple but then each improvement in accuracy gets exponentially harder.
Before you start digging into the CIR data make sure you have corrected for temperature (slightly different curves on every unit), transmit and receive signal gains (slightly different on every unit), antenna delays (different on every unit), signal strength dependencies (distance and environment dependent) and antenna gain pattern (probably similar enough on every unit but highly orientation dependent).
Also the internal DW1000 clock resolution works out as being around 5mm so you’ll need to average multiple measurements to remove the quantising effect that has if you want to get accuracies in that region.

The best we’ve managed for point to point range in a real world usable system rather than a static lab environment is around +/- 2 cm. And that has a long list of caveats and requirements to achieve that accuracy.