Radar

Inheritance diagram of hermespy.radar.radar.Radar, hermespy.radar.radar.RadarBase
class Radar(device=None, seed=None)[source]

Bases: RadarBase[RadarTransmission, RadarReception], Serializable

Signal processing pipeline of a monostatic radar sensing its environment.

The radar can be configured by assigning four composite objects to respective property attributes:

Of those, only a RadarWaveform is mandatory. Beamformers, i.e. a TransmitBeamformer and a ReceiveBeamformer, are only required when the radar is assigned to a Device configured to multiple antennas. A RadarDetector is optional, if not configured the radar’s generated RadarReception will not contain a RadarPointCloud.

When assigned to a Device, device transmission will trigger the radar to generate a RadarTransmission by executing the following sequence of calls:

sequenceDiagram participant Device participant Radar participant RadarWaveform participant TransmitBeamformer Device ->> Radar: _transmit() Radar ->> RadarWaveform: ping() RadarWaveform -->> Radar: Signal Radar ->> TransmitBeamformer: transmit(Signal) TransmitBeamformer -->> Radar: Signal Radar -->> Device: RadarTransmission

Initially, the ping method of the RadarWaveform is called to generate the model of a single-antenna radar frame. For Devices configured to multiple antennas, the configured TransmitBeamformer is called to encode the signal for each antenna. The resulting multi-antenna frame, contained within the return RadarTransmission, is cached at the assigned Device.

When assigned to a Device, device reception will trigger the radar to generate a RadarReception by executing the following sequence of calls:

sequenceDiagram participant Device participant Radar participant ReceiveBeamformer participant RadarWaveform participant RadarDetector Device ->> Radar: _receive(Signal) Radar ->> ReceiveBeamformer: probe(Signal) ReceiveBeamformer -->> Radar: line_signals loop Radar ->> RadarWaveform: estimate(line_signal) RadarWaveform -->> Radar: line_estimate end Radar ->> RadarDetector: detect(line_estimates) RadarDetector -->> Radar: RadarPointCloud Radar -->> Device: RadarReception

Initially, the probe method of the ReceiveBeamformer is called to generate a sequence of line signals from each direction of interest. We refer to them as line signals as they are the result of an antenna arrays beamforing towards a single direction of interest, so the signal can be though of as having propagated along a single line pointing towards the direction of interest. This step is only executed for Devices configured to multiple antennas. The sequence of line signals are then indiviually processed by the estimate method of the RadarWaveform, resulting in a line estimate representing a range-doppler map for each direction of interest. This sequence line estimates is combined to a single RadarCube. If a RadarDetector is configured, the detect method is called to generate a RadarPointCloud from the RadarCube. The resulting information is cached as a RadarReception at the assigned Device.

Parameters:
  • device (Device, optional) – The device the radar is assigned to.

  • seed (int, optional) – Random seed used to generate the radar’s internal state.

property frame_duration: float

Duration of a single sample frame in seconds.

Denoted as \(T_{\mathrm{F}}\) of unit \(\left[ T_{\mathrm{F}} \right] = \mathrm{s}\) in literature.

property max_range: float

The radar’s maximum detectable range in meters.

Denoted by \(R_{\mathrm{Max}}\) of unit \(\left[ R_{\mathrm{Max}} \right] = \mathrm{m}\) in literature. Convenience property that resolves to the configured RadarWaveform’s max_range property. Returns \(R_{\mathrm{Max}} = 0\) if no waveform is configured.

property power: float

Expected power of the transmitted signal in Watts.

Note

Applies only to the signal-carrying parts of the transmission, silent parts shuch as guard intervals should not be considered.

property sampling_rate: float

The operator’s preferred sampling rate in Hz.

Denoted as \(f_{\mathrm{S}}\) of unit \(\left[ f_{\mathrm{S}} \right] = \mathrm{Hz} = \tfrac{1}{\mathrm{s}}\) in literature.

property velocity_resolution: float

The radar’s velocity resolution in meters per second.

Denoted by \(\Delta v\) of unit \(\left[ \Delta v \right] = \frac{\mathrm{m}}{\mathrm{s}}\) in literature. Computed as

\[\Delta v = \frac{c_0}{f_{\mathrm{c}}} \Delta f_{\mathrm{Res}}\]

querying the configured RadarWaveform’s relative_doppler_resolution property \(\Delta f_{\mathrm{Res}}\).

property waveform: RadarWaveform | None

Description of the waveform to be transmitted and received by this radar.

None if no waveform is configured.

During transmit / _transmit, the RadarWaveform’s ping() method is called to generate a signal to be transmitted by the radar. During receive / _receive, the RadarWaveform’s estimate() method is called multiple times to generate range-doppler line estimates for each direction of interest.

class RadarBase(*args, **kwargs)[source]

Bases: Generic[RTT, RRT], DuplexOperator[RTT, RRT]

Base class class for radar sensing signal processing pipelines.

Parameters:

device (Device, optional) – Device the duplex operator operates.

property detector: RadarDetector | None

Detector routine configured to generate point clouds from radar cubes.

If configured, during _receive / receive, the detector’s detect method is called to generate a RadarPointCloud. If not configured, i.e. None, the generated RadarReception’s cloud property will be None.

property receive_beamformer: ReceiveBeamformer | None

Beamforming applied during signal reception.

The TransmitBeamformer’s receive method is called as a subroutine of Receiver.receive(). Configuration is required for if the assigned Device features multiple antennas.

property transmit_beamformer: TransmitBeamformer | None

Beamforming applied during signal transmission.

The TransmitBeamformer’s transmit method is called as a subroutine of Transmitter.transmit(). Configuration is required for if the assigned Device features multiple antennas.