# RSSI-Stabilisierung für BLE Indoor Positioning ## Aktuelles Problem Die RSSI-Werte der einzelnen Beacons schwanken stark, obwohl bereits ein Kalman-Filter (Q=1.0, R=50.0) und eine Ausreißer-Erkennung (20 dBm) im Einsatz sind. ## Empfohlene Filter-Pipeline ``` Roher RSSI → Stufe 1: Median-Filter (Fenster 5-7 Werte) — eliminiert Ausreißer automatisch → Stufe 2: Kalman-Filter (Q=0.1, R=3-5) — glättet auf vorgereinigten Daten → Gefilterter RSSI ``` Die Literatur zeigt, dass Median + Kalman zusammen 50-70% weniger Schwankung erzeugen als Kalman allein. ## Maßnahmen nach Priorität ### Hoch (Quick Wins) | Maßnahme | Aufwand | Erwartete Verbesserung | |----------|---------|----------------------| | **Kalman-Parameter anpassen** (Q=0.5, R=10.0 statt Q=1.0, R=50.0) | 5 Min | 30-40% stabileres RSSI | | **Median-Vorfilter** (Sliding Window, Fenster=5) vor dem Kalman-Filter | 1-2 Std | 50-70% weniger Ausreißer | | **ESP32 Advertising Interval** auf 20-30ms senken | 30 Min | Mehr Datenpunkte für Aggregation | ### Mittel | Maßnahme | Aufwand | Erwartete Verbesserung | |----------|---------|----------------------| | **ESP32 TX Power** auf 0 oder -3 dBm (weniger Multipath-Reflexionen) | 15 Min | 10-20% weniger Multipath | | **Empirische R-Kalibrierung** (60s Roh-RSSI bei 1m loggen, Varianz = R) | 30 Min | Optimale Kalman-Parameter | | **ScanFilter auf UUID** setzen (weniger CPU-Last durch irrelevante Geräte) | 15 Min | Weniger Overhead | | **Adaptiver Kalman-Filter** (R dynamisch aus letzten N Messungen berechnen) | 3-4 Std | 15-25% bessere Dynamik | ### Niedrig (für Bachelorarbeit erwähnenswert) | Maßnahme | Aufwand | Erwartete Verbesserung | |----------|---------|----------------------| | **Sensor Fusion mit IMU** (Accelerometer + Gyroskop, Pedestrian Dead Reckoning) | 2-3 Tage | 25-30% bessere Position | | **Partikel-Filter** auf Positionsebene | 1-2 Tage | 15-24% bessere Position | | **Machine Learning** (Fingerprinting mit Random Forest) | Mehrere Tage | Situationsabhängig | ## Kalman-Parameter Tuning | Szenario | Q (Process Noise) | R (Measurement Noise) | |----------|-------------------|----------------------| | Aktuell (suboptimal) | 1.0 | 50.0 | | Quick Fix (ohne Median) | 0.5 | 10.0 | | Mit Median-Vorfilter | 0.1 | 3.0 - 5.0 | **R empirisch bestimmen:** Smartphone 1m vor Beacon halten, 60s Roh-RSSI loggen, Varianz berechnen = R. Typische BLE-Varianz: 4-25 dBm². ## Hardware-Empfehlungen (ESP32) - **Advertising Interval**: 20-30ms (statt Standard 100ms) → mehr Messpunkte - **TX Power**: 0 dBm oder -3 dBm (reicht für 3.5x4.5m Raum, reduziert Wandreflexionen) - **Channel Map**: `ADV_CHNL_ALL` — alle 3 Advertising-Kanäle nutzen (minimiert frequenzspezifisches Fading) ## Quellen - [Improved BLE Indoor Localization with Kalman-Based Fusion (PMC)](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5461075/) - [Kalman Filters Explained: Removing Noise from RSSI Signals (Wouter Bulten)](https://www.wouterbulten.nl/posts/kalman-filters-explained-removing-noise-from-rssi-signals/) - [BLE Channel Diversity, Weighted Trilateration and Kalman Filtering (PMC)](https://pmc.ncbi.nlm.nih.gov/articles/PMC5750706/) - [Influence of Kalman Filtering on RSSI in Multi-node BLE (ResearchGate 2024)](https://www.researchgate.net/publication/383239178) - [Practice of BLE RSSI Measurement for Indoor Positioning (MDPI)](https://www.mdpi.com/1424-8220/21/15/5181)