# Observation Models

On this page, we provide an overview of the categories of observation models that are available (with links to API documentation), as well as some general notes on their usages, typical pitfalls, hints, etc.

## Available Model Types

Below, a list of different observation models is presented. It is important to realize that Tudat does *not* make an a priori distinction between different manners in which the same observation may be realized. For instance, a VLBI observation of a spacecraft, referenced to the geocenter, and an optical astrometric observation of Io by a spacecraft, are both modelled as an `angular_position`

observable. The difference between the different realization lies in the different noise levels, link ends, biases, etc., while using the same observation model.

Range observations:

**One-way range**, defined using`one_way_range()`

**Two- (and three-)way range**, defined using`two_way_range()`

, or`two_way_range_from_one_way_links()`

. The latter function provided more fine-grained control of the settings for the up- and downlink (e.g. using different light-time corrections for each). See Two- and three-way observables for the manner in which Tudat distinguishes between two- and three-way observations. Note that the two-way functions is idenical to the n-way function, with a check on the number of link ends added.**N-way range**, defined using`n_way_range()`

or`n_way_range_from_one_way_links()`

. This observable provides a generalization of the two-way range, and can have any number of constituent links.

Averaged Doppler observables (see Doppler types for the distinction with instantaneous Doppler)

**One-way averaged Doppler**, defined using`one_way_doppler_averaged()`

**Two- (and three-)way averaged Doppler**, defined using`two_way_doppler_averaged()`

, or`two_way_doppler_averaged_from_one_way_links()`

. The latter function provided more fine-grained control of the settings for the up- and downlink (e.g. using different light-time corrections for each). See Two- and three-way observables for the manner in which Tudat distinguishes between two- and three-way observations. Note that the two-way functions is idenical to the n-way function, with a check on the number of link ends added.**N-way averaged Doppler**, defined using`n_way_doppler_averaged()`

( or`n_way_doppler_averaged_from_one_way_links()`

). This observable provides a generalization of the two-way averaged Doppler, and can have any number of constituent links.

Instantenous doppler observables (see Doppler types for the distinction with averaged Doppler)

**One-way instantaneous Doppler**, defined using`one_way_doppler_instantaneous()`

**Two-way (and three-way) instantaneous Doppler**, defined using`two_doppler_instantaneous()`

, or`two_way_doppler_instantaneous_from_one_way_links()`

. The latter function provided more fine-grained control of the settings for the up- and downlink (e.g. using different light-time corrections for each). See Two- and three-way observables for the manner in which Tudat distinguishes between two- and three-way observations.

Angular observables

**Angular position**right ascension and declination in inertial frame of a body, as observed by another body, defined using`angular_position()`

**Relative angular position**relative right ascension and declination of two bodies, as observed by another body, defined using`relatives_angular_position()`

Direct state observables. These observations are typically not generated directly, but are used for idealized simulations, or to fit a model to an existing orbit.

Three-dimensional

**Cartesian position**, defined using`cartesian_position()`

Three-dimensional

**Cartesian velocity**, defined using`cartesian_velocity()`

Orientation of body w.r.t. inertial frame as

**3-1-3 Euler angles**, defined using`313_euler_angles()`

## Points of attention

Here, we give a brief overview of some specific aspects of the observation models that may be useful for a user to
know, in order to properly select and understand their choice of observation models.
This page is meant to supplement the API documentation, and is *not* a comprehensive overview of all observation models.

### Two- and three-way observables

In the typical terminology of (deep-)space tracking, an observable denoted as ‘two-way’, with an uplink and downlink to (typically) a space segment has the same transmitter for the uplink, and receiver for the downlink (e.g. only a single ground station involved in the observation). An observable that is denoted as ‘three-way’ on the other hand, is used for a two-way observable (e.g. a single uplink and a single downlink) where the transmitting and receiving ground station are *not* the same. In Tudat, both types of observations are defined using the ‘two-way’ functions (e.g. `two_way_range()`

), with the distinction between the typical naming convention of two- and three-way observations made in the `link_ends`

that are provided as input (`transmitter`

and `receiver`

the same entry, or not). The n-way observations in Tudat, such as `n_way_range()`

, define observations with \(n\) links (e.g. ground station -> spacecraft 1 -> spacecraft 2 -> spacecraft 1 -> ground station would be an example for \(n=4\)).

### Doppler types

A typical Doppler observable from e.g. the Deep Space Network does not provide the instantaneous observed range-rate. Instead, it provides an observable that is equivalent to the range-rate averaged over an integration time \(\Delta t\). At present, this is implemented in Tudat as the difference between two range observations, offset in time by \(\Delta t\). These observables are provided by the `..._doppler_averaged`

obserevables. To compute the instantanous Doppler observable, such as those for instance generated by a tracking station in open-loop mode, use the `..._doppler_instantaneous`

observable, an example
refers to `one_way_doppler_instantaneous`

in the API documentation.

### Instantaneous Doppler Implementation

The instantaneous Doppler observables are all derived from the one-way observable \(h\):

where the \(T\) and \(R\) subscripts denote the transmitter and receiver, \(\tau\) denotes the proper time as experience by an observed, and \(t\) denotes coordinate time. The multiplication by \(c\) (speed of light) may be omitted by selecting a non-dimensionalized observable in the factory function. In the present context, \(t\) is taken as dynamical barycentric time (TDB). Note that, unless otherwise specified, all times used in Tudat are in TDB. Even though TDB is not technically a coordinate time, in the above equation \(t\) may be referred to TDB, as the constant scaling offset between TDB and TCB (barycentric coordinat time) drops out of the above equation.

For basic simulations, the \(\frac{d\tau}{dt}\) terms can be omitted (by not providing the proper time rate settings in the factory function), so that the observable becomes:

In this formulation, the `..._doppler_averaged`

observables reduce exactly to the time average of the `..._doppler_instantaneous`

observables. The full formulation of the Doppler observable (including the proper time rates) is typically used either when processing real (open-loop Doppler) data, or when analyzing the influence of physical parameters on the propet ime rate, for instance for simulating relativistic experiments.

The second and third the terms in the first equation for the instantaneous Doppler observables are expanded in a Taylor series (at present, hardcoded to \(N=3\)), to prevent excessive rounding errors (as a result of each of the constituent derivaties being \(\approx 1\). By setting \(\Delta\tau=\tau-t\), we have:

Similarly, we can expand the coordinate time derivative as, seting \(T=t_{R}-t_{T}\):

Using these approximations, the complete observable is then computed. Note that, when calculating the partial derivatives of the observables for estimation, only the first-order Taylor series terms are retained.