nyx_space::od::msr

Struct RangeDoppler

source
pub struct RangeDoppler {
    pub epoch: Epoch,
    pub obs: Vector2<f64>,
}
Expand description

A simultaneous range and Doppler measurement in units of km and km/s, available both in one way and two way measurement.

Fields§

§epoch: Epoch

Epoch of the observation

§obs: Vector2<f64>

Observation vector in km and km/s

Implementations§

source§

impl RangeDoppler

source

pub fn one_way( aer: AzElRange, timestamp_noise_s: f64, range_noise_km: f64, doppler_noise_km_s: f64, ) -> Self

Initialize a new one-way range and Doppler measurement from the provided states and the effective noises.

§Panics
  • If the epochs of the two states differ.
  • If the frames of the two states differ.
source

pub fn two_way( aer_t0: AzElRange, aer_t1: AzElRange, timestamp_noise_s: f64, range_noise_km: f64, doppler_noise_km_s: f64, ) -> Self

Initialize a new two-way range and Doppler measurement from the provided states as times t_1 and t_2 and the effective noises.

The measurement is time-tagged at realization, i.e. at the end of the integration time (plus timestamp noise).

§Noise

The measurements are not considered to be independent distributed variables. As such, the noises are reduced by a factor of sqrt(2).

§Panics
  • If the epochs of the two states differ.
  • If the frames of the two states differ.
  • If both epochs are identical.

Trait Implementations§

source§

impl Clone for RangeDoppler

source§

fn clone(&self) -> RangeDoppler

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for RangeDoppler

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl EstimateFrom<Spacecraft, RangeDoppler> for Spacecraft

source§

fn extract(from: Spacecraft) -> Self

From the state extract the state to be estimated
source§

fn sensitivity( msr: &RangeDoppler, receiver: Self, transmitter: Orbit, ) -> OMatrix<f64, <RangeDoppler as Measurement>::MeasurementSize, Self::Size>

Returns the measurement sensitivity (often referred to as H tilde). Read more
source§

impl Measurement for RangeDoppler

source§

fn observation(&self) -> Vector2<f64>

Returns this measurement as a vector of Range and Range Rate

Units: km, km/s

source§

type MeasurementSize = Const<2>

Defines how much data is measured. For example, if measuring range and range rate, this should be of size 2 (nalgebra::U2).
source§

fn fields() -> Vec<Field>

Returns the fields for this kind of measurement. The metadata must include a unit field with the unit.
source§

fn from_observation( epoch: Epoch, obs: OVector<f64, Self::MeasurementSize>, ) -> Self

Initializes a new measurement from the provided data.
source§

impl PartialEq for RangeDoppler

source§

fn eq(&self, other: &RangeDoppler) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TimeTagged for RangeDoppler

source§

fn epoch(&self) -> Epoch

Retrieve the Epoch
source§

fn set_epoch(&mut self, epoch: Epoch)

Set the Epoch
source§

impl TrackingDeviceSim<Spacecraft, RangeDoppler> for GroundStation

source§

fn measure( &mut self, epoch: Epoch, traj: &Traj<Spacecraft>, rng: Option<&mut Pcg64Mcg>, almanac: Arc<Almanac>, ) -> Result<Option<RangeDoppler>, ODError>

Perform a measurement from the ground station to the receiver (rx).

source§

fn measurement_covar( &mut self, epoch: Epoch, ) -> Result<OMatrix<f64, <RangeDoppler as Measurement>::MeasurementSize, <RangeDoppler as Measurement>::MeasurementSize>, ODError>

Returns the measurement noise of this ground station.

§Methodology

Noises are modeled using a StochasticNoise process, defined by the sigma on the turn-on bias and on the steady state noise. The measurement noise is computed assuming that all measurements are independent variables, i.e. the measurement matrix is a diagonal matrix. The first item in the diagonal is the range noise (in km), set to the square of the steady state sigma. The second item is the Doppler noise (in km/s), set to the square of the steady state sigma of that Gauss Markov process.

source§

fn name(&self) -> String

Returns the name of this tracking data simulator
source§

fn location( &self, epoch: Epoch, frame: Frame, almanac: Arc<Almanac>, ) -> AlmanacResult<Orbit>

Returns the device location at the given epoch and in the given frame.
source§

fn measure_instantaneous( &mut self, rx: Spacecraft, rng: Option<&mut Pcg64Mcg>, almanac: Arc<Almanac>, ) -> Result<Option<RangeDoppler>, ODError>

source§

impl Copy for RangeDoppler

source§

impl StructuralPartialEq for RangeDoppler

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,