Unexpected Cumulative Antenna Delay Results in DW1000 Two-Device Calibration

Hello everyone.

I’m using DW1000 modules to estimate distances between devices. I previously performed antenna calibration using a pairwise dichotomic search, but this is no longer sufficient because now I need to measure the individual antenna delay for each DW1000 (reception delay + transmission delay).

To do this, I use three DW1000 devices (A, B, C). By performing two-way ranging, I calculate the sum of antenna delays (A+B, B+C, and A+C), which allows me to determine the individual delays.

My point of confusion is that even when I have only two devices running, the cumulative antenna delay differs depending on which one is set as Anchor and which as Tag, and vice versa. In my opinion, it should not be the case, because the measured time is:

TroundAB = AdelayTX_A + TOF + AdelayRX_B + TreplyAB + AdelayTX_B + TOF + AdelayRX_A = TreplyAB + 2 * TOF + AdelayA_B.

Everything is either known or measured here except for AdelayA_B. We can clearly see that the formula is symmetric. However, when I compute Tround - 2*TOF - Treply, I get 54400 in one case and 77790 in the other (in DW1000 timestamps).

I initially thought it could be due to clock drift, but the difference is too large for that to be the reason.

In your opinion, is this due to a mistake in my formula, or is it more likely an issue with my code (which is exactly the same for both devices)?

Any insight or suggestions would be greatly appreciated!
Thank you in advance for your help.

Unless my back of the envelope calculations are wrong that difference is way too high to be transmit power or antenna orientation related.

Are you using single or double sided TWR?
If single sided then the clock rate difference compensation would be my first suspect. The impact that would have depends on your timings but it would certainly result in the error being inverted when you swap the tag and anchor roles.