Problem: A TOF ranger sucks power. To get an accurate 2D fix you have to range 3 anchors. When you have no idea where you are in the filed of interest, it’s not possible to select the three best anchors to get a new fix. There are two pathological cases: (In mathematics, a pathological phenomenon is one whose properties are considered atypically bad or counterintuitive; the opposite iswell-behaved)
Mathematically, the most stable fix will be produced when the ranges are precise, and the anchors form an equilateral triangle.
- Obviously the worst case is that there are insufficient anchors in range, so ranging is simply a waste of time and power. It’s important to note that getting a fix is not the only reason for ranging – proximity detection requires just one anchor – but in this case zero anchors nearby would still be a waste of time.
- Anchors positions are degenerate, and the trilateration cannot produce a single result, or any result. An example is when all three anchors appear coincident, or maybe in a straight line.
Given there are more than three anchors available then choosing the three that most closely approximate an equilateral triangle would be good. But how do we know which three are the best without trying to range them first?
One solution is to use a less expensive radio to produce some range estimates. With a BLE radio we can use RSSI to determine which anchors are actually in range. In there are insufficient then there is no point carrying on, unless the ranging radios have greater range. With more than three approximate range estimates we make some informed guesses about the best three to choose.
The problem here is that RSSI-based ranging is notoriously bad. Obstructions, both man, and man-made can cause huge discrepancies.
My idea uses an incremental technique to build an RSSI fingerprint map of the field of interest. The premise is the same eroneous premise as for all fingerprinting techniques – that the RSSI fingerprint will be the same every time the mobile is at the same position. I would extend that using the IMU to include oritentation parameters to take into account which way the user was facing!
My idea is not to rely on RSSI range measurements to get an approximate position. Instead I propose to store an RSSI fingerprint after each successful range operation. The fingerprint will include the anchor identity and TOF-range of the three anchors that contributed to a successful ranging event, and their BLE RSSI values. So each stored fix looks like this.
Fix-n: (a#, ble-rssi), (a#, ble-rssi), (a#, ble-rssi)
where a# is the UID of the anchor, ble-rssi is the rssi value measured on the BLE radio, and tofR is the time-of-flight range.
I assume that each time there is a successful range operation a new record is stored, and at this stage I assume that there is plenty of memory.
So having decided that we need to get an accurate position, we obtain RSSI measurements from the regular BLE broadcasts and use them to locate the best matching RSSI fingerprint, and use that record to select the best three stations for accurate trilateration.