FMCW¶
- class FMCW(num_chirps=10, bandwidth=100000000.0, chirp_duration=1.5e-06, pulse_rep_interval=1.5e-06, sampling_rate=None, adc_sampling_rate=None)[source]¶
Bases:
RadarWaveform
,Serializable
Frequency 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
FMCW
radar waveform illuminating a single target within the context of aSimulation
would 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) 8 9# Configure the device to transmit and reveive radar waveforms 10radar = Radar() 11radar.waveform = FMCW(num_chirps=3, bandwidth=1e9, 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 (float, optional) – Number of dedicated chirps within a single radar frame. \(10\) by default.
bandwidth (float, optional) – Sweep bandwidth of every chirp in Hz. \(0.1~\mathrm{GHz}\) by default.
chirp_duration (float, optional) – Duration of every chirp in seconds. \(1.5~\mathrm{\mu s}\) by default.
pulse_rep_interval (float, optional) – Repetition interval of the individual chirps in seconds. \(1.5~\mathrm{\mu s}\) by default.
sampling_rate (float, optional) – Sampling rate of the baseband signal in Hz. If not specified, the sampling rate will be equal to the bandwidth.
adc_sampling_rate (float, optional) – Sampling rate of the analog-digital conversion in Hz. If not specified, the adc sampling rate will be equal to the bandwidth.
- ping()[source]¶
Generate a single radar frame.
- Return type:
- Returns:
Single-stream signal model of a single radar frame.
- property adc_sampling_rate: float¶
Sampling rate at the ADC in Hz.
- Raises:
ValueError – If sampling rate is smaller or equal to zero.
- property bandwidth: float¶
Bandwidth swept during each chirp.
- Returns:
Sweep bandwidth in Hz.
- Return type:
- Raises:
ValueError – If bandwidth is smaller or equal to zero.
- property chirp_duration: float¶
Duration of a single chirp within the FMCW frame.
In combination with
pulse_rep_interval
the chirp duration determines the guard interval between two consecutive chirps:- Raises:
ValueErorr – For durations smaller or equal to zero.
- property frame_duration: float¶
Duration of a single radar frame in seconds.
Denoted by \(T_{\mathrm{F}}\) of unit \(\left[ T_{\mathrm{F}} \right] = \mathrm{s}\) in literature.
- property max_range: float¶
The waveform’s maximum detectable range in meters.
Denoted by \(R_{\mathrm{Max}}\) of unit \(\left[ R_{\mathrm{Max}} \right] = \mathrm{m}\) in literature.
- property max_relative_doppler: float¶
Maximum relative detectable radial doppler frequency shift in Hz.
\[\Delta f_\mathrm{Max} = \frac{v_\mathrm{Max}}{\lambda}\]Returns: Shift frequency delta in Hz.
- property num_chirps: int¶
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¶
Pulse repetition interval in seconds.
The pulse repetition interval determines the overall frame duration. In combination with the
chirp_duration
the pulse repetition interval it determines the guard interval between two consecutive chirps:- Raises:
ValueError – If interval is smaller or equal to zero.
- property range_resolution: float¶
Resolution of the radial range sensing in meters.
Denoted by \(\Delta R\) of unit \(\left[ \Delta R \right] = \mathrm{m}\) in literature.
- property relative_doppler_bins: ndarray¶
Realtive discrete sample bins of the radial doppler frequency shift sensing.
- Returns:
A numpy vector (1D array) of discrete doppler frequency bins in Hz.
- property relative_doppler_resolution: float¶
Relative resolution of the radial doppler frequency shift sensing in Hz.
\[\Delta f_\mathrm{Res} = \frac{v_\mathrm{Res}}{\lambda}\]Returns: Doppler resolution in Hz.
- property sampling_rate: float¶
The optional sampling rate required to process this waveform.
Denoted by \(f_\mathrm{s}\) of unit \(\left[ f_\mathrm{s} \right] = \mathrm{Hz} = \tfrac{1}{\mathrm{s}}\) in literature.
- property slope: float¶
Slope of the bandwidth sweep.
- Returns:
Slope in Hz / s.
- Return type:
- Raises:
ValueError – If slope is smaller or equal to zero.