- 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.
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).
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.
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.
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.
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.
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.
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.
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.
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).
# 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)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).
Dokumenten-Betrachter wird geladen...
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