madlib._sensor.GroundOpticalSensor

class madlib._sensor.GroundOpticalSensor(lat: float, lon: float, alt: float, dra: float, ddec: float, collect_gap_mean: float, 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, lat_truth: float | None = None, lon_truth: float | None = None, alt_truth: float | None = None, cross_tag: Satellite | None = None, cross_tag_limit_arcsec: float = 100.0, **extras)[source]

Class for modeling the observing of a satellite with an optical sensor

__init__(lat: float, lon: float, alt: float, dra: float, ddec: float, collect_gap_mean: float, 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, lat_truth: float | None = None, lon_truth: float | None = None, alt_truth: float | None = None, cross_tag: Satellite | None = None, cross_tag_limit_arcsec: float = 100.0, **extras)[source]

Construct a GroundOpticalSensor object

Parameters:
  • lat (float) – Site geodetic latitude (deg)

  • lon (float) – Site geodetic longitude (deg)

  • alt (float) – Site altitude above WGS-84 reference ellipsoid

  • 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

  • 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

  • lat_truth (float | None, optional) – If not None, the latitude specified by <lat> is reported by the sensor as its position, but it is incorrect. The actual position is specified by <lat_truth>. By default None.

  • lon_truth (float | None, optional) – If not None, the longitude specified by <lon> is reported by the sensor as its position, but it is incorrect. The actual position is specified by <lon_truth>. By default None.

  • alt_truth (float | None, optional) – If not None, the altitude specified by <alt> is reported by the sensor as its position, but it is incorrect. The actual position is specified by <alt_truth>. 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__(lat, lon, alt, dra, ddec, ...[, ...])

Construct a GroundOpticalSensor 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 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

lat

lon

alt

dra

ddec

obs_per_collect

collect_gap_mean

collect_gap_std

obs_limits

id

obs_time_spacing