Interface Observer

All Superinterfaces:
MeasurementParticipant, ParameterDriversProvider
All Known Implementing Classes:
GroundStation, ObserverSatellite

public interface Observer extends MeasurementParticipant
Abstract interface that contains those methods necessary for both space and ground-based satellite observers.
Since:
14.0
Author:
Brianna Aubin
  • Method Details

    • isSpaceBased

      boolean isSpaceBased()
      Get the type of object being used in measurement observations.
      Returns:
      boolean
    • getPVCoordinatesProvider

      PVCoordinatesProvider getPVCoordinatesProvider()
      Return the PVCoordinatesProvider.
      Returns:
      pos/vel coordinates provider
    • getFieldPVCoordinatesProvider

      FieldPVCoordinatesProvider<Gradient> getFieldPVCoordinatesProvider(int freeParameters, Map<String,Integer> parameterIndices)
      Return the FieldPVCoordinatesProvider.
      Parameters:
      freeParameters - number of estimated parameters
      parameterIndices - indices of the estimated parameters in derivatives computations, must be driver
      Returns:
      pos/vel coordinates provider for values with Gradient field
    • getOffsetToInertial

      Transform getOffsetToInertial(Frame inertial, AbsoluteDate date, boolean clockOffsetAlreadyApplied)
      Get the transform between offset frame and inertial frame.

      The offset frame takes the current position offset, polar motion and the meridian shift into account. The frame returned is disconnected from later changes in the parameters. When the parameters managing these offsets are changed, the method must be called again to retrieve a new offset frame.

      Parameters:
      inertial - inertial frame to transform to
      date - date of the transform
      clockOffsetAlreadyApplied - if true, the specified date is as read by the ground station clock (i.e. clock offset not compensated), if false, the specified date was already compensated and is a physical absolute date
      Returns:
      transform between offset frame and inertial frame, at real measurement date (i.e. with clock, Earth and station offsets applied)
    • getOffsetToInertial

      default FieldTransform<Gradient> getOffsetToInertial(Frame inertial, AbsoluteDate clockDate, int freeParameters, Map<String,Integer> indices)
      Get the transform between offset frame and inertial frame with derivatives.

      As the East and North vectors are not well defined at pole, the derivatives of these two vectors diverge to infinity as we get closer to the pole. So this method should not be used for stations less than 0.0001 degree from either poles.

      Parameters:
      inertial - inertial frame to transform to
      clockDate - date of the transform, clock offset and its derivatives already compensated
      freeParameters - total number of free parameters in the gradient
      indices - indices of the estimated parameters in derivatives computations, must be driver span name in map, not driver name or will not give right results (see ParameterDriver.getValue(int, Map))
      Returns:
      transform between offset frame and inertial frame, at specified date
    • getOffsetToInertial

      FieldTransform<Gradient> getOffsetToInertial(Frame inertial, FieldAbsoluteDate<Gradient> offsetCompensatedDate, int freeParameters, Map<String,Integer> indices)
      Get the transform between offset frame and inertial frame with derivatives.

      As the East and North vectors are not well defined at pole, the derivatives of these two vectors diverge to infinity as we get closer to the pole. So this method should not be used for stations less than 0.0001 degree from either poles.

      Parameters:
      inertial - inertial frame to transform to
      offsetCompensatedDate - date of the transform, clock offset and its derivatives already compensated
      freeParameters - total number of free parameters in the gradient
      indices - indices of the estimated parameters in derivatives computations, must be driver span name in map, not driver name or will not give right results (see ParameterDriver.getValue(int, Map))
      Returns:
      transform between offset frame and inertial frame, at specified date
    • getParameterIndices

      static Map<String,Integer> getParameterIndices(SpacecraftState[] states, List<ParameterDriver> parameterDrivers)
      Create a map of the free parameter values.
      Parameters:
      states - list of ObservableSatellite measurement states
      parameterDrivers - list of all parameter values for the measurement
      Returns:
      map of the free parameter values
    • getCorrectedReceptionDate

      default AbsoluteDate getCorrectedReceptionDate(AbsoluteDate date)
      Compute actual date taking into account clock offset.
      Parameters:
      date - date as registered by observer
      Returns:
      corrected date
    • getCorrectedReceptionDateField

      default FieldAbsoluteDate<Gradient> getCorrectedReceptionDateField(AbsoluteDate date, int nbParams, Map<String,Integer> paramIndices)
      Compute actual date taking into account clock offset.
      Parameters:
      date - date as registered by observer
      nbParams - number of independent variables for automatic differentiation
      paramIndices - mapping between parameter name and variable index
      Returns:
      corrected date