Zurück zum Projektjournal

PROJEKTNOTIZEN / AUTOMOTIVE SENSORIK & EKF

Automotive Radar-Mehrzielverfolgung (kalman-cpp & kalman)

Deterministische C++17-Wahrnehmungs-Engine mit Extended-Kalman-Filterung, Munkres-Bipartiter Datenassoziation und ISO-26262-ASIL-B-Zustandsmanagement, begleitet vom theoretischen Leitfaden und der Python/Jupyter-Testumgebung.

Automotive Radar-Mehrzielverfolgung (MTT)
Extended-Kalman-Filter (EKF) mit polaren Jacobi-Matrizen
Munkres-Bipartite Datenassoziation (O(n·m²))
ISO 26262 ASIL B / Heap-freier Determinismus

AUTOMOTIVE EMBEDDED C++ & PYTHON RESEARCH / EXTENDED KALMAN FILTER & MULTI-TARGET TRACKING

Deterministische C++17-Sensorik-Engine: Nichtlineare polare Zustandsschätzung & Track-Lifecycle

Dieses Projekt bietet eine automotive-taugliche Mehrzielverfolgungs-Pipeline (MTT), die eine deterministische C++17-Produktions-Engine (kalman-cpp) mit einer mathematischen Forschungs- und Validierungsumgebung (kalman) vereint. Entwickelt nach ISO 26262 ASIL B und MISRA C++, erfasst das System Rohradardaten in Polarkoordinaten (Entfernung r, Azimut θ und Doppler-Radialgeschwindigkeit vr), überführt die Schätzungen mittels Extended-Kalman-Filter (EKF) in kartesische Koordinaten [x, y, vx, vy], führt globale Mess-Track-Assoziationen über den Munkres-Algorithmus durch und sichert einen strengen Track-Lifecycle ohne jede dynamische Heap-Allokation.

Automotive Radar-Mehrzielverfolgung in Aktion (Dear ImGui & DirectX 11) — Echtzeit-Telemetrie, 2D-BEV-Radar-Scope, Extended-Kalman-Filter-Zustandsschätzung, Munkres-Datenassoziation und Track-Lifecycle-Management.
01

Nichtlineares Beobachtungsmodell & Polare Jacobi-Matrix

Radarmessungen entstehen im nichtlinearen Polarraum: r = √(x² + y²), θ = atan2(y, x) und vr = (x·vx + y·vy) / r. Das System leitet die analytische Mess-Jacobi-Matrix H(x) mit Singularitätsschutz bei r → 0 her und bildet 4-DOF kartesische Zustandsabweichungen direkt in den Messraum ab (EKF.hpp).

02

Joseph-Stabilisierte Kovarianz & Mahalanobis-Gating

Um numerischer Divergenz durch Gleitkommagenauigkeit vorzubeugen, nutzt das Filter die symmetrische Joseph-Formulierung: P⁺ = (I − KH)P⁻(I − KH)ᵀ + KRKᵀ. Messkandidaten werden über ein 3-DOF-Chi-Quadrat-Konfidenzgate (dM² = yᵀ S⁻¹ y ≤ 12,84 bei 99,5%) validiert, wodurch Störechos und Geisterziele zuverlässig verworfen werden.

03

Munkres / Ungarische Bipartite Datenassoziation

Löst Zuordnungsmehrdeutigkeiten zwischen Messungen und Tracks global mittels einer heap-freien Implementierung des Ungarischen Algorithmus (DataAssociation.hpp). Die O(n·m²)-Komplexität auf statischen 64×128-Kostenmatrizen verhindert kombinatorische Explosion und lokale Fehlzuordnungen.

04

Deterministischer Track-Lifecycle & ASIL-B-Zustandsautomat

Verwaltet Tracks über einen strikten endlichen Zustandsautomaten (FREE → TENTATIVE → CONFIRMED → COASTED → DELETED). Kandidaten erfordern eine M-aus-N-Bestätigung (3 Treffer in 5 Zyklen) vor der Übergabe an Fahrerassistenzsysteme. Verdeckte Objekte werden bis zu 5 Zyklen rein prädiktiv mitgeführt. Ein ASIL-B-Validitätsflag verhindert Fehlaktivierungen in Notbremssystemen.

Colab ExecutablePython 3.10 • NumPy / Matplotlib • Tested & Verified

Interaktives Automotive-Radar-MTT & EKF-Forschungsnotebook

Führen Sie die vollständige Radar-Mehrzielverfolgungs-Pipeline direkt in der Cloud aus. Führen Sie Monte-Carlo-Simulationen für 4 automobile Validierungsszenarien durch: Konstantgeschwindigkeits-Tracking, temporäre 5-Zyklen-Sensordeckung mit kinematischem Coasting, Clutter-Unterdrückung über Chi-Quadrat-Gating und kreuzende Zieltrajektorien mit globaler Munkres-Datenassoziation.

Szenario 01 (TC_TRK_01)

Einzelfahrzeug mit konstanter Geschwindigkeit & Innovation

Validiert unbeschleunigte 4-DOF-Bewegung (vx=20 m/s). Bestätigt schnelle Kovarianz-Konvergenz innerhalb von 3 Zyklen mit Positions-RMSE < 0,18 m und Geschwindigkeits-RMSE < 0,10 m/s.

Szenario 02 (TC_TRK_02)

Temporäre Verdeckung & kinematisches Coasting

Simuliert 5 aufeinanderfolgende Messausfälle (Verdeckung in Zyklen 25–29). Der ASIL-B-Automat wechselt auf COASTED, propagiert die Kinematik rein prädiktiv und re-assoziiert fehlerfrei.

Szenario 03 (TC_TRK_03)

Clutter-Unterdrückung, Geisterziele & Mahalanobis-Gating

Injiziert hochdichten Falschalarm-Clutter (10 Störechos/Zyklus). Validiert 3-DOF-Chi-Quadrat-Konfidenzellipsoide (dM² ≤ 12,84) und verwirft 100% aller Falschmessungen.

Szenario 04 (TC_TRK_04)

Kreuzende Ziele & globale Munkres/Ungarische Datenassoziation

Evaluiert zwei Fahrzeuge mit 45°-Schnittwinkel und überlappenden Toren. Der O(n·m²)-Munkres-Algorithmus löst die Kostenmatrix global ohne Track-Vertauschung (Track-Swaps).

Colabradar_tracker_demo.ipynb
Colab
[6]TC_TRK_01: Constant Velocity Tracking & Polar Innovation Verification
Python 3 (SymPy / SciPy)Scrollable Cell
# TC_TRK_01: Constant Velocity Tracking & Polar Innovation Verification
np.random.seed(42)
config = TrackerConfig(dt=0.040, sigma_r=0.25, sigma_theta=0.0087, sigma_vr=0.15)
tracker = RadarMTT(config)

true_x, true_y, true_vx, true_vy = 10.0, 2.0, 20.0, 0.0

for frame in range(100):
    # Kinematic propagation
    true_x += true_vx * config.dt
    true_y += true_vy * config.dt

    # Non-linear polar measurement with sensor noise
    r_true = math.sqrt(true_x**2 + true_y**2)
    theta_true = math.atan2(true_y, true_x)
    vr_true = (true_x * true_vx + true_y * true_vy) / r_true

    detection = Detection(
        range_m=r_true + np.random.normal(0, config.sigma_r),
        azimuth_rad=theta_true + np.random.normal(0, config.sigma_theta),
        doppler_mps=vr_true + np.random.normal(0, config.sigma_vr)
    )

    # Predict, global Munkres association, and Joseph-stabilized EKF update
    tracks = tracker.process_frame([detection], timestamp_ms=frame * 40)
Monte Carlo Test Results (TC_TRK_01):
In Google Colab verifiziert
[INIT]Target initialized: x0=10.0m, y0=2.0m, vx=20.0m/s (Heading 0°)
[FRAME 03]Track Status: CONFIRMED (Hit 3/3 in 5-frame confirmation window)
[CONVERGENCE]Position variance P[0,0] stabilized from 5.00 m² to 0.048 m²
[VELOCITY]Velocity variance P[2,2] stabilized from 10.00 (m/s)² to 0.082 (m/s)²
[INNOVATION]Average Normalized Innovation Squared (NIS): 2.87 (within 95% Chi-Square threshold [0.05, 7.81])
[METRICS]Position RMSE: 0.142 m | Radial Velocity RMSE: 0.086 m/s
TC_TRK_01 PASSED: All state estimation bounds and confirmation requirements satisfied.
Deterministische Zustandsschätzung und Mehrzielverfolgung verifiziert anhand automobiler Radargrundwahrheiten.
ColabIn Google Colab öffnen
THEORETISCHES FUNDAMENT & FORSCHUNGSMONOGRAPHIE

Pädagogischer Leitfaden zur Automotive Radar-Mehrzielverfolgung

Vollständige LaTeX-Forschungsmonographie zur mathematischen Formulierung nichtlinearer Zustandspropagierung, kontinuierlicher CWNA-Beschleunigungsmodelle, Chi-Quadrat-Gating, Munkres-Zuordnung und begleitender Python/Jupyter-Testumgebung (kalman-Repository).

Pädagogischer Leitfaden zur Automotive Radar-MTT

Dokumenten-Betrachter wird geladen...

Extended-Kalman-Filterung, Spatial Gating und Track-Lifecycle-Architektur (LaTeX-Monographie)

Architektur- & Verifikationsmetriken (SPEC-SW-RADAR-TRK-001)

Standardkonformität
ISO 26262 ASIL B Architektur · MISRA C++:2008 · ASPICE SWE.4/SWE.6 Testmethodik
Zykluszeit & WCET
25 Hz nominale Abtastrate (40 ms Zyklusbudget) · Worst-Case Execution Time < 0,15 ms
Speicherkonzept
Vollständig heap-frei (kein malloc/new) · Statische feste Puffer (MAX_TRACKS=64, MAX_DETECTIONS=128)
Zustandsmodell
4-DOF kartesischer Zustandsvektor [x, y, vx, vy] · Kontinuierliches CWNA-Beschleunigungsmodell
Lineare Algebra
Header-only statische Matrix-Engine (Matrix.hpp) mit geschlossener 3×3 & 4×4 Invertierung
Visuelle Diagnose
Dear-ImGui-Desktopvisualisierer mit nativem DirectX-11- und Win32-Backend (main_gui.cpp)
Python-Testumgebung
Jupyter-Simulationsumgebung (radar_tracker_demo.ipynb) und automatisierte Python-Validierungssuite
C++ Akzeptanztests
Automatisierte Tests (test_tracker.cpp) für Geradeausfahrt, Überholmanöver, -8 m/s² Notbremsung und Clutter

Duales Wahrnehmungs- und Sensorik-Framework

Gemeinsam bilden kalman-cpp und kalman ein vollständiges Sensorik-Framework: kalman dient als didaktische Forschungs- und Validierungsumgebung (Python, Jupyter und LaTeX-Monographie), während kalman-cpp die deterministische, heap-freie C++17-Produktions-Engine für die Ausführung auf automobilen Steuergeräten (ECUs) bereitstellt.

Fachliche Diskussion & Kommentare0

Offener technischer Austausch mit Revisionsverlauf

Sortierung:

Beitrag zur Diskussion verfassen

Markdown code formatting supported
Lade Diskussion...