Sensor Models¶
Simulated SSN ground sensor producing az/el/range (radar) or angles-only az/el (optical) measurements.
SensorType ¶
Sensor measurement type, driving measurement-model selection.
Parsed from the sensor_type dataset property: AZEL_RANGE sensors (radar/phased-array/mechanical trackers, dataset value "azel_range") measure [az, el, range]; AZEL sensors (angles-only optical trackers, dataset value "azel") measure [az, el].
Example
Initialize instance.
AZEL class-attribute ¶
AZEL: Any = SensorType.AZEL
Sensor measurement type, driving measurement-model selection.
Parsed from the sensor_type dataset property: AZEL_RANGE sensors (radar/phased-array/mechanical trackers, dataset value "azel_range") measure [az, el, range]; AZEL sensors (angles-only optical trackers, dataset value "azel") measure [az, el].
AZEL_RANGE class-attribute ¶
AZEL_RANGE: Any = SensorType.AZEL_RANGE
Sensor measurement type, driving measurement-model selection.
Parsed from the sensor_type dataset property: AZEL_RANGE sensors (radar/phased-array/mechanical trackers, dataset value "azel_range") measure [az, el, range]; AZEL sensors (angles-only optical trackers, dataset value "azel") measure [az, el].
SimpleSSNSensor ¶
SimpleSSNSensor(location: Any, az_min: Any = 0.0, az_max: Any = 360.0, el_min: Any = 0.0, el_max: Any = 90.0, range_max: Any = None, bias: Any = Ellipsis, noise: Any = Ellipsis, seed: Any = None)
A simulated SSN ground sensor producing az/el/range or angles-only az/el measurements.
Pairs a sensor site (location, field-of-view limits, bias/noise calibration) with measurement generation. Radar (azel_range) sensors measure [az, el, range]; optical sensors measure [az, el]. Angles are in degrees, range in meters. The azimuth window is wrap-aware: az_min > az_max means the window crosses north (e.g. Cape Cod 347deg -> 227deg).
Example
Initialize instance.
calibrated property ¶
calibrated: bool
Whether the sensor's site supplied full noise calibration.
Returns:
| Name | Type | Description |
|---|---|---|
bool | bool | True if all three noise fields were present; False for sensors loaded with default zero noise. |
location property ¶
location: PointLocation
Sensor site location.
Returns:
| Name | Type | Description |
|---|---|---|
PointLocation | PointLocation | Sensor site location. |
measurement_dim property ¶
measurement_dim: int
Measurement dimension: 3 for radar (az/el/range), 2 for optical (az/el).
Returns:
| Name | Type | Description |
|---|---|---|
int | int | Length of the vector returned by measure(). |
range_max property ¶
sensor_type property ¶
sensor_type: SensorType
Sensor measurement type.
Returns:
| Name | Type | Description |
|---|---|---|
SensorType | SensorType |
|
azelrange method descriptor ¶
from_location staticmethod ¶
from_location(location: PointLocation, seed: Union[int, None] = None) -> SimpleSSNSensor
Build a sensor from a dataset site's properties.
Supports sensor_type == "azel_range" (radar; [az, el, range]) and sensor_type == "azel" (angles-only optical trackers; [az, el]). Noise fields default to zero when absent, flagging the sensor uncalibrated; radar sites read az/el/range noise, optical sites read az/el noise. Bias fields default to zero when absent; limits default to an open field of view (azimuth 0-360deg, elevation 0-90deg, unlimited range). Optical sites carry no range fields, so they have no range constraint.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
location | PointLocation | Site from e.g. | required |
seed | int or None | RNG seed for reproducible measurements. | None |
Returns:
| Name | Type | Description |
|---|---|---|
SimpleSSNSensor | SimpleSSNSensor | New sensor instance. |
Raises:
| Type | Description |
|---|---|
ValueError | If the site is missing a |
from_locations staticmethod ¶
from_locations(locations: list[PointLocation], seed: Union[int, None] = None) -> SimpleSSNSensor
Build sensors from all constructible sites, skipping unsupported ones.
Sites with an unknown sensor_type are skipped, but sites lacking calibration are still included with zero noise. Both radar (azel_range) and optical (azel) sites construct. When seed is provided, sensor i is seeded with seed + i for reproducible measurement generation. Use from_locations_calibrated to keep only fully-calibrated sites.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
locations | list[PointLocation] | Candidate sites. | required |
seed | int or None | Optional base RNG seed. | None |
Returns:
| Type | Description |
|---|---|
SimpleSSNSensor | list[SimpleSSNSensor]: One sensor per constructible site. |
from_locations_calibrated staticmethod ¶
from_locations_calibrated(locations: list[PointLocation], seed: Union[int, None] = None) -> SimpleSSNSensor
Build sensors from constructible, fully-calibrated sites only.
Like from_locations but drops sites that did not supply every noise field their type measures (az/el/range for radar, az/el for optical), i.e. sensors whose calibrated is False.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
locations | list[PointLocation] | Candidate sites. | required |
seed | int or None | Optional base RNG seed. | None |
Returns:
| Type | Description |
|---|---|
SimpleSSNSensor | list[SimpleSSNSensor]: One sensor per constructible, calibrated site. |
measure method descriptor ¶
Generate one measurement if the target is visible (step-wise API).
Visibility is evaluated on the true geometry; the returned measurement is truth + bias + noise with azimuth normalized into [0, 360). The measurement is 3-dim [az, el, range] for azel_range sensors and 2-dim [az, el] for optical sensors.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Measurement epoch. | required |
state | ndarray | True target ECI state (meters). | required |
Returns:
| Type | Description |
|---|---|
Union[ndarray, None] | numpy.ndarray or None: [az_deg, el_deg, range_m] ([az_deg, el_deg] for optical) when visible, None otherwise. |
measurement_model method descriptor ¶
measurement_model() -> Any
Filter-side measurement model matching this sensor.
The model uses the sensor's noise standard deviations for its noise covariance and the sensor's bias in predict(), so an estimator configured with this model is consistent with measurements generated by measure(). Returns an AzElRangeMeasurementModel for radar (az/el/range) sensors and an AzElMeasurementModel for optical (angles-only) sensors.
Returns:
| Type | Description |
|---|---|
Any | AzElRangeMeasurementModel | AzElMeasurementModel: Matching model in degrees. |
simulate_observations method descriptor ¶
simulate_observations(trajectory: OrbitTrajectory, start: Epoch, end: Epoch, dt: float, model_index: int) -> list[Observation]
Generate observations over a trajectory segment (batched API).
Samples the trajectory at cadence dt over [start, end] (inclusive) and calls measure() at each sample; non-visible samples are skipped. Pass detection is intentionally not performed here.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
trajectory | OrbitTrajectory | Interpolatable ECI trajectory of the target. | required |
start | Epoch | First sample epoch. | required |
end | Epoch | Last sample epoch (inclusive). | required |
dt | float | Sample interval (seconds, > 0). | required |
model_index | int | Observation.model_index to tag measurements with. | required |
Returns:
| Type | Description |
|---|---|
list[Observation] | list[Observation]: Observations for every visible sample. |
Raises:
| Type | Description |
|---|---|
ValueError | If dt <= 0. |
visible method descriptor ¶
Whether a target is inside the sensor's field of view.
Checks elevation limits, the wrap-aware azimuth window, and maximum range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
epoch | Epoch | Measurement epoch. | required |
state | ndarray | Target ECI state (first 3 elements used; meters). | required |
Returns:
| Name | Type | Description |
|---|---|---|
bool | bool | True if the target is within the field of view. |
with_bias method descriptor ¶
with_bias(bias_az_deg: float, bias_el_deg: float, bias_range_m: float) -> SimpleSSNSensor
Override the sensor's measurement bias.
The derived measurement_model reads these values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
bias_az_deg | float | Azimuth bias (degrees). | required |
bias_el_deg | float | Elevation bias (degrees). | required |
bias_range_m | float | Range bias (meters). | required |
Returns:
| Name | Type | Description |
|---|---|---|
SimpleSSNSensor | SimpleSSNSensor | The sensor with updated bias. |
Raises:
| Type | Description |
|---|---|
ValueError | If any bias is non-finite. |
with_constraint method descriptor ¶
with_constraint(constraint: Union[ElevationConstraint, OffNadirConstraint, LocalTimeConstraint, LookDirectionConstraint, AscDscConstraint, ElevationMaskConstraint, ConstraintAll, ConstraintAny, ConstraintNot]) -> SimpleSSNSensor
Add an extra field-of-view constraint (extension point).
The constraint is evaluated by visible alongside the limits-derived constraints, so users can extend visibility with arbitrary access constraints (e.g. ElevationConstraint, AzimuthConstraint, RangeConstraint, LookDirectionConstraint).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
constraint | AccessConstraint | An access constraint object, e.g. ElevationConstraint, AzimuthConstraint, or RangeConstraint. | required |
Returns:
| Name | Type | Description |
|---|---|---|
SimpleSSNSensor | SimpleSSNSensor | The sensor with the constraint appended. |
with_noise method descriptor ¶
with_noise(sigma_az_deg: float, sigma_el_deg: float, sigma_range_m: float) -> SimpleSSNSensor
Override the sensor's noise standard deviations.
The derived measurement_model reads these values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
sigma_az_deg | float | Azimuth noise standard deviation (degrees). | required |
sigma_el_deg | float | Elevation noise standard deviation (degrees). | required |
sigma_range_m | float | Range noise standard deviation (meters). | required |
Returns:
| Name | Type | Description |
|---|---|---|
SimpleSSNSensor | SimpleSSNSensor | The sensor with updated noise. |
Raises:
| Type | Description |
|---|---|
ValueError | If any sigma is negative or non-finite. |
See Also¶
- SSN Sensor Datasets Guide - Loading sensor sites
- Measurement Models Guide - The matching AzElRangeMeasurementModel / AzElMeasurementModel
- SSN Radar Tracking Example - Full EKF/UKF/BLS walkthrough
- Measurement Models - Filter-side measurement models