model_settings¶
This module contains a set of factory functions for creating settings for observation models (e.g. one-way range,
two-way Doppler, angular position, etc.). The functions here all create an object of type ObservationModelSettings, from which observation models are created.
Many observation models are based on the transfer of electromagnetic signals (e.g. laser ranging, radio Doppler, etc.),
which require the solution of the light-time solution. Deviations from ideal Euclidean propagation at the speed of light
can be modelled using light-time corrections, for which settings (as objects of type LightTimeCorrectionSettings) are created in the light_time_corrections module and provided as input to functions here. Similarly, settings
for observation biases (as objects of type ObservationBiasSettings) are created
in the biases module. Definition of the observation link are created through the links module.
Details on the procedure to create observation models, and the various top-level options for their creation, is given on the user guide.
Functions¶
|
Function for creating settings for a one-way range observable. |
|
Function for creating settings for a two-way range observable. |
Function for creating settings for a two-way range observable. |
|
|
Function for creating settings for a n-way range observable. |
Function for creating settings for a n-way range observable. |
|
|
Function for creating settings for a two-way range observation model, as generated by DSN/ESTRACK. |
|
Function for creating settings for a one-way averaged Doppler observable. |
|
Function for creating settings for an n-way averaged Doppler observable. |
Function for creating settings for an n-way averaged Doppler observable. |
|
|
Function for creating settings for an n-way averaged Doppler observable. |
Function for creating settings for an n-way averaged Doppler observable. |
|
|
Function for creating settings for a two- or three-way Doppler observation model, as generated by DSN/ESTRACK. |
|
Function for creating settings for a one-way instantaneous Doppler observable. |
|
Function for creating settings for a two-way instantaneous Doppler observable. |
Function for creating settings for a two-way instantaneous Doppler observable. |
|
Function for creating settings for a two-way instantaneous Doppler frequency observable. |
|
|
Function for creating settings for an angular position observable. |
|
Function for creating settings for a relative angular position observable. |
|
Function for creating settings for a Cartesian position observable. |
|
Function for creating settings for a relative Cartesian position observable. |
|
Function for creating settings for a Cartesian velocity observable. |
|
No documentation found. |
|
Function for creating settings for a time difference of arrival observation model |
|
No documentation found. |
- one_way_range(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc4e7cf0>, time_scale_for_observable: tudatpy.kernel.astro.time_representation.TimeScales = <TimeScales.tdb_scale: 2>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a one-way range observable.
Function for creating observation model settings of one-way range type observables, for a single link definition. The associated observation model creates a single-valued observable \(h_{_{\text{1-range}}}\) as follows (in the unbiased case):
\[\begin{split}h_{_{\text{1-range}}}(t_{R},t_{T})&=c\left(t_{R}-t_{T}\right)\\ &=|\mathbf{r}_{R}(t_{R})-\mathbf{r}_{T}(t_{T})| + \Delta s\end{split}\]where \(\mathbf{r}_{R}\), \(\mathbf{r}_{T}\), \(t_{R}\) and \(t_{T}\) denote the position function of receiver and transmitter, and evaluation time of receiver and transmitter. The term \(\Delta s\) denotes light-time corrections due to e.g relativistic, atmospheric effects (as defined by the
light_time_correction_settingsinput). The transmission and reception time are related to the light-time \(T=t_{R}-t_{T}\) As a result, the calculation of the one-way range (and light-time) requires the iterative solution of the light-time equation (seelight_time_convergence_settings()for details).If the observable is computed in a different time scale (that is, if the
time_scale_for_observableis set to something other than TDB), the observable is computed from:\[\bar{h}_{_{\text{1-range}}}(t_{R},t_{T})=h_{_{\text{1-range}}}(t_{R},t_{T})+\left(\bar{t}_{R}-t_{R}\right)-\left(\bar{t}_{t}-t_{t}\right)\]Here, \(t\) denotes the epoch in TDB and \(\bar{t}\) the epoch on the time scale defined by
time_scale_for_observable(typically UTC), ;math:h_{_{text{1-range}}} is the observable as defined above (as computed from the TDB light time) and \(\bar{h}_{_{\text{1-range}}}\) is the corrected observable as computed from the light time as measured in the correct time scale. It is important to note that the time tag of the observation wil always be in TDB.- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the transmitter and
receiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is None (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timetime_scale_for_observable (
TimeScales, default =tdb_scale) – Time scale in which the light time is to be computed (TDB by default)
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the one-way observable.- Return type:
Examples
# Code Snippet to showcase the use of the one_way_range function from tudatpy.estimation.observable_models_setup import links, model_settings # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary. This will be the input to the function. Link_Definition_Object = links.LinkDefinition(link_ends) # Create minimal ObservationModelSettings object (only required Link_Definition_Object argument is passed) # Note: other optional parameters (bias_settings, light_time_correction_settings, light_time_convergence_settings) can be set observation_settings = model_settings.one_way_range(Link_Definition_Object) # Show that this returns an ObservationModelSettings object. print(observation_settings)
- two_way_range(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52d630>, time_scale_for_observable: tudatpy.kernel.astro.time_representation.TimeScales = <TimeScales.tdb_scale: 2>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way range observable.
Same as
n_way_range(), with \(n=2\). This function is provided for convenience.- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the transmitter, retransmitter and
receiverLinkEndTypeentries to be definedlight_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used for each constituent one-way range. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation). Note that only one bias setting is applied to the n-way observable.light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timetime_scale_for_observable (
TimeScales, default =tdb_scale) – Time scale in which the light time is to be computed (TDB by default)
- Returns:
Instance of the
ObservationModelSettingsderivedNWayRangeObservationModelSettingsclass.- Return type:
Examples
# Code Snippet to showcase the use of the two_way_range function from tudatpy.estimation.observable_models_setup import links, model_settings # two_way_range() takes a Link Definition Object as input to the function. # Note: as for this case, transmitter, retransmitter and receiver are required to define the Link Ends dictionary link_ends = dict() link_ends[links.transmitter] = links.body_origin_link_end_id("Earth") link_ends[links.retransmitter] = links.body_origin_link_end_id("Delfi-C3") link_ends[links.receiver] = links.body_origin_link_end_id("Earth") # Create the LinkDefinition object Link_Definition_Object = links.LinkDefinition(link_ends) # Create minimal ObservationModelSettings object (only required Link_Definition_Object argument is passed) # Note: other optional parameters (bias_settings, light_time_correction_settings, light_time_convergence_settings) can be set observation_settings = model_settings.two_way_range(Link_Definition_Object) # Show that two_way_range() returns an NWayRangeObservationModelSettings object. print(observation_settings)
- two_way_range_from_one_way_links(one_way_range_settings: list[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, time_scale_for_observable: tudatpy.kernel.astro.time_representation.TimeScales = <TimeScales.tdb_scale: 2>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way range observable.
Same as
n_way_range_from_one_way_links(), with \(n=2\). This function is provided for convenience.- Parameters:
one_way_range_settings (List[
ObservationModelSettings]) – List of observation model settings of size two, with the first entry the one-way range settings for the uplink, and the second entry the one-way range settings for the downlink. TheLinkDefinitionof this two-way range observable is created from this list, with thetransmitterandretransmitterdefined by thetransmitterandreceiverof the first entry in this list. Theretransmitterandreceiverare defined by thetransmitterandreceiverof the second entry of this list.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation). Note that only one bias setting is applied to the n-way observable.time_scale_for_observable (
TimeScales, default =tdb_scale) – Time scale in which the light time is to be computed (TDB by default)
- Returns:
Instance of the
ObservationModelSettingsderivedNWayRangeObservationModelSettingsclass.- Return type:
Examples
# Code Snippet to showcase the use of the two_way_range_from_one_way_links function from tudatpy.estimation.observable_models_setup import links, model_settings # two_way_range_from_one_way_links() takes a list of ObservationModelSettings objects # Note: as for this case, transmitter, retransmitter and receiver are required to define the Link Ends dictionary link_ends = dict() link_ends[links.transmitter] = links.body_origin_link_end_id("Earth") link_ends[links.retransmitter] = links.body_origin_link_end_id("Delfi-C3") link_ends[links.receiver] = links.body_origin_link_end_id("Earth") # Create the LinkDefinition object to be used as input Link_Definition_Object = links.LinkDefinition(link_ends) # define LinkDefinition object two_way_range_observation_settings_list = [model_settings.two_way_range(Link_Definition_Object)] # define (minimal) NWayRangeObservationModelSettings object two_way_range_one_way_link_settings = model_settings.two_way_range_from_one_way_links(two_way_range_observation_settings_list) # Show that two_way_range_from_one_way_links() returns an NWayRangeObservationModelSettings object. print(two_way_range_one_way_link_settings)
- n_way_range(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52dab0>, time_scale_for_observable: tudatpy.kernel.astro.time_representation.TimeScales = <TimeScales.tdb_scale: 2>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a n-way range observable.
Function for creating observation model settings of n-way range type observables. The associated observation model creates a scalar observable \(h_{_{\text{N-range}}}\) by combining together a series \(n\) one-way range observations (see
one_way_range()).By default, the reception time of the \(i^{th}\) one-way range in this n-way range is set as the transmission time of the \((i+1)^{th}\) one-way range. A retransmission delay may be defined by ancillary settings (see
n_way_range_ancillary_settings()) when creating observation simulation settings (see user guide).For this function, the settings for each constituent one-way range (with the exception of the link end identifiers) are equal.
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitterandreceiverLinkEndTypeentries to be defined, as well as areflector1,reflector2, …. (with the number of reflectors to be defined by the user). For a two-way range, theretransmittermay be used instead ofreflector1(which are identical in the role they play)light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used for each constituent one-way range. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation). Note that only one bias setting is applied to the n-way observable.light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timetime_scale_for_observable (
TimeScales, default =tdb_scale) – Time scale in which the light time is to be computed (TDB by default)
- Returns:
Instance of the
ObservationModelSettingsderivedNWayRangeObservationModelSettingsclass.- Return type:
Examples
# Code Snippet to showcase the use of the n_way_range function from tudatpy.estimation.observable_models_setup import links, model_settings # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # n_way_range() takes a Link Definition Object as input to the function. # Let's create it from link_ends Link_Definition_Object = links.LinkDefinition(link_ends) # Create minimal ObservationModelSettings object (only required Link_Definition_Object argument is passed) # Note: other optional parameters (bias_settings, light_time_correction_settings, light_time_convergence_settings) can be set observation_settings = model_settings.n_way_range(Link_Definition_Object) # Show that n_way_range() returns an NWayRangeObservationModelSettings object. print(observation_settings)
- n_way_range_from_one_way_links(one_way_range_settings: list[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, time_scale_for_observable: tudatpy.kernel.astro.time_representation.TimeScales = <TimeScales.tdb_scale: 2>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a n-way range observable.
Function for creating observation model settings of n-way range type observables, for a single link definition. The implementation is the same as
n_way_range(), with the difference that the input is provided as separate settings for the constituent one-way ranges.- Parameters:
one_way_range_settings (List[
ObservationModelSettings]) – List of observation model settings for each of the \(n\) constituent one-way ranges of the n-way range observable. TheLinkDefinitionof this n-way range observable is created from this list, with thetransmitterandretransmitterdefined by thetransmitterandreceiverof the first entry in this list. Theretransmitter(n-1) andreceiverare defined by thetransmitterandreceiverof the \(\text{n}^{th}\) entry of this list.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation). Note that only one bias setting is applied to the n-way observable.time_scale_for_observable (
TimeScales, default =tdb_scale) – Time scale in which the light time is to be computed (TDB by default)
- Returns:
Instance of the
ObservationModelSettingsderivedNWayRangeObservationModelSettingsclass.- Return type:
Examples
# Code Snippet to showcase the use of the n_way_range_from_one_way_links function from tudatpy.estimation.observable_models_setup import links, model_settings # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # n_way_range_from_one_way_links() takes 1) a list of ObservationModelSettings objects and 2) bias as input (default is None) # Let's create it. Link_Definition_Object = links.LinkDefinition(link_ends) # define LinkDefinition object n_way_observation_settings_list = [model_settings.n_way_range(Link_Definition_Object)] # define (minimal) ObservationModelSettings object n_way_from_one_link_observation_settings = model_settings.n_way_range_from_one_way_links(n_way_observation_settings_list, bias_settings = None) # Show that n_way_range_from_one_way_links() returns an NWayRangeObservationModelSettings object. print(n_way_from_one_link_observation_settings)
- dsn_n_way_range(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e8b0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way range observation model, as generated by DSN/ESTRACK.
Function for creating settings for a two-way range observation model, as generated by DSN/ESTRACK. This model is used for processing of real radio tracking data, for instance from ODF, TNF or TFMS files (see TODO-ADDLINK). It requires a frequency calculator to be set for the transmitter.
The range observable at time tag \(t_{R}\) (in TDB) is computed as follows, based on [17]:
First the time tag is computed from TDB to UTC (denoted here \(\bar{t}_{R}\)).
The two-way light time from the receiver \(R\) to the transmitter \(T\) is then computed to obtain \(t_{T}\). Note that, if frequency-dependent light-time corrections (such as ionosphere) are used, the transmission frequency \(f_{T}\) is evaluated using the transmission epoch from the first iteration of the light-time solution (this incurs a very minor error on the frequencies used in the light-time solution).
This transmission time is converted to UTC to obtain \(\bar{t}_{T}\).
The transmitter frequency integral is then computed from the following, with \(K\) a conversion factor that depends on the up- and downlink frequency (1/2 for S up and X down; \(221/(2\cdot 749)\) for X up and X down; \(221/(3599 \cdot 2.0)\) for X up and Ka down).:
\[F = K \int_{\bar{t}_{T}}^{\bar{t}_{R}} f_{T}(t)\, dt\]The final observable \(h\) is then computed from, where \(n\) is the lowest ranging component (defined in the ancillary settings, see below).
\[h = \mod\left(F, 2^{n+6}\right)\]This observable gives the range in “range units” (RU), modulo the factor \(2^{n+6}\). The conversion factor from range units to meters depends on the transmitted frequency and can therefore not (if the signal is ramped) be computed a priori. The conversion factor is equal to:
\[\frac{c}{K \cdot f_{T}(\bar{t}_{T})}\]Computing this observable requires the following ancillary settings to be set:
sequential_range_lowest_ranging_component— The lowest sequential ranging component.frequency_bands— The frequency band for the up- and downlink, used to compute the turnaround ratio \(M_{2}\) on the spacecraft.
Typically, these quantities are loaded automatically from the tracking data files.
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitter,retransmitter1andreceiverandLinkEndTypeentries to be definedlight_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsderived class defining the settings for this range observable.- Return type:
- one_way_doppler_averaged(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52d330>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a one-way averaged Doppler observable.
Function for creating observation model settings for one-way averaged Doppler observables, for a single link definition. The associated observation model creates a scalar observable \(h_{_{1-\bar{\text{Dopp}}}}\) as follows (in the unbiased case):
\[\begin{split}h_{_{1-\bar{\text{Dopp}}}}&=c\int_{t-\Delta t/2}^{t+\Delta t/2}\frac{dt_{T}}{dt_{R}}d\bar{t}\\ &=\frac{h_{_{\text{1-range}}}(t_{R}=t+\Delta t/2,t_{T})-h_{_{\text{1-range}}}(t_{R}=t+\Delta t/2,t_{T})}{\Delta t}\end{split}\]where, in the latter formulation (which is the one that is implemented), the observable is referenced to the receiver time. This averaged Doppler observable is computed as the difference of two one-way range observables (see
one_way_range()), with the reference time shifted by \(\Delta t\) (in TDB time, with the time tag in the center of this interval). As such, it is sensitive to numerical errors for small \(\Delta t\)The integration time \(\Delta t\) is defined in the ancillary settings (see user guide) when simulating the observations (with 60 s as default).
Note that this observation model is a simplified version of the Doppler data as generated by the DSN/ESTRACK, which is suitable for simulation studies
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
transmitterandreceiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsderived OneWayDifferencedRangeRateObservationSettings class defining the settings for the one-way closed-loop doppler observable.- Return type:
- two_way_doppler_averaged(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e370>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for an n-way averaged Doppler observable.
Function for creating observation model settings for n-way averaged Doppler observables, for a single link definition. The implementation is analogous to the
one_way_doppler_averaged()observable. But, in the present case the observable is computed from the difference of two n-way range observables, with the reference time shifted by \(\Delta t\).The integration time \(\Delta t\) is defined in the ancillary settings (see user guide) when simulating the observations (with 60 s as default).
Note that this observation model is a simplified version of the Doppler data as generated by the DSN/ESTRACK, which is suitable for simulation studies
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitterandreceiverLinkEndTypeentries to be defined, as well as a retransmitter1,retransmitter2, …. (with the number of retransmitters to be defined by the user).light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsderived ~tudatpy.estimation.observable_models_setup.model_settings.NWayDifferencedRangeRateObservationSettings class defining the settings for the one-way closed-loop doppler observable.- Return type:
- two_way_doppler_averaged_from_one_way_links(one_way_range_settings: list[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for an n-way averaged Doppler observable.
Function for creating observation model settings for n-way averaged Doppler observables, for a single link definition. The implementation is analogous to the
one_way_doppler_averaged()observable. But, in the present case the observable is computed from the difference of two n-way range observables, with the reference time shifted by \(\Delta t\).The integration time \(\Delta t\) is defined in the ancillary settings when simulating the observations (with 60 s as default).
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitterandreceiverLinkEndTypeentries to be defined, as well as aretransmitter1,retransmitter2, …. (with the number of retransmitters to be defined by the user).light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsderived ~tudatpy.estimation.observable_models_setup.model_settings.NWayDifferencedRangeRateObservationSettings class defining the settings for the one-way closed-loop doppler observable.- Return type:
- n_way_doppler_averaged(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e4b0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for an n-way averaged Doppler observable.
Function for creating observation model settings for n-way averaged Doppler observables, for a single link definition. The implementation is analogous to the
one_way_doppler_averaged()observable. But, in the present case the observable is computed from the difference of two n-way range observables, with the reference time shifted by \(\Delta t\).The integration time \(\Delta t\) is defined in the ancillary settings when simulating the observations (with 60 s as default).
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitterandreceiverLinkEndTypeentries to be defined, as well as aretransmitter1,retransmitter2, …. (with the number of retransmitters to be defined by the user).light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsderived ~tudatpy.estimation.observable_models_setup.model_settings.NWayDifferencedRangeRateObservationSettings class defining the settings for the one-way closed-loop doppler observable.- Return type:
- n_way_doppler_averaged_from_one_way_links(one_way_range_settings: list[tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc50e5f0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for an n-way averaged Doppler observable.
Function for creating observation model settings for n-way averaged Doppler observables, for a single link definition. The implementation is the same as
n_way_doppler_averaged(), with the difference that the constituent one-way range observables may have different settings.- Parameters:
one_way_range_settings (List[
ObservationModelSettings]) – List of observation model settings for each of the \(n\) constituent one-way ranges of the n-way averaged range rate observable. TheLinkDefinitionof this n-way range observable is created from this list, with thetransmitterandretransmitterdefined by thetransmitterandreceiverof the first entry in this list. Theretransmitter(n-1) andreceiverare defined by thetransmitterandreceiverof the \(\text{n}^{th}\) entry of this list.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)
- Returns:
Instance of the
ObservationModelSettingsderived ~tudatpy.estimation.observable_models_setup.model_settings.NWayDifferencedRangeRateObservationSettings class defining the settings for the one-way closed-loop doppler observable.- Return type:
- dsn_n_way_doppler_averaged(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc4c6ff0>, subtract_doppler_signature: bool = True) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two- or three-way Doppler observation model, as generated by DSN/ESTRACK.
Function for creating settings for a two- or three-way Doppler observation model, as generated by DSN/ESTRACK. This model is used for processing of real radio tracking data, for instance from ODF, TNF or TFMS files (see TODO-ADDLINK). It requires a frequency calculator to be set for the transmitter.
The Doppler observable at time tag \(t_{R}\) (in TDB) is computed as follows, based on [17]:
First the time tag is computed from TDB to UTC (denoted here \(\bar{t}_{R}\)).
The receiver start time \(\bar{t}_{R,s}\) and end time \(\bar{t}_{R,e}\) (in UTC) of the observation are then computed as \(\bar{t}_{R,s}=\bar{t}_{R}-\Delta t/2\) and \(\bar{t}_{R,e}=\bar{t}_{R}+\Delta t/2\).
These times are then converted back to TDB times \(t_{R,s}\) and \(t_{R,e}\).
The two-way light time from the receiver \(R\) to the transmitter \(T\) is then computed, for both \(t_{R,s}\) and \(t_{R,e}\) as reception times, to obtain the associated signal transmission times (in TDB) \(t_{T,s}\) and \(t_{T,e}\). Note that, if frequency-dependent light-time corrections (such as ionosphere) are used, the transmission frequency \(f_{T}\) is evaluated using the transmission epoch from the first iteration of the light-time solution (this incurs a very minor error on the frequencies used in the light-time solution).
These transmission times are converted to UTC to obtain \(\bar{t}_{T,s}\) and \(\bar{t}_{T,e}\).
The transmitter frequency integral is then computed from the following:
\[F = \int_{\bar{t}_{T,s}}^{\bar{t}_{T,e}} f_{T}(t)\, dt\]The final observable \(h\) is then computed from:
\[h = M_{2_{R}}f_{\text{ref}} \pm \frac{M_{2}}{\Delta t} F\]where the sign is defined by the
subtract_doppler_signatureinput (negative iftrue; positive iffalse).Computing this observable requires the following ancillary settings to be set:
doppler_integration_time— Defines the observable integration time at the receiver (in UTC seconds).doppler_reference_frequency— The Doppler reference frequency \(f_{\text{ref}}\). If not used, must be set to 0.frequency_bands— The frequency band for the up- and downlink, used to compute the turnaround ratio \(M_{2}\) on the spacecraft.reception_reference_frequency_band— The receiver reference frequency band used to compute \(M_{2_{R}}\).
Typically, these quantities are loaded automatically from the tracking data files.
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitter,retransmitter1andreceiverandLinkEndTypeentries to be definedlight_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timesubtract_doppler_signature (bool, default = true) – Boolean defining if scaled frequency integral is to be subtracted or added (see formulation above)
- Returns:
ObservationModelSettings– Instance of theObservationModelSettingsderived class defining the settings for doppler observable..
- one_way_doppler_instantaneous(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, transmitter_proper_time_rate_settings: tudatpy.kernel.estimation.observable_models_setup.model_settings.DopplerProperTimeRateSettings = None, receiver_proper_time_rate_settings: tudatpy.kernel.estimation.observable_models_setup.model_settings.DopplerProperTimeRateSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e1b0>, normalized_with_speed_of_light: bool = False) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a one-way instantaneous Doppler observable.
Function for creating settings for a one-way instantaneous Doppler observable for a single link definition. The associated observation model creates a scalar observable \(h_{_{\text{1-Dopp.}}}\) as follows (in the unbiased case):
\[h_{_{\text{1-Dopp.}}}=c\left(\frac{d\tau_{T}}{dt_{T}}\frac{dt_{T}}{dt_{R}}\frac{dt_{R}}{d\tau_{R}}-1\right)\]where \(t\) and \(\tau\) denote coordinate and proper time of the transmitter T and receiver R, respectively. The receiver and transmitter position and coordinate time are computed identically as described for the
one_way_range().The observable may be non-dimensionalized by the speed of light \(c\) (using the
normalized_with_speed_of_lightinput), which results in the observable being equal to the received and transmitted signal frequencies \(f_{R}/f_{T}-1\). For the observation model providing a model for the received frequency, usetwo_way_doppler_instantaneous_frequency().This observable represents the ‘instantaneous (non-integrated)’ Doppler observable, such as those obtained from open-loop observations. It should not be used for the modelling of the typical closed-loop observations used in deep space tracking (for which the
one_way_doppler_averaged()should be used).The coordinate time derivative \(\frac{dt_{T}}{dt_{R}}\) is always computed when generating this observable as:
\[\frac{dt_{T}}{dt_{R}}=\]Settings for the proper time rates \(\frac{d\tau}{dt}\) can be specified by the user through the
transmitter_proper_time_rate_settingsandreceiver_proper_time_rate_settingsarguments (inputs, see Parameters). Whenever these are left empty, the proper time rates are omitted (set to 1.0).The above formulation is sensitive to numerical noise, since two almost equal quantities are subtracted. To mitigate this, we expand each term in the above equation into a Taylor series. By setting \(\Delta\tau=\tau-t\), we have:
\[\begin{split}\frac{d\tau}{dt}&=1+\frac{d\Delta\tau}{dt}\\ \frac{dt}{d\tau}&\approx 1+\sum_{i=0}^{N}(-1)^i\frac{d\Delta\tau}{dt}\end{split}\]and we set:
\[\begin{split}F_{\tau}&=\frac{d\tau_{T}}{dt_{T}}\frac{dt_{R}}{d\tau_{R}}-1\\ &\approx \frac{d\Delta\tau_{T}}{dt_{T}}\cdot\left(1+\sum_{i=0}^{N}(-1)^i\frac{d\Delta\tau}{dt}\right)\end{split}\]Similarly, we can expand the coordinate time derivative as, setting \(T=t_{R}-t_{T}\):
\[\begin{split}s_{T}&=-\frac{dT}{d\mathbf{r}_{T}}\cdot\left(\frac{\mathbf{v_{T}}}{c}\right)\\ s_{R}&=\frac{dT}{d\mathbf{r}_{R}}\cdot\left(\frac{\mathbf{v_{R}}}{c}\right)\\ \frac{1}{1+s_{T}}&\approx 1+\sum_{i=0}^{N}s_{T}\end{split}\]then:
\[\begin{split}F_{t}&=\frac{dt_{T}}{dt_{R}}-1\\ &\approx -s_{R}+\left(\sum_{i=0}^{N}s_{T}\right)(1-s_{R}\\\end{split}\]Using these approximations, the complete observable is then computed as:
\[h_{_{\text{1-Dopp.}}} = F_{t}F_{\tau}+F_{t}+F_{\tau}\]At present, we have hardcoded \(N=3\), which should be sufficient for all conceivable solar system cases.
Note that, when calculating the partial derivatives of the observables for estimation, only the first-order Taylor series terms are retained.
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
transmitterandreceiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)transmitter_proper_time_rate_settings (
DopplerProperTimeRateSettings, default = None) – Settings for computing the transmitter proper time rate \(\frac{d\tau}{dt}\), default is none (\(\frac{d\tau}{dt}=1\))receiver_proper_time_rate_settings (
DopplerProperTimeRateSettings, default = None) – Settings for computing the receiver proper time rate \(\frac{d\tau}{dt}\), default is none (\(\frac{d\tau}{dt}=1\))light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timenormalized_with_speed_of_light (bool, default = false) – Option to non-dimensionalize the observable with speed of light \(c\)
- Returns:
Instance of the
ObservationModelSettingsderivedOneWayDopplerObservationModelSettingsclass defining the settings for the one-way open doppler observable observable.- Return type:
- two_way_doppler_instantaneous(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e2b0>, normalized_with_speed_of_light: bool = False) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way instantaneous Doppler observable.
Implementation as in
two_way_doppler_instantaneous_from_one_way_links(), but without full control over the up- and downlink settings (specifically, no control over proper time rate settings: \(d\tau/dt=1\) is used for this factory function)- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
transmitter,retransmitterandreceiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-timenormalized_with_speed_of_light (bool, default = false) –
Option to non-dimensionalize the observable with speed of light \(c\)
- returns:
Instance of the
ObservationModelSettingsderivedOneWayDopplerObservationModelSettingsclass defining the settings for the one-way open doppler observable observable.- rtype:
- two_way_doppler_instantaneous_from_one_way_links(uplink_doppler_settings: tudatpy.kernel.estimation.observable_models_setup.model_settings.OneWayDopplerObservationModelSettings, downlink_doppler_settings: tudatpy.kernel.estimation.observable_models_setup.model_settings.OneWayDopplerObservationModelSettings, bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way instantaneous Doppler observable.
Function for creating settings for a two-way instantaneous Doppler observable for a single link definition. The associated observation model creates a scalar observable \(h_{_{\text{2-Dopp.}}}\)
\[h_{_{\text{2-Dopp.}}}=c\left(\frac{d\tau_{T}}{dt_{T}}\frac{dt_{T}}{dt_{R}}\frac{dt_{R}}{d\tau_{R}}-1\right)\]with the link end \(T\) and \(R\) denoting the transmitter and receiver of a two-way link. The observable is computed from a concatenation of a one-way Doppler uplink observation \(h_{_{\text{1-Dopp.}\uparrow}}\) and a one-way Doppler downlink observation \(h_{_{\text{1-Dopp.}\downarrow}}\) (see
one_way_doppler_instantaneous()) as (with the term \(c\) omitted in the 1-way computations):\[h_{_{\text{2-Dopp.}}}&=c\left(\left(h_{_{\text{1-Dopp.}\uparrow}}+1\right)\left(h_{_{\text{1-Dopp.}\downarrow}}+1\right)-1\right) &=c\left(h_{_{\text{1-Dopp.}\uparrow}}h_{_{\text{1-Dopp.}\downarrow}}+h_{_{\text{1-Dopp.}\uparrow}}+h_{_{\text{1-Dopp.}\downarrow}}\right)\]- Parameters:
uplink_doppler_settings (
OneWayDopplerObservationModelSettings) – Settings for uplink leg of one-way observable, created usingone_way_doppler_instantaneous()downlink_doppler_settings (
OneWayDopplerObservationModelSettings) – Settings for downlink leg of one-way observable, created usingone_way_doppler_instantaneous()bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the full observation, default is none (unbiased observation). Note that, even if no bias is applied to the two-way observable, the constituent one-way observables may still be biased.
- Returns:
Instance of the
ObservationModelSettingsderivedTwoWayDopplerObservationModelSettingsclass defining the settings for the two-way open doppler observable.- Return type:
TwoWayDopplerObservationModelSettings
- two_way_doppler_instantaneous_frequency(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52e7b0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a two-way instantaneous Doppler frequency observable.
Implementation as in
two_way_doppler_instantaneous(), but with the observable in Hz rather than m/s. It requires a frequency calculator to be set for the transmitter.- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
transmitter,retransmitterandreceiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) –Settings for convergence of the light-time
- returns:
Instance of the
ObservationModelSettingsderivedOneWayDopplerObservationModelSettingsclass defining the settings for the one-way open doppler observable observable.- rtype:
- angular_position(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52ddb0>, normalize_right_ascension: bool = False) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for an angular position observable.
Function for creating observation model settings for an angular position, from right ascension \(\alpha\) and declination \(\delta\). The exact formulation of the observable depends on the
normalize_right_ascensionvariable (which can be set to true or false). If set to false, we have \(\mathbf{h}=[\alpha;\delta]\) for the observable \(\mathbf{h}\). If it is set to true we have \(\mathbf{h}=[\alpha\cos\delta;\delta]\) for a single link definition. The associated observation model creates the observable using the following steps (in the unbiased case):\[\begin{split}\Delta\mathbf{r}&=\mathbf{r}_{R}(t_{R})-\mathbf{r}_{T}(t_{T})\\ \tan\alpha&=\frac{\Delta r_{y}}{\Delta r_{x}}\\ \delta&=\frac{\Delta r_{z}}{\sqrt{\Delta r_{x}^{2}+\Delta r_{y}^{2}}}\\\end{split}\]The relative position vector \(\Delta\mathbf{r}\) is computed identically as described for the
one_way_range()The angular position observable can be used for optical astrometry, VLBI, etc. Due to the definition of this observable, the xy-plane is defined by the global frame orientation of the environment.- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the transmitter and
receiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the angular position observable.- Return type:
- relative_angular_position(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52df70>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a relative angular position observable.
Function for creating observation model settings of relative angular position type observables (as right ascension difference \(\Delta \alpha\) and declination difference \(\Delta \delta\)). It computes two
angular_position()observations \([\alpha_{1};\delta_{1}]\) and \([\alpha_{2};\delta_{2}]\) with the same receiver and different transmitters, and computes the observable \(\mathbf{h}_{_{\text{ang.pos.}}}\) of size two as follows (in the unbiased case):\[\mathbf{h}_{_{\text{rel.ang.pos.}}} = [\alpha_{2}-\alpha_{1};\delta_{2}-\delta_{1}]\]The relative angular position observable can be used for optical astrometry, optical navigation, etc. Due to the definition of this observable, the xy-plane is defined by the global frame orientation of the environment.
- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires the
transmitter, transmitter2 andreceiverLinkEndTypeentries to be defined.light_time_correction_settings (List[
LightTimeCorrectionSettings], default = list()) – List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of lightbias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)light_time_convergence_settings (
LightTimeConvergenceCriteria, default =light_time_convergence_settings()) – Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the relative angular position observable.- Return type:
- cartesian_position(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a Cartesian position observable.
Function for creating observation model settings of Cartesian position type observables. Note that this observable is typically not realized in reality, but can be very useful for verification or analysis purposes. This observable provides the inertial (w.r.t. global frame origin) Cartesian position of the
observed_bodydefined by the link_ends input. The observable has size 3, and contains the \(x\), \(y\) and \(z\) position- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
observed_bodyLinkEndTypeentries to be defined.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the cartesian position observable.- Return type:
- relative_cartesian_position(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a relative Cartesian position observable.
Function for creating observation model settings of relative Cartesian position type observables. Note that this observable is typically not realized in reality, but can be very useful for verification or analysis purposes. This observable provides the inertial Cartesian position of the
observed_body, w.r.t. theobserverdefined by the link_ends input. The observable has size 3, and contains the \(x\), \(y\) and \(z\) position- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
observed_bodyandobserverLinkEndTypeentries to be defined.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the relative Cartesian position observable.- Return type:
- cartesian_velocity(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a Cartesian velocity observable.
Function for creating observation model settings of Cartesian position type observables. Note that this observable is typically not realized in reality, but can be very useful for verification or analysis purposes. This observable provides the inertial (w.r.t. global frame origin) Cartesian velocity of the
observed_bodydefined by the link_ends input. The observable has size 3, and contains the \(x\), \(y\) and \(z\) velocity- Parameters:
link_ends (LinkDefinition) – Set of link ends that define the geometry of the observation. This observable requires that the
observed_bodyLinkEndTypeentries to be defined.bias_settings (
ObservationBiasSettings, default = None) – Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the cartesian velocity observable.- Return type:
- euler_angles_313(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
No documentation found.
- differenced_time_of_arrival(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, time_difference_time_scale: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = <TimeScales.tdb_scale: 2>, light_time_correction_settings: tudatpy.kernel.astro.time_representation.TimeScales = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52ebb0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
Function for creating settings for a time difference of arrival observation model
Function for creating settings for a time difference of arrival observation model, computed from the time difference \(\Delta t\) at which the same transmitted signal is received by two different link ends. For a signal transmitted at \(t_{T}\) and received by two receivers at \(t_{R,1}\) and \(t_{R,2}\), respectively, the observable \(h\) is computed from:
\[h = t_{R,1} - t_{R,2}\]From the reference link (typically \(t_{R,1}\)), the times at the other two link ends are computed as described for the
one_way_range(). Using \(t_{R,1}\) as reference, the time \(t_{T}\) is computed from which \(t_{R,2}\) is subsequently calculated, combining two light-time calculations (one from receiver to transmitter, and one from transmitter to receiver2).While the observation model performs all operations in TDB scale (including the time tag of the observation), the model can convert \(t_{R,1}\) and \(t_{R,2}\) to a different time scale (typically UTC) to compute \(h\) by using the
time_difference_time_scaleinput.- Parameters:
link_ends (TimeScales, default = tdb_scale) – Set of link ends that define the geometry of the observation. This observable requires the
transmitter,receiverandreceiver2LinkEndTypeentries to be defined.link_ends – Time scale in which the epochs \(t_{R,1}\) and \(t_{R,2}\) are expressed before differencing to compute the observation
- light_time_correction_settingsList[
LightTimeCorrectionSettings], default = list() List of corrections for the light-time that are to be used. Default is none, which will result in the signal being modelled as moving in a straight line with the speed of light
- bias_settings
ObservationBiasSettings, default = None Settings for the observation bias that is to be used for the observation, default is none (unbiased observation)
- light_time_convergence_settings
LightTimeConvergenceCriteria, default =light_time_convergence_settings() Settings for convergence of the light-time
- Returns:
Instance of the
ObservationModelSettingsclass defining the settings for the differenced time of arrival model.- Return type:
- doppler_measured_frequency(link_ends: tudatpy.kernel.estimation.observable_models_setup.links.LinkDefinition, light_time_correction_settings: list[tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeCorrectionSettings] = [], bias_settings: tudatpy.kernel.estimation.observable_models_setup.biases.ObservationBiasSettings = None, light_time_convergence_settings: tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria = <tudatpy.kernel.estimation.observable_models_setup.light_time_corrections.LightTimeConvergenceCriteria object at 0x7fa5cc52f1b0>) tudatpy.kernel.estimation.observable_models_setup.model_settings.ObservationModelSettings¶
No documentation found.
Enumerations¶
Enumeration of available observable types. |
- class ObservableType¶
Bases:
pybind11_objectEnumeration of available observable types.
Examples
# Code snippet to print all available Observable Types from tudatpy.estimation.observable_models_setup import model_settings num_observable_types = len(model_settings.ObservableType.__members__) print(f'The length of all available Tudatpy Observable Types is: {num_observable_types}') # Print all available Observable Types using the "name" property for i in range(num_observable_types): print(i, model_settings.ObservableType(i).name)
Members:
one_way_range_type
n_way_range_type
angular_position_type
relative_angular_position_type
position_observable_type
velocity_observable_type
relative_position_observable_type
one_way_instantaneous_doppler_type
one_way_averaged_doppler_type
two_way_instantaneous_doppler_type
n_way_averaged_doppler_type
euler_angle_313_observable_type
dsn_one_way_averaged_doppler_type
dsn_n_way_averaged_doppler_type
doppler_measured_frequency_type
dsn_n_way_range_type
differenced_time_of_arrival_type
- ObservableType.name -> str
Classes¶
Base class to define proper time rate settings. |
|
Base class to define settings of observation models. |
|
Derived Class for defining the settings of one-way instantaneous Doppler observation models. |
|
No documentation found. |
- class DopplerProperTimeRateSettings¶
Bases:
pybind11_objectBase class to define proper time rate settings.
Base class to define proper time rate settings (at a single link end) for instantaneous Doppler observation model settings. Specific proper time rate settings must be defined using an object derived from this class. The derived classes are made accessible via dedicated functions.
- class ObservationModelSettings¶
Bases:
pybind11_objectBase class to define settings of observation models.
Base class to define settings of observation models. Observation model settings define at least the type and geometry of a given observation. They can furthermore set observation biases and/or light-time corrections. Simple observation models settings that are fully characterised by these elements can be managed by this base class. Instances of this class are typically created via functions, such as
one_way_range(),cartesian_position(),angular_position(), etc. Model settings for specific observation models that require additional information such as integration time, retransmission time, etc. must be defined using an object derived from this class. The derived classes are made accessible through further functions.Examples
# Code snippet to show the creation of an ObservationModelSettings object from tudatpy.estimation.observable_models_setup import links, model_settings # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary Link_Definition_Object = links.LinkDefinition(link_ends) # Create minimal ObservationModelSettings object (only required Link_Definition_Object argument is passed) # Other optional parameters (bias_settings, light_time_correction_settings, light_time_convergence_settings) are set by default observation_settings = model_settings.one_way_range(Link_Definition_Object) # Show that it is an ObservationModelSettings object. print(observation_settings)
- class OneWayDopplerObservationModelSettings¶
Bases:
ObservationModelSettingsDerived Class for defining the settings of one-way instantaneous Doppler observation models.
Derived Class for defining the settings of one-way instantaneous Doppler observation models. Settings object can account for additional observation model aspects such as light time corrections and proper time rate settings. Instances of this class can be created via the
one_way_doppler_instantaneous()function. Associated base class:ObservationModelSettings.Examples
# Code snippet to show the creation of a OneWayDopplerObservationModelSettings object from tudatpy.estimation.observable_models_setup import links, model_settings # Create Link Ends dictionary link_ends = dict() link_ends[links.receiver] = links.body_origin_link_end_id("Earth") link_ends[links.transmitter] = links.body_origin_link_end_id("Delfi-C3") # Create a Link Definition Object from link_ends dictionary Link_Definition_Object = links.LinkDefinition(link_ends) # Use: model_settings.one_way_doppler_instantaneous to create a OneWayDopplerObservationModelSettings object (only required Link_Definition_Object argument is passed) # Other optional parameters (bias_settings, light_time_correction_settings, light_time_convergence_settings, proper time rate) are set by default doppler_observation_settings = model_settings.one_way_doppler_instantaneous(Link_Definition_Object) # Show that it is an OneWayDopplerObservationModelSettings object. print(doppler_observation_settings)
- class NWayRangeObservationModelSettings¶
Bases:
ObservationModelSettingsNo documentation found.
- Members: