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
idobs_time_spacing