Strona głównaAI i MLPredyktor zatorów drogowych — filtr Kalmana na żywo

🚦 Predyktor zatorów drogowych — filtr Kalmana na żywo

Obserwuj, jak prawdziwy filtr Kalmana łączy na żywo zaszumione symulowane odczyty czujników, aby oszacować i przewidzieć prędkość ruchu na odcinku drogi, rzeczywiście redukując niepewność przy każdej aktualizacji pomiaru. Dostosuj szum procesu i szum pomiaru, wywołaj zdarzenia zatoru i awarie czujnika, i obserwuj, jak kowariancja maleje i rośnie dokładnie tak, jak przewidują równania.

AI i ML3DZaawansowany60 FPS
ai-traffic-congestion-prediction ↗ Otwórz samodzielnie

O tej symulacji

Odczyty prędkości z czujników drogowych są zaszumione — pojedyncza pętla indukcyjna lub detektor radarowy może zmieniać wskazania o kilka km/h z próbki na próbkę — a mimo to systemy zarządzania ruchem potrzebują płynnego, wiarygodnego, stale aktualizowanego oszacowania, jak szybko naprawdę porusza się dany odcinek. Ta symulacja implementuje prawdziwy filtr Kalmana na modelu dwustanowym — prędkości i jej krótkoterminowego trendu — który wykonuje rzeczywisty krok predykcji (ekstrapolacja stanu za pomocą macierzy przejścia stanu, wraz ze wzrostem kowariancji szumu procesu) oraz rzeczywisty krok aktualizacji (obliczenie wzmocnienia Kalmana z kowariancji innowacji, korekta stanu i numerycznie stabilna redukcja kowariancji w postaci Josepha) na symulowanych zaszumionych odczytach czujnika dla jednego odcinka drogi. Nic tutaj nie jest zmyślonym wygładzaczem wykładniczym: każda liczba w panelu statystyk — wzmocnienie Kalmana, kowariancja P₀₀, bieżący RMSE — pochodzi bezpośrednio z tych samych równań algebry liniowej, które Rudolf Kálmán opublikował w 1960 roku.

🔬 Co pokazuje

Ukryta „prawdziwa” prędkość drogi ewoluuje z wolnym trendem i losowością, i może zostać wepchnięta w zator przez wstrzyknięte zdarzenia, które obniżają, a potem przywracają docelową prędkość swobodnego przepływu. Symulowany czujnik zgłasza tę prawdziwą prędkość plus szum gaussowski w stałym interwale. Filtr Kalmana przewiduje naprzód przy każdym takcie — jego niepewność rośnie — i koryguje się za każdym razem, gdy nadejdzie odczyt — jego niepewność maleje — podczas gdy trójwymiarowa scena autostrady pokazuje gęstość i prędkość ruchu, a wykres na żywo kreśli prawdziwą prędkość, zaszumione odczyty, oszacowanie Kalmana oraz jego kurczące się, a potem rosnące pasmo ufności ±1σ, a także przerywaną projekcję wielu kroków naprzód.

🎮 Jak korzystać

Dostosuj szum procesu Q, aby kontrolować, jak bardzo filtr ufa nagłym zmianom w porównaniu z własnym modelem, oraz szum pomiaru R, aby kontrolować, jak bardzo zaszumiony jest symulowany czujnik (a tym samym jak bardzo filtr ufa każdemu odczytowi). Kliknij Wywołaj zator, aby uruchomić realistyczny spadek i powrót prędkości, lub Awaria czujnika, aby zawiesić pomiary na 8 sekund i zobaczyć, jak pasmo ufności widocznie się poszerza bez napływających korekt — a następnie gwałtownie zwęża się ponownie w chwili nadejścia świeżego odczytu.

💡 Czy wiesz, że…?

Filtr Kalmana, który łączy dane symulowanego czujnika prędkości w tej symulacji, jest matematycznie tym samym estymatorem, który prowadził misje Apollo na Księżyc, a jego nowoczesne warianty wciąż działają w chipie GPS twojego telefonu, systemie utrzymania pasa ruchu w samochodzie i miejskich sieciach adaptacyjnej sygnalizacji świetlnej — wszystkie wykonują dokładnie ten sam taniec predykcja/aktualizacja, tylko na bogatszych wektorach stanu.

Najczęściej zadawane pytania

Jak filtr Kalmana łączy zaszumiony czujnik prędkości z modelem ruchu?

Filtr utrzymuje oszacowanie stanu — tutaj prędkość drogi i jej krótkoterminowy trend — a także macierz kowariancji opisującą, jak niepewne jest to oszacowanie. Przy każdym takcie wykonuje krok predykcji: stan jest ekstrapolowany naprzód za pomocą prostego modelu ruchu (x⁻ = Fx), a kowariancja rośnie, odzwierciedlając szum procesu (P⁻ = FPFᵀ + Q). Gdy nadejdzie nowy zaszumiony odczyt czujnika, krok aktualizacji oblicza wzmocnienie Kalmana K = P⁻Hᵀ(HP⁻Hᵀ + R)⁻¹, przesuwa stan w stronę pomiaru o K razy innowację, i zmniejsza kowariancję. Wzmocnienie automatycznie równoważy zaufanie między modelem a czujnikiem na podstawie ich odpowiednich niepewności — nie jest to stały współczynnik wygładzania.

Co właściwie kontrolują suwaki szumu procesu Q i szumu pomiaru R?

Q to zakładana przez filtr intensywność szumu procesu: określa, o ile stan może dryfować między pomiarami podczas kroku predykcji, zwiększając macierz kowariancji P o wartość wyprowadzoną ze zdyskretyzowanego modelu białego szumu przyspieszenia. Większe Q sprawia, że filtr jest bardziej responsywny, ale też bardziej zaszumiony. R to zakładana wariancja szumu pomiaru, powiązana z rzeczywistym odchyleniem standardowym szumu symulowanego czujnika. Większe R sprawia, że wzmocnienie Kalmana jest mniejsze, więc każdy nowy odczyt w mniejszym stopniu przesuwa oszacowanie, ponieważ filtr bardziej ufa własnej predykcji niż zaszumionemu czujnikowi.

Dlaczego niepewność oszacowania maleje po każdej aktualizacji, ale rośnie między aktualizacjami?

Krok predykcji dodaje kowariancję szumu procesu Q do P przy każdym takcie, więc wariancja oszacowania prędkości ściśle rośnie, dopóki nie napłynie żadna nowa informacja. Krok aktualizacji stosuje następnie wzór kowariancji w postaci Josepha P = (I−KH)P⁻(I−KH)ᵀ + KRKᵀ, który matematycznie gwarantuje wynik nie większy niż P⁻, gdy tylko R jest dodatnie — odczyt czujnika, choćby zaszumiony, zawsze usuwa część niepewności. Odczyt P₀₀ na żywo oraz pasmo ufności sprawiają, że ten piłokształtny wzorzec wzrostu i spadku jest bezpośrednio widoczny.

Co dzieje się podczas awarii czujnika i dlaczego pasmo ufności się poszerza?

Kliknięcie „Awaria czujnika” zawiesza aktualizacje pomiarowe na 8 symulowanych sekund, więc filtr wielokrotnie wykonuje krok predykcji bez korygującej aktualizacji pomiędzy nimi. Każdy krok predykcji nadal dodaje kowariancję szumu procesu, więc wariancja narasta bez ograniczeń, a pasmo ufności ±1σ oszacowania widocznie poszerza się na wykresie — dokładnie to, co przerywana projekcja wielu kroków naprzód pokazuje jako dziejące się w bliskiej przyszłości nawet poza awarią — wierna ilustracja nawigacji zliczeniowej.

Czy to ta sama matematyka, która jest używana w rzeczywistych systemach zarządzania ruchem?

Zasadniczo tak. Rzeczywiste inteligentne systemy transportowe łączą odczyty prędkości z pętli indukcyjnych, radarów lub sond GPS za pomocą filtrów Kalmana lub ich bliskich wariantów, czasem rozszerzonych do wektorowych stanów obejmujących wiele odcinków lub modeli przełączających, które szacują też panujący reżim ruchu. Ta symulacja wykorzystuje prawdziwy skalarny filtr Kalmana pozycji/trendu ze standardowymi równaniami predykcji-aktualizacji, a nie ręcznie dostrojony wygładzacz, więc wzmocnienie, wzrost kowariancji i redukcja kowariancji, które widzisz, są prawdziwe.

Dlaczego stan zawiera składnik trendu zamiast śledzić samą prędkość?

Filtr jednostanowy, śledzący tylko prędkość, musi traktować każde odchylenie jako szum, więc zawsze pozostaje w tyle za rzeczywistym trendem, takim jak narastanie korka w godzinach szczytu czy powrót po zatorze. Dodanie stanu trendu pozwala macierzy przejścia stanu F=[[1,dt],[0,1]] ekstrapolować prędkość naprzód z uwzględnieniem tego trendu przy każdym kroku predykcji, więc filtr przewiduje dalsze przyspieszanie lub zwalnianie, zamiast reagować dopiero po fakcie — to najprostsza wersja modelu pozycja-prędkość wykorzystywanego w śledzeniu GPS i radarowym.

⚙ Pod maską

Prawdziwy dwustanowy (prędkość, trend) filtr Kalmana wykonuje rzeczywiste równania predykcji (F, Q) i aktualizacji (wzmocnienie Kalmana, kowariancja w postaci Josepha) na symulowanych zaszumionych odczytach czujnika drogowego, z regulowanym szumem procesu i pomiaru, wstrzykiwaniem zatoru na żywo, awarią czujnika oraz predykcją wielu kroków naprzód o rosnącej niepewności.

Kalman FilterSensor FusionKalman GainCovariance

3D · Renderer Three.js / WebGL · cel 60 FPS · działa w całości po stronie klienta, bez instalacji

Co znalazłeś/aś?

Dodaj kroki odtworzenia (opcjonalnie)