observations_simulation_settings¶
This module contains a set of functions for creating settings for simulating observations in Tudat. The observation simulation settings are stored in objects of type ObservationSimulationSettings. Note that the actual models that compute the observations are not defined in this module, but in the model_settings module. The functionality in this module defines how to use the observation models to simulate observations (epochs at which to simulate, noise levels, observability constraints, etc.).
The ObservationSimulationSettings objects can be created using some of the factory functions on this module. Most notably the tabulated_simulation_settings() and continuous_arc_simulation_settings() functions. Alternatively, if a set of actual observations are already available (loaded from real data, or from a simulation), the observation_settings_from_collection() function below can be used to generated observation simulation settings with settings (e.g. observation epochs, link ends, etc.) identical to those in the real data.
The primary link with the rest of Tudat is that the ObservationSimulationSettings objects are used as input to simulate_observations() to generate simulated observations. More details and examples on the procedure to simulate observations are given on the user guide.
Functions¶
Function for creating settings object for observation simulation, using a predefined list of observation times. |
|
Function for creating a list of settings object for observation simulation, using a predefined list of observation times. |
|
Function for creating settings object for observation simulation, using observation times according to a requirement for a continuous tracking arc. |
|
Function for creating a list of settings object for observation simulation, using observation times according to a requirement for a continuous tracking arc. |
|
No documentation found. |
|
No documentation found. |
|
Function for creating observation simulator objects. |
- tabulated_simulation_settings(observable_type: tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, simulation_times: list[tudatpy.kernel.astro.time_representation.Time], reference_link_end_type: tudatpy.kernel.estimation.observable_models_setup.links.LinkEndType = <LinkEndType.receiver: 5>, viability_settings: list[tudat::observation_models::ObservationViabilitySettings] = [], noise_function: Callable[[float | typing.SupportsIndex], numpy.ndarray[numpy.float64[m, 1]]] = None, ancillary_settings: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings = None) tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings¶
Function for creating settings object for observation simulation, using a predefined list of observation times.
Function for creating single simulation settings object, using a predefined list of observation times. The list of resulting observations may be reduced compared to the
simulation_timesshould be provided here, as only observations that meet the viability settings are retained during observation simulation (these may be provide directly here through theviability_settingsinput, or added later to the resulting settings object).- Parameters:
observable_type (
ObservableType) – Observable type of which observations are to be simulated.link_ends (LinkDefinition) – Link ends for which observations are to be simulated.
simulation_times (List[
Time]) – List of times at which to perform the observation simulation.reference_link_end_type (
LinkEndType, default =LinkEndType.receiver) – Defines the link end (via theLinkEndType) which is used as a reference time for the observation.viability_settings (List[
ObservationViabilitySettings], default = [ ]) – Settings for the creation of the viability criteria calculators, which conduct viability checks on the simulated observations.noise_function (callable[ [
Time], numpy.ndarray[numpy.float64[m, 1]] ], default = None) – Function providing the observation noise factors as a function of observation time.
- Returns:
Instance of the
ObservationSimulationSettingsderivedTabulatedObservationSimulationSettingsclass.- Return type:
- tabulated_simulation_settings_list(link_ends_per_observable: dict[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, list[tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition]], simulation_times: list[tudatpy.kernel.astro.time_representation.Time], reference_link_end_type: tudatpy.kernel.estimation.observable_models_setup.links.LinkEndType = <LinkEndType.receiver: 5>, viability_settings: list[tudat::observation_models::ObservationViabilitySettings] = []) list[tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings]¶
Function for creating a list of settings object for observation simulation, using a predefined list of observation times.
Function for creating multiple tabulated observation simulation settings objects in a list. This function is equivalent to calling the
tabulated_simulation_settings()repeatedly, with the different observables and link definition provided here through link_ends_per_observable. During a single call to this function, one simulation settings object is created for each combination of observable type and link geometry given by the link_ends_per_observable parameter.- Parameters:
link_ends_per_observable (dict[
ObservableType, list[LinkDefinition]]) – Link geometry per observable type of which observations are to be simulated.simulation_times (list[ astro.time_representation.Time ]) – List of times at which to perform the observation simulation.
reference_link_end_type (
LinkEndType, default =receiver) – Defines the link end (via theLinkEndType) which is used as a reference for observation times. The single link end specified here will be considered as the reference link end for all simulation settings object created in the function call.viability_settings (list[
ObservationViabilitySettings], default = [ ]) – Settings for the creation of the viability criteria calculators, which conduct viability checks on the simulated observations. The single settings list given here will be considered as potential viability settings for all simulation settings object created in the function call.
- Returns:
List of
ObservationSimulationSettingsderivedTabulatedObservationSimulationSettingsobjects.- Return type:
- continuous_arc_simulation_settings(observable_type: tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, start_time: tudatpy.kernel.astro.time_representation.Time, end_time: tudatpy.kernel.astro.time_representation.Time, interval_between_observations: tudatpy.kernel.astro.time_representation.Time, arc_limiting_constraints: tudat::observation_models::ObservationViabilitySettings, minimum_arc_duration: tudatpy.kernel.astro.time_representation.Time, maximum_arc_duration: tudatpy.kernel.astro.time_representation.Time, minimum_time_between_arcs: tudatpy.kernel.astro.time_representation.Time, reference_link_end_type: tudatpy.kernel.estimation.observable_models_setup.links.LinkEndType = <LinkEndType.receiver: 5>, additional_viability_settings: list[tudat::observation_models::ObservationViabilitySettings] = [], noise_function: Callable[[float | typing.SupportsIndex], numpy.ndarray[numpy.float64[m, 1]]] = None) tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings¶
Function for creating settings object for observation simulation, using observation times according to a requirement for a continuous tracking arc.
Function for creating settings object for observation simulation. Unlike the
tabulated_simulation_settings()function, the resulting settings do not define the observation times explicitly. Instead, this settings object determines the observation times adaptively during the simulation of the observation, with the requirement that observations should be simulated over a set of contiguous arcs (if possible). The exact algorithm meets the following conditions:Observations are only simulated within the time span of
start_timeandend_timeA contiguous tracking arc has simulated observations separated by
interval_between_observationsStarting from
start_time, an observation is simulated eachinterval_between_observations. Once an observation is unviable, as defined by thearc_limiting_constraintsinput, it is checked whether the arc up until that point is longer in duration thanminimum_arc_duration. If it is, the arc is added to the simulated observations. If not, the arc is discarded. In either case, a new arc is started once a viable is observation is encounteredIf the current arc reaches a duration greater than
maximum_arc_duration, the arc is added to the existing observations, and a new arc is startedIf defined (e.g. if not NaN), the current observation time is incremented by
minimum_time_between_arcswhen an arc has been added to the observations.
Nominally, this algorithm ensures that any arc of observations has a minimum and maximum duration. In addition, it ensures that (if desired) there is a minimum time interval between two tracking arcs. This behaviour can be modified by adding
additional_viability_settings, which are not used when computing the tracking arcs, but which are instead only used to reduce the set of simulated observations afterwards.- Parameters:
observable_type (
tudatpy.estimation.observable_models_setup.model_settings.ObservableType) – Observable type of which observations are to be simulated.link_ends (LinkDefinition) – Link ends for which observations are to be simulated.
start_time (astro.time_representation.Time) – First time at which an observation is to be simulated (and checked for viability).
end_time (astro.time_representation.Time) – Maximum time at which an observation is to be simulated (and checked for viability).
interval_between_observations (float) – Cadence (in seconds) of subsequent observations in an arc
arc_limiting_constraints (List[
ObservationViabilitySettings], default = [ ]) – List of settings for the creation of the viability criteria calculators, which are used to check if an observation is viable, and define whether an arc should be terminated.minimum_arc_duration (float) – Minimum permissible time for a tracking arc
maximum_arc_duration (float) – Maximum permissible time for a tracking arc
minimum_time_between_arc (float, default = NaN) – Minimum time between two tracking arcs. If NaN, this is effectively set to the
interval_between_observationsadditional_viability_settings (List[
ObservationViabilitySettings], default = [ ]) – Settings for the creation of the viability criteria calculators, which conduct viability checks on the simulated observations. These settings are not used to determine whether an arc is to be terminated, but are instead applied after the arcs have been computed.noise_function (callable[ [
Time], numpy.ndarray[numpy.float64[m, 1]] ], default = None) – Function providing the observation noise factors as a function of observation time.
- Returns:
Instance of the
ObservationSimulationSettingsderivedTabulatedObservationSimulationSettingsclass.- Return type:
- continuous_arc_simulation_settings_list(link_ends_per_observable: dict[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, list[tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition]], start_time: tudatpy.kernel.astro.time_representation.Time, end_time: tudatpy.kernel.astro.time_representation.Time, interval_between_observations: tudatpy.kernel.astro.time_representation.Time, arc_limiting_constraints: tudat::observation_models::ObservationViabilitySettings, minimum_arc_duration: tudatpy.kernel.astro.time_representation.Time, maximum_arc_duration: tudatpy.kernel.astro.time_representation.Time, minimum_time_between_arcs: tudatpy.kernel.astro.time_representation.Time, reference_link_end_type: tudatpy.kernel.estimation.observable_models_setup.links.LinkEndType = <LinkEndType.receiver: 5>, additional_viability_settings: list[tudat::observation_models::ObservationViabilitySettings] = []) list[tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings]¶
Function for creating a list of settings object for observation simulation, using observation times according to a requirement for a continuous tracking arc.
Function for creating multiple settings objects for observation simulation in a list. This function is equivalent to calling the
continuous_arc_simulation_settings()repeatedly, with the different observables and link definition provided here through link_ends_per_observable. During a single call to this function, one simulation settings object is created for each combination of observable type and link geometry given by the link_ends_per_observable parameter.- Parameters:
link_ends_per_observable (dict[
ObservableType, list[LinkDefinition]]) – Link geometry per observable type of which observations are to be simulated.start_time (astro.time_representation.Time) – First time at which an observation is to be simulated (and checked for viability).
end_time (astro.time_representation.Time) – Maximum time at which an observation is to be simulated (and checked for viability).
interval_between_observations (float) – Cadence (in seconds) of subsequent observations in an arc
arc_limiting_constraints (List[
ObservationViabilitySettings], default = [ ]) – List of settings for the creation of the viability criteria calculators, which are used to check if an observation is viable, and define whether an arc should be terminated.minimum_arc_duration (float) – Minimum permissible time for a tracking arc
maximum_arc_duration (float) – Maximum permissible time for a tracking arc
minimum_time_between_arc (float, default = NaN) – Minimum time between two tracking arcs. If NaN, this is effectively set to the
interval_between_observationsadditional_viability_settings (List[
ObservationViabilitySettings], default = [ ]) – Settings for the creation of the viability criteria calculators, which conduct viability checks on the simulated observations. These settings are not used to determine whether an arc is to be terminated, but are instead applied after the arcs have been computed.
- Returns:
List of
ObservationSimulationSettingsderivedTabulatedObservationSimulationSettingsobjects.- Return type:
- observation_settings_from_collection(observation_collection: tudatpy.kernel.estimation.observations.ObservationCollection, bodies: tudatpy.kernel.dynamics.environment.SystemOfBodies) list[tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings]¶
No documentation found.
- change_simulation_settings_observable_types(observation_simulation_settings: list[tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings], replacement_observable_types: dict[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType] = {<ObservableType.dsn_one_way_averaged_doppler_type: 12>: <ObservableType.one_way_averaged_doppler_type: 4>, <ObservableType.dsn_n_way_averaged_doppler_type: 13>: <ObservableType.n_way_averaged_doppler_type: 10>}) None¶
No documentation found.
- create_observation_simulators(observation_settings: list[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings], bodies: tudatpy.kernel.dynamics.environment.SystemOfBodies) list[tudatpy.kernel.estimation.observable_models.observables_simulation.ObservationSimulator]¶
Function for creating observation simulator objects.
Function for creating observation simulator objects from observation settings. Note that each observation (i.e. combination of observable and link geometry) requires its own observation simulator object.
- Parameters:
observation_settings (List[ ObservationModelSettings ]) – List of settings objects, each object defining the observation model settings for one combination of observable and link geometry that is to be simulated.
bodies (
SystemOfBodies) – Object consolidating all bodies and environment models, including ground station models, that constitute the physical environment.
- Returns:
List of
ObservationSimulatorobjects, each object hosting the functionality for simulating one combination of observable type and link geometry.- Return type:
List[
ObservationSimulator]
Examples
from tudatpy.estimation.observations_setup import observations_simulation_settings # Create bodies bodies = ... # Define parameters settings observation_settings = ... # Create observation simulators observation_simulators = observations_simulation_settings.create_observation_simulators(observation_settings, bodies)
This code snippet closely follows what is done in: The following snippet closely follows what is done in: Galilean Moons State Estimation Example.
Classes¶
Base class for defining settings for simulated observations. |
|
Class for defining settings for simulating observations at a predefined set of times. |
- class ObservationSimulationSettings¶
Bases:
pybind11_objectBase class for defining settings for simulated observations.
- add_dependent_variables(self: tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings, arg0: list[tudatpy.kernel.estimation.observations_setup.observations_dependent_variables.ObservationDependentVariableSettings]) None¶
No documentation found
- clear_dependent_variables(self: tudatpy.kernel.estimation.observations_setup.observations_simulation_settings.ObservationSimulationSettings) None¶
No documentation found
- property ancillary_settings¶
No documentation found
- property dependent_variable_bookkeeping¶
No documentation found
- property dependent_variable_settings_list¶
No documentation found
- property noise_function¶
callable[ [float], numpy.ndarray[numpy.float64[m, 1]] ], default = None - Function providing the observation noise as a function of observation time (can be constant or time-dependent), default is None.
- Type:
- property viability_settings_list¶
List[ ObservationViabilitySettings ], default = [ ]) - Settings for the creation of the viability criteria calculators, which conduct viability checks on the simulated observations.
- Type:
- class TabulatedObservationSimulationSettings¶
Bases:
ObservationSimulationSettingsClass for defining settings for simulating observations at a predefined set of times.
Class for defining settings for simulating observations at a predefined set of times. This type defines predefined time epochs at which applicable observations are to be simulated, stored in a rigid, “tabulated” form. Some observation times may be discarded due to the use of viability settings. Instances of this class are typically created via the
tabulated_simulation_settings()andtabulated_simulation_settings_list()functions.Associated base class:
ObservationModelSettingsExamples
# Code snippet to show the creation of a TabulatedObservationSimulationSettings object import numpy as np from tudatpy.astro.time_representation import DateTime from tudatpy.estimation.observable_models_setup import links, model_settings from tudatpy.estimation.observations_setup import observations_simulation_settings # Set simulation start and end epochs simulation_start_epoch = DateTime(2000, 1, 1).epoch() simulation_end_epoch = DateTime(2000, 1, 4).epoch() # Define the uplink link ends for one-way observable link_ends = dict() link_ends[links.transmitter] = links.body_origin_link_end_id("Earth") link_ends[links.receiver] = links.body_origin_link_end_id("Delfi-C3") # Create LinkDefinition Object and set observation settings for each link/observable link_definition = links.LinkDefinition(link_ends) observation_settings_list = [model_settings.one_way_doppler_instantaneous(link_definition)] # Define observation simulation times (separated by steps of 1 minute) observation_times = np.arange(simulation_start_epoch, simulation_end_epoch, 60.0) # Create TabulatedObservationSimulationSettings object tabulated_observation_simulation_settings = observations_simulation_settings.tabulated_simulation_settings( model_settings.one_way_instantaneous_doppler_type, link_definition, observation_times ) # Show that this is indeed a TabulatedObservationSimulationSettings object print(tabulated_observation_simulation_settings)