Kontext
Ich wollte herausfinden, ob inertiale Messungen UWB-Positionierung stabilisieren können und wie sich der Effekt unter unterschiedlichen Sichtbedingungen verhält.
Ansatz
Die DW3000-Bibliothek wurde für die benötigten DS-TWR-Messungen angepasst. Der ESP32 erfasste UWB mit 5 Hz und IMU-Daten mit 50 Hz, versah beide Ströme mit Zeitstempeln und sendete sie per MQTT. Im Backend wurden sie synchronisiert, vorverarbeitet und gegen Ground Truth ausgewertet.
System
- Makerfabs ESP32 UWB-DW3000: ESP32-Wrover und DW3000, UWB-Kanal 5, IEEE 802.15.4z MAC
- C++ mit für ESP32 angepasstem Arduino-Framework, DW3000-Bibliothek und Adafruit BNO08x
- BNO085: lineare Beschleunigung und Game Rotation Vector / Quaternion über I²C
- ESP32 Dual-Core: parallele Erfassung, Zeitstempel und MQTT-Übertragung
- Backend: Streams synchronisieren, Trilateration, EKF, Ground Truth und Fehleranalyse
Technische Entscheidungen
- Anker werden in einer Discovery-Phase gefunden; Adressen und Konfiguration werden ausgetauscht und Antworten zeitlich eingeplant, bevor das DS-TWR-Ranging beginnt.
- Die asynchronen UWB- und IMU-Ströme werden im Backend anhand ihrer Zeitstempel zusammengeführt.
- LOS, WLOS und NLOS getrennt auswerten: ein Filter kann zufälliges Rauschen glätten, aber systematischen Bias nicht automatisch erkennen.
Was nicht funktioniert hat
Im WLOS-Szenario lag der RMSE bei 0,520 m für Trilateration und 0,518 m für den EKF – nur 0,4 % Unterschied. Der Filter reduzierte hochfrequentes Rauschen, erkannte den annähernd konstanten Wand-Bias aber nicht. Im NLOS-Szenario fehlten rohe UWB-Trilaterationswerte während 85,5 % der Messzeit; der Vergleichs-RMSE von 0,608 m beschreibt nur die verbleibenden Messungen.
Ergebnis
LOS: RMSE 0,078 m → 0,056 m (28,2 %); 95%-CDF 0,139 m → 0,086 m. WLOS: 0,520 m → 0,518 m. NLOS: 0,608 m auf den verfügbaren 14,5 % der Rohmessungen gegenüber 0,219 m für die kontinuierliche EKF-Schätzung.
Messwerte
LOS
- Trilateration
- Trilateration · RMSE 0,078 m · 95%-CDF 0,139 m
- EKF / Fusion
- EKF · RMSE 0,056 m · 95%-CDF 0,086 m
28,2 % weniger RMSE; 38,1 % weniger Fehler am 95%-Punkt.
WLOS · eine Wand
- Trilateration
- Trilateration · RMSE 0,520 m · 95%-CDF 0,858 m
- EKF / Fusion
- EKF · RMSE 0,518 m · 95%-CDF 0,817 m
Nur 0,4 % RMSE-Verbesserung; der Wand-Bias bleibt bestehen.
NLOS · starke Abschattung
- Trilateration
- Trilateration · RMSE 0,608 m auf verfügbaren Messungen
- EKF / Fusion
- EKF · RMSE 0,219 m über den gesamten Verlauf
64 % geringerer RMSE, aber Roh-UWB fehlte 85,5 % der Zeit. Die beiden RMSE-Werte beruhen deshalb auf unterschiedlicher Datenverfügbarkeit.
Was ich mitgenommen habe
Auf dem Papier sieht ein Filter sauber aus. Auf dem Tisch reicht manchmal eine Wand, ein Timingproblem oder ein schlechter Messwert, um die eigentliche Herausforderung sichtbar zu machen.
Was das Ergebnis nicht sagt
Der NLOS-Vergleich ist nicht symmetrisch: Trilateration konnte nur für die wenigen Zeitpunkte mit ausreichenden UWB-Messungen berechnet werden. Ihr RMSE von 0,608 m ist damit statistisch günstig verzerrt. Der EKF lieferte während der UWB-Ausfälle weiter eine Schätzung, indem er die Bewegung mit IMU-Daten vorhersagte.
Grenzen des Versuchs
Die Messung beantwortet eine engere Frage als „funktioniert Indoor-Ortung?“: Sie vergleicht drei Sichtbedingungen unter einem kontrollierten Versuchsaufbau.
- Stop-and-go auf einer vordefinierten, ungefähr 1,7 m langen linearen Strecke; komplexe dynamische 2D-Bewegungen wurden nicht untersucht.
- Die Anker standen in einer günstigen Geometrie. Schlecht konditionierte Anordnungen wurden nicht systematisch vermessen.
- Q und R wurden empirisch festgelegt und blieben in allen Szenarien statisch. Ein adaptives, NLOS-bewusstes Rauschmodell könnte WLOS anders behandeln.
- Synchronisierung und EKF liefen offline im Backend, nicht echtzeitig auf dem ESP32.