Multi Target

Inheritance diagram of hermespy.channel.radar.multi.MultiTargetRadarChannel, hermespy.channel.radar.multi.MultiTargetRadarChannelRealization

Model of a spatial radar channel featuring multiple reflecting targets.

The following minimal example outlines how to configure the channel model within the context of a Simulation:

 1# Initialize a single device operating at 78.5 GHz
 2simulation = Simulation()
 3device = simulation.new_device(carrier_frequency=78.5e9)
 4
 5# Create a radar channel modeling two targets at 10m and 50m distance
 6channel = MultiTargetRadarChannel(attenuate=False)
 7simulation.set_channel(device, device, channel)
 8
 9first_target = VirtualRadarTarget(
10    FixedCrossSection(1),
11    StaticTrajectory(Transformation.From_Translation(np.array([10, 0, 0]))),
12    static=False,
13)
14second_target = VirtualRadarTarget(
15    FixedCrossSection(1),
16    StaticTrajectory(Transformation.From_Translation(np.array([0, 50, 0]))),
17    static=True,
18)
19channel.add_target(first_target)
20channel.add_target(second_target)
21
22# Configure an FMCW radar with 5 GHz bandwidth illuminating the target
23radar = Radar(FMCW(10, 5e9, 90 / 5e9, 100 / 5e9))
24device.add_dsp(radar)
25
26# Configure a simulation evluating the radar's operating characteristics
27simulation.add_evaluator(ReceiverOperatingCharacteristic(radar, device, device, channel))
28simulation.new_dimension('noise_level', dB(np.arange(0, -22, -2).tolist()), device)
29simulation.num_samples = 1000
30
31# Run simulation and plot resulting ROC curve
32result = simulation.run()
33result.plot()
class MultiTargetRadarChannel(attenuate=True, interference=True, decorrelation_distance=inf, *args, **kwargs)[source]

Bases: RadarChannelBase[MultiTargetRadarChannelRealization], Serializable

Model of a spatial radar channel featuring multiple reflecting targets.

Parameters:
  • attenuate (bool, optional) – Should the propagated signal be attenuated during propagation modeling? Enabled by default.

  • interference (bool, optional) – Should the channel model consider interference between the linked devices? Enabled by default.

  • decorrelation_distance (float, optional) – Distance at which the channel’s random variable realizations are considered uncorrelated. \(\infty\) by default, meaning the channel is static in space.

_realize()[source]

Generate a new channel realzation.

Abstract subroutine of realize. Each Channel is required to implement their own _realize() method.

Returns: A new channel realization.

Return type:

MultiTargetRadarChannelRealization

add_target(target)[source]

Add a new target to the radar channel.

Parameters:

target (RadarTarget) – Target to be added.

Return type:

None

make_target(moveable, cross_section, *args, **kwargs)[source]

Declare a moveable to be a target within the radar channel.

Parameters:
  • moveable (Moveable) – Moveable to be declared as a target.

  • cross_section (RadarCrossSectionModel) – Radar cross section model of the target.

  • *args – Additional positional arguments passed to the target’s constructor.

  • **kwargs – Additional keyword arguments passed to the target’s constructor.

Returns:

The newly created target.

Return type:

PhysicalRadarTarget

recall_realization(group)[source]

Recall a realization of this channel type from its HDF serialization.

Parameters:

group (h5py.Group) – HDF group to which the channel realization was serialized.

Return type:

MultiTargetRadarChannelRealization

Returns: The recalled realization instance.

property decorrelation_distance: float

Decorrelation distance of the radar channel.

Raises:

ValueError – For decorrelation distances smaller than zero.

interfernce: bool

Consider interference between linked devices.

Only applies in the bistatic case, where transmitter and receiver are two dedicated device instances.

property targets: Set[RadarTarget]

Set of targets considered within the radar channel.

class MultiTargetRadarChannelRealization(consistent_realization, phase_variable, targets, interference, attenuate, sample_hooks, gain)[source]

Bases: RadarChannelRealization

Realization of a spatial multi target radar channel.

Generated by the realize method of MultiTargetRadarChannel.

_summary_

Parameters:
  • sample_hooks (Set[ChannelSampleHook[CST]], optional) – Hooks to be called after the channel is sampled.

  • gain (float) – Linear power gain factor a signal experiences when being propagated over this realization.

static From_HDF(group, phase_variable, targets, sample_hooks)[source]
Return type:

MultiTargetRadarChannelRealization

to_HDF(group)[source]

Serialize the channel realization to HDF5.

Parameters:

group (Group) – HDF5 group to serialize the channel realization to.

Return type:

None

class RadarTarget(static=False)[source]

Bases: ABC

Abstract base class of radar targets.

Radar targets represent reflectors of electromagnetic waves within RadarChannelBase instances.

Parameters:

static (bool, optional) – Is the target visible during null hypothesis testing? Disabled by default.

abstract sample_cross_section(impinging_direction, emerging_direction)[source]

Query the target’s radar cross section.

The target radr cross section is denoted by the vector \(\sigma_{\ell}\) within the respective equations.

Parameters:
  • impinging_direction (Direction) – Direction from which a far-field source impinges onto the target model.

  • emerging_direction (Direction) – Direction in which the scatter wave leaves the target model.

Return type:

float

Returns: The assumed radar cross section in \(m^2\).

abstract sample_trajectory(timestamp)[source]

Sample the target’s trajectory at a given time.

Parameters:

timestamp (float) – Time at which to sample the trajectory in seconds.

Return type:

TrajectorySample

Returns: A sample of the trajectory.

property static: bool

Is the target visible in the null hypothesis?

class VirtualRadarTarget(cross_section, trajectory=None, static=False)[source]

Bases: Moveable, RadarTarget, Serializable

Model of a spatial radar target only existing within a channe link.

Parameters:
sample_cross_section(impinging_direction, emerging_direction)[source]

Query the target’s radar cross section.

The target radr cross section is denoted by the vector \(\sigma_{\ell}\) within the respective equations.

Parameters:
  • impinging_direction (Direction) – Direction from which a far-field source impinges onto the target model.

  • emerging_direction (Direction) – Direction in which the scatter wave leaves the target model.

Return type:

float

Returns: The assumed radar cross section in \(m^2\).

sample_trajectory(timestamp)[source]

Sample the target’s trajectory at a given time.

Parameters:

timestamp (float) – Time at which to sample the trajectory in seconds.

Return type:

TrajectorySample

Returns: A sample of the trajectory.

property cross_section: RadarCrossSectionModel

The represented radar cross section model.

class PhysicalRadarTarget(cross_section, moveable, static=False)[source]

Bases: RadarTarget, Serializable

Model of a spatial radar target representing a moveable object.

The radar target will always be modeled at its moveable global position.

Parameters:
sample_cross_section(impinging_direction, emerging_direction)[source]

Query the target’s radar cross section.

The target radr cross section is denoted by the vector \(\sigma_{\ell}\) within the respective equations.

Parameters:
  • impinging_direction (Direction) – Direction from which a far-field source impinges onto the target model.

  • emerging_direction (Direction) – Direction in which the scatter wave leaves the target model.

Return type:

float

Returns: The assumed radar cross section in \(m^2\).

sample_trajectory(timestamp)[source]

Sample the target’s trajectory at a given time.

Parameters:

timestamp (float) – Time at which to sample the trajectory in seconds.

Return type:

TrajectorySample

Returns: A sample of the trajectory.

property cross_section: RadarCrossSectionModel

The represented radar cross section model.

property moveable: Moveable

Moveble this radar model is attached to.

Returns: Handle to the moveable object.

class RadarCrossSectionModel[source]

Bases: ABC

Base class for spatial radar cross section models.

abstract get_cross_section(impinging_direction, emerging_direction)[source]

Query the model’s cross section.

Parameters:
  • impinging_direction (Direction) – Direction from which a far-field source impinges onto the cross section model.

  • emerging_direction (Direction) – Direction in which the scatter wave leaves the cross section model.

Return type:

float

Returns: The assumed cross section in \(m^2\).

class FixedCrossSection(cross_section)[source]

Bases: RadarCrossSectionModel

Model of a fixed cross section.

Can be interpreted as a spherical target floating in space.

Parameters:

cross_section (float) – The cross section in \(\mathrm{m}^2\).

get_cross_section(_, __)[source]

Query the model’s cross section.

Parameters:
  • impinging_direction (Direction) – Direction from which a far-field source impinges onto the cross section model.

  • emerging_direction (Direction) – Direction in which the scatter wave leaves the cross section model.

Return type:

float

Returns: The assumed cross section in \(m^2\).

property cross_section: float

The assumed cross section.

Returns: The cross section in \(\mathrm{m}^2\).

Raises:

ValueError – For cross sections smaller than zero.