Skip to main content

GroundAsset

Struct GroundAsset 

Source
pub struct GroundAsset {
    pub latitude_deg: f64,
    pub longitude_deg: f64,
    pub height_km: f64,
    pub latitude_rate_deg_s: f64,
    pub longitude_rate_deg_s: f64,
    pub height_rate_km_s: f64,
    pub epoch: Epoch,
    pub frame: Frame,
    pub stm: Option<OMatrix<f64, Const<6>, Const<6>>>,
}
Expand description

Represents a ground position/nav/timing receiver, e.g. a customer Note that we rebuild the Location structure from ANISE but without a terrain mask because the mask is not copyable and this PNTRx must be copyable to implement State.

Fields§

§latitude_deg: f64§longitude_deg: f64§height_km: f64§latitude_rate_deg_s: f64§longitude_rate_deg_s: f64§height_rate_km_s: f64§epoch: Epoch§frame: Frame

Frame on which this location rests

§stm: Option<OMatrix<f64, Const<6>, Const<6>>>

Implementations§

Source§

impl GroundAsset

Source

pub fn from_fixed( latitude_deg: f64, longitude_deg: f64, height_km: f64, epoch: Epoch, frame: Frame, ) -> Self

Source

pub fn with_velocity_sez_m_s( self, vel_s_m_s: f64, vel_e_m_s: f64, vel_z_m_s: f64, ) -> Result<Self, Box<dyn Error>>

Source

pub fn to_location(&self) -> Location

Source

pub fn velocity_sez_m_s(&self) -> Result<OVector<f64, Const<3>>, PhysicsError>

Compute the velocity in m/s in the SEZ frame from the state data stored in latitude deg/s, longitude deg/s, and height in km/s for integration of EOMs

Source

pub fn geodetic_to_cartesian_jacobian( &self, ) -> Result<Matrix6<f64>, PhysicsError>

Source

pub fn great_circle_distance_km( &self, other: &Self, ) -> Result<f64, PhysicsError>

Computes the great circle (Haversine) distance between this asset and another in kilometers.

Note: This assumes a perfectly spherical body using the frame’s mean equatorial radius. It does not account for the ellipsoidal oblateness or the height_km of either asset.

Trait Implementations§

Source§

impl Add<Matrix<f64, Const<6>, Const<1>, <DefaultAllocator as Allocator<Const<6>>>::Buffer<f64>>> for GroundAsset

Source§

fn add(self, asset_state: OVector<f64, Const<6>>) -> Self

Adds the provided state deviation to this orbit

Source§

type Output = GroundAsset

The resulting type after applying the + operator.
Source§

impl Clone for GroundAsset

Source§

fn clone(&self) -> GroundAsset

Returns a duplicate 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 GroundAsset

Source§

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

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

impl Default for GroundAsset

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Display for GroundAsset

Source§

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

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

impl Interpolatable for GroundAsset

Source§

fn interpolate( self, epoch: Epoch, states: &[Self], ) -> Result<Self, InterpolationError>

Interpolates a new state at the provided epochs given a slice of states.
Source§

fn frame(&self) -> Frame

Returns the frame of this state
Source§

fn set_frame(&mut self, frame: Frame)

Sets the frame of this state
Source§

fn export_params() -> Vec<StateParameter>

List of state parameters that will be exported to a trajectory file in addition to the epoch (provided in this different formats).
Source§

impl LowerExp for GroundAsset

Source§

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

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

impl PartialEq for GroundAsset

Source§

fn eq(&self, other: &GroundAsset) -> 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 ScalarSensitivityT<GroundAsset, GroundAsset, InterlinkTxSpacecraft> for ScalarSensitivity<GroundAsset, GroundAsset, InterlinkTxSpacecraft>

Source§

fn new( msr_type: MeasurementType, msr: &Measurement, rx: &GroundAsset, tx: &InterlinkTxSpacecraft, almanac: Arc<Almanac>, ) -> Result<Self, ODError>

First, we ensure that the transmitter vehicle is expressed in the same frame as the ground asset. Then we compute the AER as seen from the ground asset.

Source§

impl State for GroundAsset

Source§

fn set(&mut self, epoch: Epoch, vector: &OVector<f64, Const<42>>)

Vector is expected to be organized as such: [Latitude, Longitude, Height, ]

Source§

type Size = Const<6>

Size of the state and its STM
Source§

type VecLength = Const<{ 6 + 36 }>

Source§

fn to_vector(&self) -> OVector<f64, Self::VecLength>

Return this state as a vector for the propagation/estimation
Source§

fn orbit(&self) -> Orbit

Returns a copy of the orbit
Source§

fn epoch(&self) -> Epoch

Retrieve the Epoch
Source§

fn set_epoch(&mut self, epoch: Epoch)

Set the Epoch
Source§

fn reset_stm(&mut self)

Resets the STM, unimplemented by default.
Source§

fn unset_stm(&mut self)

Unsets the STM for this state
Source§

fn stm(&self) -> Result<OMatrix<f64, Self::Size, Self::Size>, DynamicsError>

Return the state’s step state transition matrix. By default, this is not implemented. This function must be implemented when filtering on this state.
Source§

fn with_stm(self) -> Self

Copies the current state but sets the STM to identity
Source§

fn add(self, other: OVector<f64, Self::Size>) -> Self

By default, this is not implemented. This function must be implemented when filtering on this state.
Source§

fn value(&self, param: StateParameter) -> Result<f64, StateError>

Return the value of the parameter, returns an error by default
Source§

fn zeros() -> Self

Initialize an empty state By default, this is not implemented. This function must be implemented when filtering on this state.
Source§

fn to_state_vector(&self) -> OVector<f64, Self::Size>

Returns strictly the state vector without any STM, if set.
Source§

fn set_with_delta_seconds( self, delta_t_s: f64, vector: &OVector<f64, Self::VecLength>, ) -> Self

Reconstruct a new State from the provided delta time in seconds compared to the current state and with the provided vector.
Source§

fn set_value( &mut self, param: StateParameter, _val: f64, ) -> Result<(), StateError>

Allows setting the value of the given parameter. NOTE: Most parameters where the value is available CANNOT be also set for that parameter (it’s a much harder problem!)
Source§

fn set_orbit(&mut self, _orbit: Orbit)

Modifies this state’s orbit
Source§

impl TrackerSensitivity<GroundAsset, GroundAsset> for InterlinkTxSpacecraft

Source§

fn h_tilde<M: DimName>( &self, msr: &Measurement, msr_types: &IndexSet<MeasurementType>, rx: &GroundAsset, almanac: Arc<Almanac>, ) -> Result<OMatrix<f64, M, <GroundAsset as State>::Size>, ODError>

Returns the sensitivity matrix of size MxS where M is the number of simultaneous measurements and S is the size of the state being solved for.
Source§

impl TrackingDevice<GroundAsset> for InterlinkTxSpacecraft

Source§

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

Returns the Range and Doppler from pnt vehicle to ground asset (i.e. the opposed AER range and doppler data.)

Source§

fn measurement_covar( &self, msr_type: MeasurementType, epoch: Epoch, ) -> Result<f64, 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 measurement_types(&self) -> &IndexSet<MeasurementType>

Returns the enabled measurement types for thie device.
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( &mut self, epoch: Epoch, traj: &Traj<GroundAsset>, rng: Option<&mut Pcg64Mcg>, almanac: Arc<Almanac>, ) -> Result<Option<Measurement>, ODError>

Performs a measurement of the input trajectory at the provided epoch (with integration times if relevant), and returns a measurement from itself to the input state. Returns None of the object is not visible. This trait function takes in a trajectory and epoch so it can properly simulate integration times for the measurements. If the random number generator is provided, it shall be used to add noise to the measurement. Read more
Source§

fn measurement_bias( &self, msr_type: MeasurementType, _epoch: Epoch, ) -> Result<f64, ODError>

Source§

fn measurement_covar_matrix<M: DimName>( &self, msr_types: &IndexSet<MeasurementType>, epoch: Epoch, ) -> Result<OMatrix<f64, M, M>, ODError>

Source§

fn measurement_bias_vector<M: DimName>( &self, msr_types: &IndexSet<MeasurementType>, epoch: Epoch, ) -> Result<OVector<f64, M>, ODError>

Source§

impl Copy for GroundAsset

Source§

impl StructuralPartialEq for GroundAsset

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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,

Source§

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