|
Algorithm II. Inertial-Based Shifting Trilateration. |
| Input: Asynchronous readers’ detections, raw inertial sensor data |
| Output: Updated Absolute Tag Location (ATL) |
| 1: initialize tag memory: empty Detections, IS, TDV |
| 2: while (tag is not detected) |
| 3: Do record data from inertial sensors in IS table |
| 4: End While |
| 5: Read Detections, IS, and TDV tables // a tag is detected
|
| 6: Update Detections table with current detection |
| 7: If (Detections table has 2 entries) |
| 8: Calculate displacement vector(s) based on IS table |
| 9: = Circle around coordinates in by a radius of
|
| 10: = the circle around the current reader by a radius of RSSI mapped detection range |
| 11: Calculate the set of intersection points between and
|
| 12: All intersection points are reported to a central server as
|
| 13: Else if (Detections table has 3 entries) // check for enough detections to perform IBST
|
| 14: Calculate displacement vector(s) based on IS table |
| 15: = Circle around coordinates in by a radius of
|
| 16: = Circle around coordinates in by a radius of
|
| 17: = the circle around the current reader by a radius of RSSI mapped detection range |
| 18: Calculate the set of intersection points A’s between and
|
| 19: Calculate the set of intersection points B’s between and
|
| 20: If (there are 2 intersections between and ) |
| 21: = of min , |
| 22: Else if (there are 4 intersections between and ) |
| 23: = of min , |
| 24: = of min , |
| 25: Update Detections table with and TDV table with , go to 2 |
| 26: Else (there is no intersection between and ) |
| 27: Find vector from find for =1 to 4 |
| 28: = of min , |
| 29: End if |
| 30: Report ATLi to a central database server |
| 31: Update Detections table with and TDV table with , go to 2 |
| 32: Else |
| 33: go to 2
|
| 34: End If |