🚦 Verkehrsstau-Prädiktor — Kalman-Filter live
Beobachten Sie, wie ein echter Kalman-Filter live verrauschte simulierte Sensormesswerte fusioniert, um die Verkehrsgeschwindigkeit eines Straßenabschnitts zu schätzen und vorherzusagen — und dabei die Unsicherheit mit jedem Messwert-Update tatsächlich verringert. Stellen Sie Prozess- und Messrauschen ein, lösen Sie Stau-Ereignisse und Sensorausfälle aus und beobachten Sie, wie die Kovarianz genau so schrumpft und wächst, wie es die Gleichungen vorhersagen.
Über diese Simulation
Geschwindigkeitsmesswerte von Straßensensoren sind verrauscht — eine einzelne Induktionsschleife oder ein Radardetektor kann von einem Messwert zum nächsten um mehrere km/h schwanken —, doch Verkehrsmanagementsysteme benötigen eine glatte, vertrauenswürdige, laufend aktualisierte Schätzung, wie schnell ein Abschnitt tatsächlich befahren wird. Diese Simulation implementiert einen echten Kalman-Filter über ein 2-Zustands-Modell — Geschwindigkeit und ihren kurzfristigen Trend —, das den echten Predict-Schritt (Zustandsextrapolation über die Zustandsübergangsmatrix, plus Wachstum der Prozessrauschen-Kovarianz) und den echten Update-Schritt (Berechnung des Kalman-Gains aus der Innovationskovarianz, Zustandskorrektur und eine numerisch robuste Kovarianzreduktion in Joseph-Form) gegen simulierte verrauschte Sensormesswerte für einen Straßenabschnitt ausführt. Nichts hier ist ein erfundener exponentieller Glätter: Jede Zahl im Statistik-Panel — der Kalman-Gain, die Kovarianz P₀₀, der laufende RMSE — stammt direkt aus denselben linearen-Algebra-Gleichungen, die Rudolf Kálmán 1960 veröffentlichte.
🔬 Was es zeigt
Eine verborgene „wahre“ Straßengeschwindigkeit entwickelt sich mit einem langsamen Trend plus Zufälligkeit und kann durch injizierte Ereignisse in einen Stau gedrängt werden, die das Freifluss-Ziel absacken lassen und wieder erholen. Ein simulierter Sensor meldet diese wahre Geschwindigkeit plus Gauß'sches Rauschen in festem Intervall. Der Kalman-Filter sagt bei jedem Tick vorwärts voraus — seine Unsicherheit wächst — und korrigiert sich, sobald ein Messwert eintrifft — seine Unsicherheit schrumpft —, während eine 3D-Autobahnszene Verkehrsdichte und -geschwindigkeit zeigt und ein Live-Diagramm die wahre Geschwindigkeit, die verrauschten Messwerte, die Kalman-Schätzung und ihr schrumpfend-dann-wachsendes ±1σ-Konfidenzband sowie eine gestrichelte Mehrschritt-Vorausprojektion darstellt.
🎮 Bedienung
Stellen Sie das Prozessrauschen Q ein, um zu steuern, wie sehr der Filter plötzlichen Änderungen gegenüber seinem eigenen Modell vertraut, und das Messrauschen R, um zu steuern, wie verrauscht der simulierte Sensor ist (und damit, wie sehr der Filter jedem Messwert vertraut). Klicken Sie auf Stau auslösen, um einen realistischen Geschwindigkeitsabfall und dessen Erholung auszulösen, oder auf Sensorausfall, um Messungen für 8 Sekunden auszusetzen und zu beobachten, wie sich das Konfidenzband ohne eintreffende Korrekturen sichtbar verbreitert — um sich dann in dem Moment, in dem ein frischer Messwert eintrifft, wieder scharf zu verengen.
💡 Wussten Sie schon?
Der Kalman-Filter, der den simulierten Geschwindigkeitssensor dieser Simulation fusioniert, ist mathematisch derselbe Schätzer, der die Apollo-Missionen zum Mond führte, und moderne Varianten laufen noch heute im GPS-Chip Ihres Telefons, im Spurhalteassistenten Ihres Autos und in stadtweiten adaptiven Ampelnetzwerken — alle führen genau diesen Predict/Update-Tanz aus, nur mit reichhaltigeren Zustandsvektoren.
Häufig gestellte Fragen
Wie kombiniert ein Kalman-Filter einen verrauschten Geschwindigkeitssensor mit einem Bewegungsmodell?
Der Filter führt eine Zustandsschätzung — hier: Straßengeschwindigkeit und ihr kurzfristiger Trend — sowie eine Kovarianzmatrix, die beschreibt, wie unsicher diese Schätzung ist. Bei jedem Tick läuft ein Predict-Schritt: Der Zustand wird mit einem einfachen Bewegungsmodell nach vorne extrapoliert (x⁻ = Fx), und die Kovarianz wächst, um das Prozessrauschen widerzuspiegeln (P⁻ = FPFᵀ + Q). Trifft ein neuer verrauschter Sensormesswert ein, berechnet ein Update-Schritt den Kalman-Gain K = P⁻Hᵀ(HP⁻Hᵀ + R)⁻¹, verschiebt den Zustand um K mal die Innovation in Richtung des Messwerts und verkleinert die Kovarianz. Der Gain gleicht automatisch das Vertrauen zwischen Modell und Sensor anhand ihrer jeweiligen Unsicherheiten aus — er ist kein fester Glättungsfaktor.
Was steuern die Regler für Prozessrauschen Q und Messrauschen R eigentlich?
Q ist die vom Filter angenommene Prozessrauschen-Intensität: Sie legt fest, wie stark der Zustand zwischen Messwerten während des Predict-Schritts abdriften darf, wodurch die Kovarianzmatrix P um einen Betrag wächst, der aus einem diskretisierten Weißes-Rauschen-Beschleunigungsmodell abgeleitet ist. Ein größeres Q macht den Filter reaktionsschneller, aber auch verrauschter. R ist die angenommene Messrauschen-Varianz, gekoppelt an die tatsächliche Rauschstandardabweichung des simulierten Sensors. Ein größeres R macht den Kalman-Gain kleiner, sodass jeder neue Messwert die Schätzung weniger verschiebt, weil der Filter seiner eigenen Vorhersage mehr vertraut als einem verrauschten Sensor.
Warum schrumpft die Unsicherheit der Schätzung nach jedem Update, wächst aber zwischen den Updates?
Der Predict-Schritt addiert bei jedem Tick die Prozessrauschen-Kovarianz Q zu P, sodass die Varianz der Geschwindigkeitsschätzung strikt zunimmt, solange keine neue Information eintrifft. Der Update-Schritt wendet dann die Kovarianzformel in Joseph-Form an: P = (I−KH)P⁻(I−KH)ᵀ + KRKᵀ, die mathematisch garantiert eine Kovarianz erzeugt, die nicht größer ist als P⁻, solange R positiv ist — der Sensormesswert, wie verrauscht auch immer, entfernt immer etwas Unsicherheit. Die Live-P₀₀-Anzeige und das Konfidenzband machen dieses Wachsen-dann-Schrumpfen-Sägezahnmuster direkt sichtbar.
Was passiert bei einem Sensorausfall, und warum verbreitert sich das Konfidenzband?
Ein Klick auf „Sensorausfall“ setzt Messwert-Updates für 8 simulierte Sekunden aus, sodass der Filter den Predict-Schritt wiederholt ohne korrigierendes Update dazwischen ausführt. Jeder Predict-Schritt fügt weiterhin Prozessrauschen-Kovarianz hinzu, sodass die Varianz ungebremst weiter anwächst und sich das ±1σ-Konfidenzband der Schätzung im Diagramm sichtbar verbreitert — genau das zeigt die gestrichelte Mehrschritt-Vorausprojektion auch außerhalb eines Ausfalls in die nahe Zukunft, eine originalgetreue Darstellung von Koppelnavigation.
Ist das dieselbe Mathematik, die in echten Verkehrsmanagementsystemen verwendet wird?
Im Wesentlichen ja. Echte intelligente Verkehrssysteme fusionieren Messwerte von Induktionsschleifen, Radar oder GPS-Sonden mittels Kalman-Filtern oder eng verwandter Varianten, manchmal erweitert auf Vektorzustände über mehrere Abschnitte oder auf schaltende Modelle, die zusätzlich das Verkehrsregime schätzen. Diese Simulation verwendet den echten skalaren Positions-/Trend-Kalman-Filter mit den Standard-Predict-Update-Gleichungen statt eines handjustierten Glätters, sodass der Gain, das Kovarianzwachstum und die Kovarianzreduktion, die Sie sehen, die echte Sache sind.
Warum enthält der Zustand einen Trendterm, statt nur die Geschwindigkeit allein zu verfolgen?
Ein 1-Zustands-Filter, der nur die Geschwindigkeit verfolgt, muss jede Abweichung als Rauschen behandeln und hinkt daher immer einem echten Trend hinterher, etwa einem Berufsverkehr-Aufbau oder der Erholung nach einem Stau-Ereignis. Ein Trend-Zustand erlaubt es der Zustandsübergangsmatrix F=[[1,dt],[0,1]], die Geschwindigkeit bei jedem Predict-Schritt anhand dieses Trends nach vorne zu extrapolieren, sodass der Filter anhaltende Beschleunigung oder Verzögerung vorwegnimmt, statt erst im Nachhinein zu reagieren — die einfachste Version des Positions-Geschwindigkeits-Modells, das in GPS- und Radar-Tracking verwendet wird.
Ein echter 2-Zustands-Kalman-Filter (Geschwindigkeit, Trend) führt echte Predict- (F, Q) und Update-Gleichungen (Kalman-Gain, Kovarianz in Joseph-Form) gegen simulierte verrauschte Straßensensor-Messwerte aus, mit einstellbarem Prozess- und Messrauschen, Live-Stauinjektion, Sensorausfall und einer Mehrschritt-Vorausvorhersage mit wachsender Unsicherheit.
3D · Three.js/WebGL-Renderer · Ziel: 60 FPS · läuft vollständig clientseitig, keine Installation nötig