01 / 05 ARBEIT / PROJEKT← Alle Arbeiten

Embedded Systems · Sensorfusion · Forschung

UWB / IMU Indoor Positioning

Geometrischer Fehler, Sensorfusion und was passiert, wenn eine Wand ins Experiment kommt.

Ein Indoor-Ortungssystem mit ESP32-Wrover, DW3000 und BNO085. Unter freier Sicht half die Fusion; mit einer Wand dazwischen wurde der systematische Fehler wichtiger als das Rauschen.

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
Eigenes Schema: Der ESP32 versieht UWB- und IMU-Ströme mit Zeitstempeln, sendet sie über MQTT und das Backend synchronisiert und wertet sie aus.
Der ESP32 erfasst und versieht Messwerte mit Zeitstempeln; Synchronisierung und Schätzung laufen im Backend.
SYSTEMSCHICHTEN
HardwareFirmwareNetworkBackend

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.