Distance source priority:
1. BLE Range notify from wearable TAG (cm-accurate, live)
2. MQTT saltybot/uwb/range from Orin anchors
3. GPS coordinate diff — fallback only
Changes:
- SensorManager: add DistanceSource enum (blueUWB/mqttUWB/gps);
replace updateDistance() with updateDistanceToRobot() that checks
fresh BLE anchors first, then MQTT UWB ranges, then GPS; subscribe
to ble.$anchors so every Range notify triggers re-evaluation;
also trigger on MQTT UWB range arrival and BLE disconnect
- ContentView: distanceRow now shows source label and icon:
green + "UWB (BLE tag)" when BLE anchors are fresh
mint + "UWB (Orin anchors)" when MQTT UWB ranges are fresh
orange + "GPS estimate" fallback; prefixed with ~ to signal
UWB shows cm precision (e.g. "3.84 m"), GPS shows integer metres
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
saltylab-ios
SaltyBot iOS Companion App (Sul-Tee) — Swift/SwiftUI, sensor streaming for follow-me mode
Description
SaltyBot iOS Companion App (Sul-Tee) — Swift/SwiftUI, sensor streaming for follow-me mode