FMCW¶
- class FMCW(num_chirps=10, chirp_duration=1.5e-06, pulse_rep_interval=1.5e-06, adc_sampling_rate=None)[source]¶
Bases:
RadarWaveformFrequency Modulated Continuous Waveform Radar Sensing with stretch processing.
This class generates a frame consisting of a sequence of unmodulated chirps. They are used for radar detection with stretch processing, i.e., mixing the received signal with the transmitted sequence, (under)sampling and applying an FFT. S A minimal example configuring an
FMCWradar waveform illuminating a single target within the context of aSimulationwould look like this:1from hermespy.radar import Radar, FMCW, ReceiverOperatingCharacteristic 2from hermespy.simulation import Simulation, N0 3from hermespy.channel import SingleTargetRadarChannel 4 5# Create a new simulated scenario featuring a single device 6simulation = Simulation() 7device = simulation.new_device(noise_level=N0(2.5e-6), carrier_frequency=60e9, bandwidth=1e9) 8 9# Configure the device to transmit and reveive radar waveforms 10radar = Radar() 11radar.waveform = FMCW(num_chirps=3, chirp_duration=1e-6, pulse_rep_interval=1.1e-6) 12device.add_dsp(radar) 13 14# Create a new radar channel with a single illuminated target 15target = SingleTargetRadarChannel(1, 1., attenuate=True) 16simulation.scenario.set_channel(device, device, target) 17 18# Create a new detection probability evaluator 19simulation.add_evaluator(ReceiverOperatingCharacteristic(radar, device, device, target)) 20 21# Run the simulation
- Parameters:
num_chirps (
int) – Number of dedicated chirps within a single radar frame. \(10\) by default.chirp_duration (
float) – Duration of every chirp in seconds. \(1.5~\mathrm{\mu s}\) by default.pulse_rep_interval (
float) – Repetition interval of the individual chirps in seconds. \(1.5~\mathrm{\mu s}\) by default.adc_sampling_rate (
float|None) – Sampling rate of the analog-digital conversion in Hz. If not specified, the adc sampling rate will be equal to the bandwidth.
- classmethod Deserialize(process)[source]¶
Deserialize an object’s state.
Objects cannot be deserialized directly, instead a
Factorymust be instructed to carry out the deserialization process.- Parameters:
process – The current stage of the deserialization process. This object is generated by the
Factoryand provides an interface to deserialization methods supporting multiple backends.- Returns:
The deserialized object.
- energy(bandwidth, oversampling_factor)[source]¶
Energy of the radar waveform.
- Parameters:
- Return type:
Radar energy in \(\mathrm{Wh}\).
- estimate(signal, state)[source]¶
Generate a range-doppler map from a single-stream radar frame.
- Parameters:
signal (
Signal) – Single-stream signal model of a single propagated radar frame.state (
ReceiveState) – State of the device the radar is assigned to.
- Return type:
- Returns:
Numpy matrix (2D array) of the range-doppler map, where the first dimension indicates discrete doppler frequency bins and the second dimension indicates discrete range bins.
- frame_duration(bandwidth)[source]¶
Duration of a single radar frame in seconds.
Denoted by \(T_{\mathrm{F}}\) of unit \(\left[ T_{\mathrm{F}} \right] = \mathrm{s}\) in literature.
- max_range(bandwidth)[source]¶
The waveform’s maximum detectable range in meters.
Denoted by \(R_{\mathrm{Max}}\) of unit \(\left[ R_{\mathrm{Max}} \right] = \mathrm{m}\) in literature.
- ping(state)[source]¶
Generate a single radar frame.
- Parameters:
state (
TransmitState) – State of the device the radar is assigned to.- Return type:
- Returns:
Single-stream signal model of a single radar frame.
- range_resolution(bandwidth)[source]¶
Resolution of the radial range sensing in meters.
Denoted by \(\Delta R\) of unit \(\left[ \Delta R \right] = \mathrm{m}\) in literature.
- samples_per_frame(bandwidth, oversampling_factor)[source]¶
Number of samples in a single radar frame.
- serialize(process)[source]¶
Serialize this object’s state.
Objects cannot be serialized directly, instead a
Factorymust be instructed to carry out the serialization process.- Parameters:
process (
SerializationProcess) – The current stage of the serialization process. This object is generated by theFactoryand provides an interface to serialization methods supporting multiple backends.- Return type:
- property adc_sampling_rate: float[source]¶
Sampling rate at the ADC in Hz.
- Raises:
ValueError – If sampling rate is smaller than zero.
- property chirp_duration: float[source]¶
Duration of a single chirp within the FMCW frame.
In combination with
pulse_rep_intervalthe chirp duration determines the guard interval between two consecutive chirps:
- Raises:
ValueError – For durations smaller or equal to zero.
- property max_relative_doppler: float[source]¶
Maximum relative detectable radial doppler frequency shift in Hz.
\[\Delta f_\mathrm{Max} = \frac{v_\mathrm{Max}}{\lambda}\]
- property num_chirps: int[source]¶
Number of chirps per transmitted radar frame.
Changing the number of chirps per frame will result in a different radar frame length:
- Raises:
ValueError – If the number of chirps is smaller than one.
- property pulse_rep_interval: float[source]¶
Pulse repetition interval in seconds.
The pulse repetition interval determines the overall frame duration. In combination with the
chirp_durationthe pulse repetition interval it determines the guard interval between two consecutive chirps:
- Raises:
ValueError – If interval is smaller or equal to zero.