Scientific validation: production radar transmit waveforms¶
Verified against versioned deterministic fixtures. This report covers
rfgen.emitters.radar_waveforms, not the older
linear-FM chirp radar emitter.
Scope¶
RadarParamsV1 validates a closed RadarWaveform set: PULSE, LFM,
FMCW_SAW, BARKER13, and FRANK. synthesize_radar_waveform() emits a
read-only one-dimensional NumPy complex128 baseband record, exact
(start_sample, pulse_index) placements, and the frozen validated input.
The carrier is validated metadata in this transmit-baseband contract; it is
not mixed into the emitted samples.
The synthesis contract owns discrete pulse placement, gating, and code-chip
placement. measure_radar_waveform() uses SciPy correlation and NumPy FFTs
to make deterministic acceptance measurements. It is not a target-scene,
clutter, antenna, receiver, or hardware-impairment model.
Fixture experiment¶
The executable acceptance suite,
tests/unit/test_layer24_radar_waveforms.py, loads and re-synthesizes every
versioned fixture in tests/fixtures/radar/. Each fixture uses a 1 MHz
sample rate, 20 microsecond pulse width, 100 microsecond PRI, four pulses,
and exact starts (0, 0), (100, 1), (200, 2), (300, 3).
Fixture |
Waveform |
99% occupied bandwidth |
PSL (dB) |
Range-Doppler peak |
|---|---|---|---|---|
|
|
640,000 Hz |
-314.3962 |
|
|
|
660,000 Hz |
-20.0039 |
|
|
|
660,000 Hz |
-20.0039 |
|
|
|
960,000 Hz |
-19.9625 |
|
|
|
980,000 Hz |
-13.8939 |
|
Every fixture fixes a deterministic unit-gain point-target measurement with
an integer delay of seven samples and Doppler of 2,500 Hz. The gate permits
at most 2% deviation in 99% occupied bandwidth, one sample in matched-filter
peak position, 0.05 dB in waveform-specific PSL, and no range-Doppler-bin
deviation. It also requires ambiguity-function magnitude symmetry relative
RMS at or below 1e-12.
The LFM and FMCW fixtures independently estimate chirp slope from adjacent
emitted complex samples. The measured slope must match
bandwidth_hz / pulse_width_s within 0.5%, so a wrong phase sign, duration,
or quadratic coefficient cannot pass by agreeing only with a source-side
parameter.
Boundary and negative evidence¶
The parameter model fails closed for non-finite values, unknown fields, width greater than PRI, aliased or overlapping rounded pulse starts, oversized records, inconsistent chirp slope, invalid code lengths, and undersampled code chips. PSL uses a waveform-specific first-null mainlobe boundary, rather than a dB-threshold shortcut.
probe_radarsimpy_capability() reports an optional commercial
target-simulation capability only when all conditions hold: RadarSimPy
version >=15.0,<16.0, x86_64 Linux with Python 3.10 through 3.13, a
recognized RFGEN_RADARSIMPY_LICENSE_TIER, and the required imported
Transmitter, Receiver, Radar, and sim_radar APIs. Missing any one
condition yields an unavailable result with a reason. The fixture results
above remain valid without RadarSimPy because they validate transmit
waveforms and deterministic measurements only; they do not claim RadarSimPy
equivalence or target-scene realism.
Reproduce¶
PYTHONPATH=src python -m pytest -q tests/unit/test_layer24_radar_waveforms.py
See Also¶
Radar Emitter Algorithms: exact production API and measurement contract.
Linear-FM chirp radar validation: legacy
ChirpRadarEmitterevidence, with a distinct API and test suite.Reference / API / Emitters: emitter package catalog.