- IoT Final Project -
WiFi & BlueTooth Localization
Richie Young
Initial Goal
- Get several vehicles to autonomously converge on a point
- Very ambitious!!
- Too many subproblems for one person in a few weeks
- Decided to scale back to just the localization subproblem
- In order to get good results, we would first need good localization
Modified Goal
- Default project with a small twist
- Use Bluetooth at similar range to Wifi
- Get readings simultaneously
- Compare results
- Try to combine if beneficial
- How will bluetooth perform at a range of several meters compared to WiFi?
- Can we use both to get a better result?
Methods
- Bluetooth beacons placed to form smaller square than WiFi beacons to avoid interference from tables
- WiFi & BT RSSI measurements (100 samples each) taken at 32 points within the inner bounding box
Data
- Bluetooth beacons placed to form smaller square than WiFi beacons to avoid interference from tables
- WiFi & BT RSSI measurements (100 samples each) taken at 32 points within the inner bounding box
Data - Raw


Data
- Clear variations in RSSI were visible
- Lots of noise
- Solution: Low Pass Filter
- Chebyshev Type 1 Filter chosen for steep roll-off

Filtered Data


Localization
- We have some pretty clean data to work with (in most cases)
- First: Channel model
- Used the common channel model
- rssi = -10n * log(distance) + power
- Constants chosen experimentally to minimize error
def rssiDistance(rssi, power, n):
return (10.0 ** ((power - rssi) / (10.0 * n))) * 100.
def blueDistance(rssi, power=-62.0):
return 0.5 * rssiDistance(rssi, power, 2.6)
def wifiDistance(rssi, power=-32.0):
return math.sqrt(abs(((240 ** 2) - ((0.8 * rssiDistance(rssi, power, 3.0)) ** 2))))Localization
- Localization Algorithms (TarrĂo, Bernardos, Casar):
- Unweighted Hyperbolic
- Unweighted Circular
- Weighted Circular
- Methods:
- Used numpy & scipy for computation and optimization
- Results:
- Weighting was absolutely necessary
- Best error function:

e = lambda i: ((distance(guess, anchorPositions[i]) - anchorDistances[i][-1]) ** 2) / weight[i]







Discussion
- Best Results (Weighted Circular):
- Mean Error (WiFi): 1.4M
- Mean Error (BT): 0.7M
- Unweighted Algorithms were not viable at all
- In a space this small, not much variation in RSSI
- Noise is a better indicator of distances of this order
Future Work
- WiFi worked best in the middle of the room (larger range)
- Bluetooth worked best closest to the beacons
- Try combining WiFi & Bluetooth
- Weight Bluetooth very high if readings indicate close to a beacon
- Weight WiFi very high if readings indicate middle of room
- Should be easy to implement (change weight term)
- Try to implement the consensus algorithm!
- Better filtering will be needed for moving nodes
- Need to improve sampling rate
- Write custom sampling code in C
Challenges
- Initial goal was too ambitious
- Took a lot of tweaking to get decent results
- Was very discouraging for a while
- Working alone: horrible idea
- I don't know much about signal processing
- Taking data was extremely tedious
- Was worth it in the end though
Questions?
IoT Final Project
By Ada Young
IoT Final Project
- 237