- Kurzbeschreibung
„Radar 3D Scope Sim“ ist ein bewusst kompakt gehaltener, aber technisch tief aufgebauter Demonstrator. Das Projekt verbindet eine synthetische 3D-Simulation von Luft- bzw. Seezielen mit einem rotierenden Radar, einer PPI-Anzeige (Plan Position Indicator) und einer SQLite-Datenbank zur speicherbaren Auswertung der Detektionen.
Ziel ist es, in einem überschaubaren Python-Projekt zu zeigen, wie Radargeometrie, einfache Signalverarbeitung (SNR-basierte Detektionslogik) und strukturierte Datenhaltung zusammenwirken können. Alle Daten sind rein synthetisch und dienen ausschließlich der Demonstration und des Lernens.
- Hintergrund und Zielsetzung
Moderne maritime und luftgestützte Systeme werden zunehmend durch Simulationen und Datenanalysen unterstützt. Gerade im Kontext von Signaturen, Sensorik und Detektionsreichweiten ist es wichtig, Zusammenhänge nachvollziehbar und reproduzierbar darzustellen. Dieses Projekt bietet hierfür einen kleinen, aber vollständigen Workflow von der Szenariodefinition über die Simulation bis zur Visualisierung.
Der Fokus liegt nicht auf physikalisch exakten Modellen, sondern auf einer klaren Strukturierung der technischen Fragestellung:
Wie lassen sich Ziele in einem 3D-Raum beschreiben?
Wie rotiert ein Radar, und welche Rolle spielen Strahlbreite und Drehgeschwindigkeit?
Welche Parameter steuern die Detektion (RCS, Entfernung, SNR-Schwelle)?
Wie können die Ergebnisse dauerhaft in einer Datenbank abgelegt und ausgewertet werden?
- Funktionsumfang im Überblick
Das Projekt stellt u. a. folgende Funktionen bereit:
Simulation eines 3D-Zielszenarios mit mehreren synthetischen Zielen (x- und y-Position in Kilometern, Höhe in Metern, konstante Geschwindigkeit).
Modellierung eines rotierenden Radars mit konfigurierbarer Maximalreichweite, Strahlbreite und Drehgeschwindigkeit (RPM).
Einfaches SNR-Modell (Signal-zu-Rausch-Verhältnis) auf Basis von RCS in dBsm, Entfernung und Referenzparametern.
Schreiben aller Detektionen in eine SQLite-Datenbank (Tabelle detection_log).
Kommandozeilen-Interface zur Initialisierung der Datenbank, Ausführung der Simulation und textuellen Zusammenfassung.
Erzeugung von Visualisierungen:
Radar-PPI (Polardarstellung in Polarkoordinaten)
3D-Trajektorien der Ziele → geeignet zur Einbettung in technische Berichte, Präsentationen oder ein GitHub-README.
- Technische Architektur und Projektstruktur
Das Projekt ist als kleines, modulbasiertes Python-Paket organisiert. Die Struktur erleichtert Wartung, Wiederverwendbarkeit und Erweiterbarkeit.
Projektstruktur
radar-3d-scope-sim/ README.md requirements.txt .gitignore src/ radarsim/ init.py config.py db.py models.py simulation.py visualization.py cli.py docs/ figures/ (wird von export_figures.py erzeugt) export_figures.py
Wichtige Module
config.py – zentrale Definition von Pfaden (Projektwurzel, Datenbankdatei).
db.py – Aufbau der SQLite-Tabellen und Einfügen von Demo-Daten (Seed-Funktion).
models.py – Dataklassen für Radar-, Szenario- und Zielkonfiguration.
simulation.py – Kernlogik zur zeitlichen Integration der Zielbewegungen und Detektionsentscheidung.
visualization.py – Funktionen zur Erzeugung des Radar-PPI und der 3D-Trajektorienplots.
cli.py – Kommandozeilen-Frontend mit Befehlen init, simulate, summary.
export_figures.py – Hilfsskript zur automatischen Erzeugung exemplarischer Abbildungen im Ordner docs/figures.
- Datenmodell (SQLite-Datenbank)
Die SQLite-Datenbank bildet das Rückgrat der Simulation. Sie erlaubt es, Konfigurationen und Detektionsergebnisse reproduzierbar zu speichern und beliebig oft auszuwerten.
Zentrale Tabellen:
radar_config Konfiguration eines Radars (z. B. Maximalreichweite, Strahlbreite, Drehgeschwindigkeit, Referenz-RCS, Referenz-Entfernung, Referenz-SNR, SNR-Schwelle).
targets Stammdaten der Ziele: Name, Zieltyp (z. B. Corvette, Frigate) und Radar-Querschnitt (RCS) in dBsm.
scenarios Metadaten zu Szenarien, insbesondere Dauer in Sekunden und Zeitschritt dt_s.
scenario_targets Instanzen von Zielen in einem Szenario mit Startposition (x0_km, y0_km), Höhe (altitude_m) und Geschwindigkeit (vx_kmh, vy_kmh).
detection_log Zeitlich aufgelöste Detektionsdaten: Zeit t_s, Ziel-ID, Entfernung range_km, Azimut az_deg, Elevation el_deg, berechnetes snr_db sowie ein Detektionsflag detected (0/1).
Dieses Datenmodell trennt sauber zwischen:
statischen Parametern (z. B. Radar- und Zielkonfiguration) und
dynamischen Ergebnissen (Detektionen über die Zeit).
- Radarmodell und Simulation
Jedes Ziel wird in einem kartesischen Koordinatensystem beschrieben:
x [km] – Ostwert
y [km] – Nordwert
Höhe [m] – intern als Kilometer (z_km) dargestellt
Die Bewegung erfolgt mit konstanter Geschwindigkeit in der Ebene:
vx_kmh – Geschwindigkeit in x-Richtung [km/h]
vy_kmh – Geschwindigkeit in y-Richtung [km/h]
Für einen Zeitschritt t ergibt sich (einfache gleichförmige Bewegung):
t_h = t_s / 3600 (Umrechnung Sekunden → Stunden)
x(t) = x0 + vx * t_h
y(t) = y0 + vy * t_h
Aus x(t) und y(t) werden Entfernung und Azimut berechnet:
R = sqrt(x² + y²)
φ = atan2(y, x) (in Grad, Bereich 0° … 360°)
Das Radar besitzt:
eine Drehgeschwindigkeit in Umdrehungen pro Minute (RPM)
eine Strahlbreite in Grad
Für jeden Zeitschritt wird die aktuelle Antennenrichtung berechnet:
φ_radar(t) = (t * RPM * 360 / 60) mod 360
Ein Ziel wird nur dann betrachtet, wenn:
sein Azimut φ_target innerhalb der halben Strahlbreite um φ_radar liegt, d. h. der kleinste Winkelunterschied kleiner als beam_width_deg / 2 ist.
Ziele außerhalb der Maximalreichweite oder außerhalb des Strahls werden verworfen.
Das Projekt verwendet ein stark vereinfachtes SNR-Modell:
Ausgangspunkt ist eine Referenz-RCS σ_ref (in dBsm) und eine Referenz-Entfernung R_ref (in km).
Für ein Ziel mit RCS σ (dBsm) ergibt sich eine Differenz Δσ = σ − σ_ref.
Die Entfernungsabhängigkeit wird als Dämpfung −20·log10(R / R_ref) modelliert.
Aus Referenz-SNR und diesen Termen wird ein synthetischer SNR-Wert snr_db berechnet. Liegt snr_db oberhalb der konfigurierten SNR-Schwelle, wird das Ziel im betreffenden Zeitschritt als detektiert betrachtet und ein Eintrag in detection_log erzeugt.
Dieses Modell ist nicht als realitätsgetreue Beschreibung eines Radars gedacht, sondern als strukturierter Rahmen, um die Abhängigkeit der Detektion von RCS, Entfernung und Schwellenwerten nachvollziehbar zu machen.
- Visualisierung
Zur Visualisierung der Simulationsergebnisse werden zwei zentrale Abbildungen erzeugt:
Radar-PPI (Polarplot) Darstellung der detektierten Ziele zu einem ausgewählten Zeitpunkt t_s in Polarkoordinaten:
Radius = Entfernung in km
Winkel = Azimut in Grad Eine optionale Farbkodierung kann zur Unterscheidung der Ziel-IDs verwendet werden.
3D-Trajektorienplot Darstellung der Zielbahnen im 3D-Raum (x, y, Höhe) über die gesamte Simulationsdauer. So lassen sich Flug- bzw. Fahrprofile anschaulich und zeitlich aufgelöst darstellen.
Das Hilfsskript export_figures.py automatisiert diesen Ablauf: Es initialisiert die Datenbank (falls nötig), startet eine Simulation und speichert die Abbildungen im Ordner docs/figures/ (z. B. radar_scope_t60.png, trajectories_3d.png).
- Installation und Ausführung
Die Nutzung erfolgt idealerweise in einer virtuellen Umgebung (venv).
Windows PowerShell= cd radar-3d-scope-sim python -m venv .venv ..venv\Scripts\Activate.ps1 pip install --upgrade pip pip install -r requirements.txt
Wichtige Befehle im Projekt-Root= python -m radarsim.cli init # Datenbank initialisieren und Demo-Daten anlegen python -m radarsim.cli simulate # Demo-Szenario simulieren und Detektionen loggen python -m radarsim.cli summary # Textuelle Zusammenfassung der Treffer je Ziel python export_figures.py # Radar-PPI und 3D-Trajektorien als PNG erzeugen
- Erweiterungsmöglichkeiten
Mögliche sinnvolle Erweiterungen des Projekts sind u. a.:
Einführung mehrerer Radar-Konfigurationen und Szenarien mit Auswahl per CLI-Parameter.
Einbau komplexerer Zielbewegungen (Kurvenflug, Wegpunkte, Manöver).
Verfeinerung des SNR-Modells oder Ergänzung um Rausch- und Clutter-Modelle.
Export der Daten in weitere Formate (CSV, Parquet) oder Visualisierung in interaktiven Dashboards.
Ergänzung um weitere Sensortypen (z. B. einfache IR- oder ESM-Modelle) als konzeptionelle Erweiterung.
- Hinweis zur Nutzung
Das Projekt Radar 3D Scope Sim ist als Demonstrations- und Lernbeispiel konzipiert. Es erhebt keinen Anspruch auf physikalische Vollständigkeit oder realitätsgetreue Leistungswerte. Im Vordergrund stehen:
die saubere Strukturierung des Codes,
die Nachvollziehbarkeit der Modellannahmen und
der durchgängige Workflow von Szenario, Simulation, Datenbank und Visualisierung.