ancillary_settings¶
Some observation models require or can use additional quantities in addition to the time tag as input to the calculation of an observable, such a retransmission delay or a frequency band. In Tudat, we call these quantities ancillary settings. The functions in this module are used create objects of type ObservationAncillarySimulationSettings that contain these quantities. The full list of types on ancillary data that can be stored in this object is defined by the ObservationAncillarySimulationVariable enum. The main interface with Tudat is that these objects are can be added to ObservationSimulationSettings objects, which are in turn used as input to observation simulation (see observations_simulation_settings). The ancillary settings can be set in these objects directly using the ancillary_settings attribute, or by using the add_ancillary_settings_to_observable() and add_ancillary_settings_to_observable_for_link_ends() functions (which are functions of convenience to add the same ancillary settings to a set of observation simulation settings)
This module provides two manners in which to create ancillary settings objects:
A list of functions for specific observation types (
two_way_range_ancillary_settings(),two_way_doppler_ancillary_settings(), etc.) that automatically creates an ancillary settings object with the type of settings relevant for a given observable type. In most cases, this is the easiest manner in which to define settings.
# Code snippet to show the creation of an ObservationAncillarySimulationSettings object
from tudatpy.estimation.observations_setup import ancillary_settings
# Example 1: Create ObservationAncillarySimulationSettings object using ancillary_settings.n_way_range_ancillary_settings function
# In this case the frequency bands of the retransmitter - we set it to x band.
n_way_range_ancillary_settings = ancillary_settings.n_way_range_ancillary_settings(frequency_bands=[ancillary_settings.FrequencyBands.x_band])
# Show that this is indeed an ObservationAncillarySimulationSettings object
print(n_way_range_ancillary_settings)
# Example 2: Create ObservationAncillarySimulationSettings object using ancillary_settings.doppler_ancillary_settings function
# In this case the integration time (in seconds) has to be given as input - we set it to 60s
doppler_ancillary_settings = ancillary_settings.doppler_ancillary_settings(60)
# Show that this is indeed an ObservationAncillarySimulationSettings object
print(doppler_ancillary_settings)
Manual creation of an empty
ObservationAncillarySimulationSettingsobject, followed by the manual setting of all the relevant quantities using theset_float_settings()andset_float_list_settings()methods
Functions¶
|
Function for creating ancillary settings for averaged Doppler observable. |
Function for creating ancillary settings for two-way range observable. |
|
Function for creating ancillary settings for two-way averaged Doppler observable. |
|
Function for creating ancillary settings for n-way range observable. |
|
Function for creating ancillary settings for n-way averaged Doppler observable. |
|
Function for creating ancillary settings for DSN n-way range observable ( |
|
Function for creating ancillary settings for DSN n-way averaged Doppler observable ( |
|
Function for creating ancillary settings for two-way Doppler frequency observable ( |
|
Add ancillary settings to all observation simulation settings of a given observable type. |
|
Add ancillary settings to observation simulation settings for a specific observable type and link ends. |
|
|
Get the default DSN turnaround ratio for given uplink and downlink bands. |
|
Get the Cassini turnaround ratio for given uplink and downlink bands. |
- doppler_ancillary_settings(integration_time: float | SupportsIndex = 60.0) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for averaged Doppler observable.
Function for creating ancillary settings for an averaged Doppler observable. Specifically, this function can be used to create settings for the integration time \(\Delta t\) of the observable (see
doppler_integration_time). Note: in case no retransmission delays (or other additional ancillary settings) are to be defined, this setting may be used for one-, two-, or N-way averaged Doppler.- Parameters:
integration_time (float, default = 60.0) – Integration time that is to be used for the averaged Doppler observable
- Returns:
Instance of the
ObservationAncillarySimulationSettingswith the required settings.- Return type:
- two_way_range_ancillary_settings(retransmission_delay: float | SupportsIndex = 0.0) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for two-way range observable.
Function for creating ancillary settings for a two-way range observable. Specifically, this function can be used to create settings for the retransmission delay of the observable (see
link_ends_delays). Note: this function is provided for convenience, and is equivalent to callingn_way_range_ancillary_settings()with a single retransmission delay.- Parameters:
retransmission_delay (float, default = 0.0) – Retransmission delay that is to be applied to the simulation of the two-way observable
- Returns:
Instance of the
ObservationAncillarySimulationSettingswith the required settings.- Return type:
- two_way_doppler_ancillary_settings(integration_time: float | SupportsIndex = 60.0, retransmission_delay: float | SupportsIndex = 0.0) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for two-way averaged Doppler observable.
Function for creating ancillary settings for a two-way range observable. Specifically, this function can be used to create settings for the retransmission delay of the observable (see
link_ends_delays). Note: this function is provided for convenience, and is equivalent to callingn_way_doppler_ancillary_settings()with a single retransmission delay.- Parameters:
- Returns:
Instance of the
ObservationAncillarySimulationSettingswith the required settings.- Return type:
- n_way_range_ancillary_settings(link_end_delays: list[float | SupportsIndex] = [], frequency_bands: list[tudat::observation_models::FrequencyBands] = []) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for n-way range observable.
Function for creating ancillary settings for a n-way range observable. Specifically, this function can be used to create settings for the retransmission delays of the observable (see
link_ends_delays), for each of the retransmitters.- Parameters:
retransmission_delays (list[ float ], default = None) – Retransmission delays that are to be applied to the simulation of the n-way observable. If kept empty, this results in 0 retransmission delay at each retransmitter. If defined, this list must be the same length as the number of retransmitters, and the \(i^{th}\) entry contains the retransmission delay of the \(i^{th}\) retrasmitter
- Returns:
Instance of the
ObservationAncillarySimulationSettingswith the required settings.- Return type:
- n_way_doppler_ancillary_settings(integration_time: float | SupportsIndex = 60.0, link_end_delays: list[float | SupportsIndex] = [], frequency_bands: list[tudat::observation_models::FrequencyBands] = []) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for n-way averaged Doppler observable.
Function for creating ancillary settings for a n-way averaged Doppler observable. Specifically, this function can be used to create settings for the integration time of the observable (see
doppler_integration_time), and the retransmission delays for each of the retransmitters (seelink_ends_delays).- Parameters:
integration_time (float, default = 60.0) – Integration time that is to be used for the averaged Doppler observable
retransmission_delays (list[ float ], default = None) – Retransmission delays that are to be applied to the simulation of the n-way observable. If kept empty, this results in 0 retransmission delay at each retransmitter. If defined, this list must be the same length as the number of retransmitters, and the \(i^{th}\) entry contains the retransmission delay of the \(i^{th}\) retrasmitter
- Returns:
Instance of the
ObservationAncillarySimulationSettingswith the required settings.- Return type:
- dsn_n_way_range_ancillary_settings(frequency_bands: list[tudat::observation_models::FrequencyBands], lowest_ranging_component: float | typing.SupportsIndex, link_end_delays: list[float | typing.SupportsIndex] = []) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for DSN n-way range observable (
dsn_n_way_range()).- Parameters:
frequency_bands (list[tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands]) – List of frequency bands for each link.
lowest_ranging_component (float) – Lowest ranging component for sequential range.
link_end_delays (list[float], default = []) – Retransmission delays at each retransmitter.
- Returns:
Instance of the ObservationAncillarySimulationSettings with the required settings.
- Return type:
tudatpy.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings
- dsn_n_way_doppler_ancillary_settings(frequency_bands: list[tudat::observation_models::FrequencyBands], reference_frequency_band: tudat::observation_models::FrequencyBands, reference_frequency: float | typing.SupportsIndex, integration_time: float | typing.SupportsIndex = 60.0, link_end_delays: list[float | typing.SupportsIndex] = []) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for DSN n-way averaged Doppler observable (
dsn_n_way_doppler_averaged()).- Parameters:
frequency_bands (list[tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands]) – List of frequency bands for each link.
reference_frequency_band (tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands) – Reference frequency band at reception.
reference_frequency (float) – Reference frequency for Doppler calculation.
integration_time (float, default = 60.0) – Integration time for the averaged Doppler observable.
link_end_delays (list[float], default = []) – Retransmission delays at each retransmitter.
- Returns:
Instance of the ObservationAncillarySimulationSettings with the required settings.
- Return type:
tudatpy.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings
- doppler_measured_frequency_ancillary_settings(frequency_bands: list[tudat::observation_models::FrequencyBands]) tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings¶
Function for creating ancillary settings for two-way Doppler frequency observable (
two_way_doppler_instantaneous_frequency()).- Parameters:
frequency_bands (list[tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands]) – List of frequency bands for each link.
- Returns:
Instance of the ObservationAncillarySimulationSettings with the required settings.
- Return type:
tudatpy.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings
- add_ancillary_settings_to_observable(observation_simulation_settings_list: list[tudat::simulation_setup::ObservationSimulationSettings<tudat::Time>], ancillary_settings: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, observable_type: tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType) None¶
Add ancillary settings to all observation simulation settings of a given observable type.
- Parameters:
observation_simulation_settings_list (list[tudatpy.estimation.observations_setup.ObservationSimulationSettings]) – List of observation simulation settings to modify.
ancillary_settings (
ObservationAncillarySimulationSettings) – Ancillary settings to add.observable_type (
ObservableType) – Observable type for which to add the ancillary settings.
- add_ancillary_settings_to_observable_for_link_ends(observation_simulation_settings_list: list[tudat::simulation_setup::ObservationSimulationSettings<tudat::Time>], ancillary_settings: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, observable_type: tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservableType, link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition) None¶
Add ancillary settings to observation simulation settings for a specific observable type and link ends.
- Parameters:
observation_simulation_settings_list (list[tudatpy.estimation.observations_setup.ObservationSimulationSettings]) – List of observation simulation settings to modify.
ancillary_settings (
ObservationAncillarySimulationSettings) – Ancillary settings to add.observable_type (
ObservableType) – Observable type for which to add the ancillary settings.link_ends (
LinkDefinition) – Link ends for which to add the ancillary settings.
- dsn_default_turnaround_ratios(uplink_band: tudatpy.kernel.estimation.observations_setup.ancillary_settings.FrequencyBands, downlink_band: tudatpy.kernel.estimation.observations_setup.ancillary_settings.FrequencyBands) float¶
Get the default DSN turnaround ratio for given uplink and downlink bands.
- Parameters:
uplink_band (tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands) – Uplink frequency band.
downlink_band (tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands) – Downlink frequency band.
- Returns:
The turnaround ratio.
- Return type:
- cassini_turnaround_ratios(uplink_band: tudatpy.kernel.estimation.observations_setup.ancillary_settings.FrequencyBands, downlink_band: tudatpy.kernel.estimation.observations_setup.ancillary_settings.FrequencyBands) float¶
Get the Cassini turnaround ratio for given uplink and downlink bands.
This function returns the specific Ka-band turnaround ratio for Cassini if both bands are Ka-band, otherwise it falls back to the DSN default turnaround ratios.
- Parameters:
uplink_band (tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands) – Uplink frequency band.
downlink_band (tudatpy.estimation.observations_setup.ancillary_settings.FrequencyBands) – Downlink frequency band.
- Returns:
The turnaround ratio.
- Return type:
Enumerations¶
Enumeration of observation ancillary variable types. |
|
Enumeration of observation intermediate variable types. |
|
Enumeration of frequency bands. |
- class ObservationAncillarySimulationVariable¶
Bases:
pybind11_objectEnumeration of observation ancillary variable types.
Members:
- link_ends_delays :
Retransmission delays at the retransmitter link ends (in seconds), typically for an n-way range or Doppler observation. For a set of link ends consisting of \(N\) one-way link ends (for instance
transmitter->``retransmitter``->``receiver`` for \(N=2\), this ancillary setting is a list of length \(N-1\) representing the time in seconds between signal reception and subsequent retransmission/reflection at a link end. This ancillary setting is retrieved and set using theget_float_list_settingsandset_float_list_settings- doppler_integration_time :
Time interval \(\Delta t\) in seconds over which averaged Doppler observables (see model_settings for
_averagedobservation models) are averaged. This quantity is also termed the count time. This ancillary setting is retrieved and set using theget_float_settingsandset_float_settings- doppler_reference_frequency :
Reference frequency \(f_{\text{ref}}\) w.r.t. which the Doppler observable is computed for the
dsn_n_way_doppler_averaged()observation model. This ancillary setting is retrieved and set using theget_float_settingsandset_float_settings- frequency_bands :
Frequency bands for the up and down-link of a radio observable, used to compute the turnaround ratio \(M_{2}\) at the retransmitter (so that the received frequency \(f_{1}\) and the retransmitted frequency \(f_{2}\) are related as \(f_{2}=M_{2}\cdot f_{1}\). This ancillary setting is retrieved and set using the
get_float_list_settingsandset_float_list_settingsthe mapping of theFrequencyBandsenum to integers (with s-band equal to 1, x-band to 1, ku band to 2, ka-band to 3). So, for an s-band up and x-band downlink, this ancillary setting gets the value[0, 1]- reception_reference_frequency_band :
Receiver reference frequency band w.r.t. which the reference turnaround ratio \(M_{2,R}\) is computed for the
dsn_n_way_doppler_averaged()observation model. This ancillary setting is retrieved and set using theget_float_settingsandset_float_settings- sequential_range_lowest_ranging_component :
Lowest sequential ranging component \(n\) used for the
dsn_n_way_range()observation model. This ancillary setting is retrieved and set using theget_float_settingsandset_float_settings
- ObservationAncillarySimulationVariable.name -> str
- class ObservationIntermediateSimulationVariable¶
Bases:
pybind11_objectEnumeration of observation intermediate variable types.
This enum lists variables that are computed during the observation simulation process and can be stored for later analysis.
Members:
transmitter_frequency_intermediate
received_frequency_intermediate
- ObservationIntermediateSimulationVariable.name -> str
- class FrequencyBands¶
Bases:
pybind11_objectEnumeration of frequency bands.
This enum lists common frequency bands used in deep space navigation.
Members:
s_band
x_band
ka_band
ku_band
- FrequencyBands.name -> str
Classes¶
Class for holding ancillary settings for observation simulation (see module level documentation for typical usage and creation). |
- class ObservationAncillarySimulationSettings¶
Bases:
pybind11_objectClass for holding ancillary settings for observation simulation (see module level documentation for typical usage and creation).
This class holds both single-valued (float) and multi-valued (list of floats) ancillary settings
- get_float_list_settings(self: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, setting_type: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationVariable, throw_exception: bool = True) list[float]¶
Function to retrieve a multi-valued (
listoffloat) ancillary setting value- Parameters:
setting_type (ObservationAncillarySimulationVariable) – Type of the setting for which the value is to be returned
throw_exception (bool, default = false) – Boolean defining whether to throw an exception if the requested setting does not exist, or does not exist as list of floating point values.
- Returns:
Value of the requested ancillary variable (or empty list if it does not exist and
throw_exceptionisfalse)- Return type:
Examples
# Code snippet to show how to retrieve ObservationAncillarySimulationSettings info # using the ObservationAncillarySimulationSettings.get_float_settings function from tudatpy.estimation.observations_setup import ancillary_settings # Create Ancillary Settings n_way_range_ancillary_settings = ancillary_settings.n_way_range_ancillary_settings(frequency_bands=[ancillary_settings.FrequencyBands.x_band]) # Verify that we indeed added Frequency Bands as Ancillary Simulation Variables, using n_way_range_ancillary_settings.get_float_list_settings list_num = n_way_range_ancillary_settings.get_float_list_settings(ancillary_settings.ObservationAncillarySimulationVariable.frequency_bands) for num in list_num: name = ancillary_settings.ObservationAncillarySimulationVariable(int(num)).name print(f'Ancillary Simulation Variable(s): {name}, corresponding to enumeration object n. {int(num)} of the ObservationAncillarySimulationVariable Enumeration')
- get_float_settings(self: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, setting_type: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationVariable, throw_exception: bool = True) float¶
Function to retrieve a single-valued (
float) ancillary setting value- Parameters:
setting_type (ObservationAncillarySimulationVariable) – Type of the setting for which the value is to be returned
throw_exception (bool, default = false) – Boolean defining whether to throw an exception if the requested setting does not exist, or does not exist as a floating point value.
- Returns:
Value of the requested ancillary variable (or NaN if it does not exist and
throw_exceptionisfalse)- Return type:
- set_float_list_settings(self: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, variable: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationVariable, value: list[float | SupportsIndex]) None¶
Function to set a single-valued ancillary setting value in this object
- Parameters:
setting_type (ObservationAncillarySimulationVariable) – Type of the setting for which the value is to be set
value (float) – Value for the setting
- set_float_settings(self: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, variable: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationVariable, value: float | SupportsIndex) None¶
Function to set a multi-valued ancillary setting in this object
- Parameters:
setting_type (ObservationAncillarySimulationVariable) – Type of the setting for which the value is to be set
value (list[float]) – List of value that define the provided setting type
- set_intermediate_double_data(self: tudatpy.kernel.estimation.observations_setup.ancillary_settings.ObservationAncillarySimulationSettings, variable: tudat::observation_models::ObservationIntermediateSimulationVariable, value: float | SupportsIndex) None¶