madlib._sensor.SpaceOpticalSensor

class madlib._sensor.SpaceOpticalSensor(sensor_satellite: Satellite, dra: float, ddec: float, collect_gap_mean: float, sensor_satellite_truth: Satellite | None = None, obs_limits: dict | None = None, collect_gap_std: float = 0.0, obs_per_collect: int | tuple[int, int] = 1, obs_time_spacing: float = 1.0, id: str | None = None, cross_tag: Satellite | None = None, cross_tag_limit_arcsec: float = 100.0, **extras)[source]

Class for modeling observations with an optical sensor in Earth orbit.

__init__(sensor_satellite: Satellite, dra: float, ddec: float, collect_gap_mean: float, sensor_satellite_truth: Satellite | None = None, obs_limits: dict | None = None, collect_gap_std: float = 0.0, obs_per_collect: int | tuple[int, int] = 1, obs_time_spacing: float = 1.0, id: str | None = None, cross_tag: Satellite | None = None, cross_tag_limit_arcsec: float = 100.0, **extras)[source]

Construct a SpaceOpticalSensor object

Parameters:
  • sensor_satellite (madlib.Satellite) – Satellite object governing sensor motion

  • dra (float) – Metric accuracy in the right ascension direction

  • ddec (float) – Metric accuracy in the declination direction

  • collect_gap_mean (float) – Average time (seconds) between collects on a satellite

  • sensor_satellite_truth (madlib.Satellite | None, optional) – If not None, this defines the actual orbit of the satellite, turning the <satellite> argument into the expected orbit. This will affect residual calculations. By default, None.

  • obs_limits (dict | None, optional) – Dictionary of the limits on what this sensor can observe. This can be obvious (e.g. can’t observe through the Earth), or based on sensor sensitivity (e.g. range limit for radar), by default None

  • collect_gap_std (float, optional) – Standard deviation of times (seconds) between collects on a satellite, by default 0.0

  • obs_per_collect (int | tuple[int, int], optional) – Typical number of observations per collect. This can be a constant, or a tuple of (min, max) for randomly sampling, by default 1

  • obs_time_spacing (float, optional) – Time between observations within a collect, by default 1.0

  • id (str | None, optional) – Unique Sensor ID, by default None

  • cross_tag (madlib.Satellite | None, optional) – An optional nearby satellite that the sensor has misattributed as the target, by default None (no misattribution)

  • cross_tag_limit_arcsec (float, optional) – The maximum allowed separation (in arcseconds) between the target’s expected position and the cross_tag satellite. At further separations, observations of the misattributed satellite will be ignored. By default 100.0

Methods

__init__(sensor_satellite, dra, ddec, ...[, ...])

Construct a SpaceOpticalSensor object

generate_obs_timing(start, end)

Randomly generate a realistic time sampling of observations.

observe(target_satellite, times)

Observe a satellite with this sensor model at the times given. Observations are computed in three forms: - truth: Measurements that would be returned if there were no random or systematic errors and knowledge of the target's orbit and maneuvers was perfect. These are the observations you would see in a perfect world. - expected: Measurements without random noise, but also without maneuver knowledge and with any systematic errors on sensor position and/or satellite orbit. These are the observations that you THINK you should get, given your actual knowledge of the system. - measured: The actual output of the simulated system, including all random and systematic sources of error and following the target satellite's full trajectory. This can also contain cross-tag events.

validate_limits(obs)

Determine whether Observation is possible based on the sensor limits.

Attributes

dra

ddec

obs_per_collect

collect_gap_mean

collect_gap_std

obs_limits

id

obs_time_spacing