Skip to content

Sensing

metasurface_py.sensing

Sensing models: radar, localization, and ISAC objectives.

JointCommsSensingObjective dataclass

Weighted combination of comms and sensing objectives.

objective = alpha * comms_obj + (1-alpha) * sensing_obj

Parameters:

Name Type Description Default
comms_objective Any

Communication objective callable.

required
sensing_objective Any

Sensing objective callable.

required
alpha float

Weight for comms (0 to 1). Default 0.5.

0.5
__call__(state, surface, freq, **kwargs)

Evaluate weighted joint objective.

MaxDetectionSNRObjective dataclass

Maximize radar detection SNR for a point target.

Returns negative SNR (dB) for minimization.

Parameters:

Name Type Description Default
target_pos Position3D

Target position.

required
tx_power float

Transmit power [W].

1.0
noise_power float

Noise power [W].

1e-12
target_rcs float

Target RCS [m^2].

1.0
__call__(state, surface, freq, **kwargs)

Evaluate: returns negative detection SNR in dB.

bistatic_rcs(surface, state, freq, theta_inc, phi_inc, angles_obs)

Compute bistatic RCS pattern.

Parameters:

Name Type Description Default
surface Metasurface

Metasurface object.

required
state SurfaceState

Surface configuration.

required
freq float

Frequency [Hz].

required
theta_inc float

Incident polar angle [rad].

required
phi_inc float

Incident azimuthal angle [rad].

required
angles_obs AngleGrid

Observation angles.

required

Returns:

Type Description
DataArray

Bistatic RCS as xr.DataArray [m^2].

crlb_position(surface, state, target_pos, freq, snr=20.0)

Compute Cramer-Rao Lower Bound on position estimation.

CRLB = diag(J^{-1}) gives minimum variance for each position coordinate.

Parameters:

Name Type Description Default
surface Metasurface

Metasurface object.

required
state SurfaceState

Surface configuration.

required
target_pos Position3D

Target position.

required
freq float

Frequency [Hz].

required
snr float

Signal-to-noise ratio (linear).

20.0

Returns:

Type Description
NDArray[floating[Any]]

(3,) array of CRLB values [m^2] for (x, y, z).

detection_snr(surface, state, target_pos, freq, tx_power=1.0, noise_power=1e-12, target_rcs=1.0)

Compute radar detection SNR for a point target.

Uses simplified radar equation: SNR = Pt * G^2 * lambda^2 * sigma / ((4*pi)^3 * R^4 * Pn)

Parameters:

Name Type Description Default
surface Metasurface

Metasurface acting as radar aperture.

required
state SurfaceState

Surface configuration.

required
target_pos Position3D

Target position.

required
freq float

Frequency [Hz].

required
tx_power float

Transmit power [W].

1.0
noise_power float

Noise power [W].

1e-12
target_rcs float

Target radar cross-section [m^2].

1.0

Returns:

Type Description
float

Detection SNR (linear).

fisher_information_matrix(surface, state, target_pos, freq, snr=20.0)

Compute Fisher Information Matrix for position estimation.

Uses a simplified far-field signal model where the FIM depends on the array geometry and element responses.

Parameters:

Name Type Description Default
surface Metasurface

Metasurface object.

required
state SurfaceState

Surface configuration.

required
target_pos Position3D

Target position to localize.

required
freq float

Frequency [Hz].

required
snr float

Signal-to-noise ratio (linear).

20.0

Returns:

Type Description
NDArray[floating[Any]]

3x3 Fisher Information Matrix.

monostatic_rcs(surface, state, freq, angles)

Compute monostatic RCS pattern.

For each observation direction, the RCS is proportional to |AF(theta, phi)|^2 where the illumination and observation directions are the same.

Parameters:

Name Type Description Default
surface Metasurface

Metasurface object.

required
state SurfaceState

Surface configuration.

required
freq float

Frequency [Hz].

required
angles AngleGrid

Observation angles.

required

Returns:

Type Description
DataArray

RCS pattern as xr.DataArray [m^2], dims (theta, phi).