I have a single sided two way range based position system:
Tag sends a poll.
Anchors 1-8 each send a response fixed amounts of time after they receive the poll. Their response includes the last 9 bits of the ideal Tx time.
The Tag receives these replies, corrects the response times for rounding errors and clock rate differences and calculates the ranges.
The ranges are good to within a few cm. Given known anchor locations we can determine tag location and since the result is overdetermined get a good feel for how reliable the position is. All very text book generic system so far.
Here’s the bit that I’m having issues with:
If I put a purely passive UWB device in the middle of the room I can measure the times it sees all the packets.
The time the Listener receives the Poll is the Tag transmit time plus a function of the Tag to Listener distance.
For each anchor the time the Listener receives the Reply is the Anchor transmit time plus a function of the Anchor to Listener distance.
But the system design is that the Anchor transmit time is a the Tag transmit time plus a function of the Tag to Anchor distance plus a known delay.
Rearranging this we get that the time between the Listener receiving the Poll and receiving the Reply minus the known delay for that Anchor is a function of the Tag to Anchor distance plus the Listener to Anchor distance minus the Tag to Listener distance.
Given Anchor locations are known all of these distances between devices are functions of only 6 unknowns, the Tag x,y,z and the Listener x,y,z.
It I have 8 anchors that gives me 8 measurements. 8 data points and 6 unknowns means I should be able to solve for them and purely by listening be able to measure both the tag location and the location of my silent listener.
The problem is that it’s not quite working.
I take the time difference between packets, subtract the delay (corrected for the rounding in the tx time and the clock difference) and convert the resulting time to a distance. Since I know where the tag and listener are I can work out what this value should be. The results I get are about right but are off by a meter or so. So the basic idea works but the values are wrong by enough to ruin the position calculations.
The antenna delays programmed into the system and anchor rx to tx delays must be correct because the tag is getting accurate ranges.
Received signal strength effects are smaller than this, I’ve tried factoring an approximation for them in but that didn’t help.
There has to be some factor or correction that I’m not taking into account on the listening side but I can’t figure out what it could be.
So the question is what am I missing?