I would like to ask, assuming that the Final message (Including the Tsf and Trf times) were removed. Is there any way that the Anchors are programmed to Transmit their response after an immutable and fixed amount of time after the Trp? So that the Tag already knows about the (Tsr-Trp) without having to communicate with the anchor.
The decawave chip can be set in a mode where instead of transmitting immediately it will wait until a specified time and then transmit. This gives the ability to time the transmission smart time very accurately. Since you know the time when the message was received you can set this transmit time to be a fixed amount after the reception and so cause the response to be sent after an exact amount of time.
The problem is that the actual value of Trp - Tsr ends up being very well controlled as measured by the anchors clock. Unfortunately the clock in the tag is going to be running at a very slightly different rate.
So the reply time can be fixed as measured by one device but not as measured by another device.
Let’s assume that the Trp-Tsr time is 500 us (a little high for some configurations but in the right ballpark).
Let’s also assume that we have good clocks on both devices with an error of 0.5 ppm. That means that 500 us according to the anchors clock could be up to 500 ps longer or shorter according to the tags clock (0.5 ppm on each end gives a worst case error of 1 ppm).
A 500 ps error in reply time works out as a 15 cm error in range.
The reason for doing the extra messages is that you can then calculate the ranges in both directions (the tag measures (Trr - Tsp) - (Tsr - Trp), the anchor measures (Trf-Tsr) - (Tsf-Trr)). Both of these measurements will have errors due to the clock differences but in opposite directions. So if you take the average of them the errors cancel out.