Single-Target Radar Channel Modeling

class RadarChannel(target_range, radar_cross_section, target_azimuth=0.0, target_zenith=0.0, target_exists=True, losses_db=0, target_velocity=0, **kwargs)

Bases: hermespy.channel.channel.Channel

Model of a monostatic radar channel in base-band.

The radar channel is currently implemented as a single-point reflector. The model also considers the presence of self-interference due to leakage from transmitter to receiver.

Attenuation is considered constant and calculated according to the radar range equation. The received signal is considered to have the same power as the transmitted signal, and attenuation will be taken into account in the level of the self-interference.

Moving targets are also taken into account, considering both Doppler and a change in the delay during a drop.

Both the reflected signal and the self interference will have a random phase.

Obs.: Currently only one transmit and receive antennas is supported. Only a radial velocity is considered.

ToDo: Add literature references for this channel model.

Parameters
  • target_range (float) – Distance from transmitter to target object

  • radar_cross_section (float) – Radar cross section (RCS) of the assumed single-point reflector in m**2

  • target_azimuth (float, optional) – Target location azimuth angle in radians, considering spherical coordinates. Zero by default.

  • target_zenith (float, optional) – Target location zenith angle in radians, considering spherical coordinates. Zero by default.

  • target_exists (bool, optional) – True if a target exists, False if there is only noise/clutter

  • losses_db (float, optional) – Any additional atmospheric and/or cable losses, in dB (default = 0)

  • target_velocity (float, optional) – Radial target velocity, in m/s (default = 0)

Raises

ValueError – If target_range < 0. If radar_cross_section < 0. If carrier_frequency <= 0. If more than one antenna is considered.

yaml_tag: str = 'RadarChannel'

YAML serialization tag.

yaml_matrix = True
target_exists: bool
property target_range: float

Access configured target range.

Returns

range [m]

Return type

float

property radar_cross_section: float

Access configured radar cross section.

Returns

radar cross section [m**2]

Return type

float

property target_azimuth: float

Target position azimuth in spherical coordiantes.

Return type

float

Returns

Azimuth angle in radians.

property target_zenith: float

Target position zenith in spherical coordiantes.

Return type

float

Returns

Zenith angle in radians.

property losses_db: float

Access configured (atmospheric and cable) losses

Returns

losses [dB]

Return type

float

property delay: float

Get delay from target

Returns

propagation delay [s]

Return type

float

impulse_response(num_samples, sampling_rate)

Sample a new channel impulse response.

Note that this is the core routine from which propagate will create the channel state.

Parameters
  • num_samples (int) – Number of samples within the impulse response.

  • sampling_rate (float) – The rate at which the delay taps will be sampled, i.e. the delay resolution.

Returns

Impulse response in all number_rx_antennas x number_tx_antennas. 4-dimensional array of size T x number_rx_antennas x number_tx_antennas x (L+1) where L is the maximum path delay (in samples). For the ideal channel in the base class, L = 0.

Return type

np.ndarray

classmethod to_yaml(representer, node)

Serialize a radar channel object to YAML.

Parameters
  • representer (SafeRepresenter) – A handle to a representer used to generate valid YAML code. The representer gets passed down the serialization tree to each node.

  • node (RadarChannel) – The channel instance to be serialized.

Returns

The serialized YAML node.

Return type

Node