Class ObserverSatellite

  • All Implemented Interfaces:
    Observer, ParameterDriversProvider

    public class ObserverSatellite
    extends Object
    implements Observer
    Class that accepts a PVCoordinatesProvider for a space- based measurement receiver.
    Since:
    14.0
    Author:
    Brianna Aubin
    • Field Detail

      • OFFSET_SUFFIX

        public static final String OFFSET_SUFFIX
        Suffix for ground station position and clock offset parameters names.
        See Also:
        Constant Field Values
      • ACCELERATION_SUFFIX

        public static final String ACCELERATION_SUFFIX
        Suffix for ground clock drift parameters name.
        Since:
        12.1
        See Also:
        Constant Field Values
    • Constructor Detail

      • ObserverSatellite

        public ObserverSatellite​(String name,
                                 PVCoordinatesProvider pvCoordsProvider)
        Simple constructor.
        Parameters:
        name - name of receiver
        pvCoordsProvider - position/velocity coordinates provider for receiver
        Since:
        14.0
      • ObserverSatellite

        public ObserverSatellite​(String name,
                                 PVCoordinatesProvider pvCoordsProvider,
                                 QuadraticClockModel quadraticClock)
        Simple constructor.
        Parameters:
        name - name of receiver
        pvCoordsProvider - position/velocity coordinates provider for receiver
        quadraticClock - clock model for receiver
        Since:
        14.0
    • Method Detail

      • getFieldPVCoordinatesProvider

        public FieldPVCoordinatesProvider<Gradient> getFieldPVCoordinatesProvider​(int freeParameters,
                                                                                  Map<String,​Integer> parameterIndices)
        Return the FieldPVCoordinatesProvider.
        Specified by:
        getFieldPVCoordinatesProvider in interface Observer
        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

        public 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.

        Specified by:
        getOffsetToInertial in interface Observer
        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

        public 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.

        Specified by:
        getOffsetToInertial in interface Observer
        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
      • getName

        public final String getName()
        Get the MeasurementObject name.
        Returns:
        name for the object
        Since:
        12.1
      • getClockOffsetDriver

        public final ParameterDriver getClockOffsetDriver()
        Get the clock offset driver.
        Returns:
        clock offset driver
      • getClockDriftDriver

        public final ParameterDriver getClockDriftDriver()
        Get the clock drift driver.
        Returns:
        clock drift driver
      • getClockAccelerationDriver

        public final ParameterDriver getClockAccelerationDriver()
        Get the clock acceleration driver.
        Returns:
        clock acceleration driver
      • createEmptyQuadraticClock

        protected static QuadraticClockModel createEmptyQuadraticClock​(String name)
        Creates an quadratic clock with zero displacement.
        Parameters:
        name - name of object that is holding the clock
        Returns:
        new quadratic clock model
      • getQuadraticClockModel

        public final QuadraticClockModel getQuadraticClockModel()
        Get a quadratic clock model valid at some date.
        Returns:
        quadratic clock model
        Since:
        12.1
      • getQuadraticFieldClock

        public QuadraticFieldClockModel<Gradient> getQuadraticFieldClock​(int freeParameters,
                                                                         AbsoluteDate date,
                                                                         Map<String,​Integer> indices)
        Get emitting satellite clock provider.
        Parameters:
        freeParameters - total number of free parameters in the gradient
        date - time of computations
        indices - indices of the differentiation parameters in derivatives computations, must be span name and not driver name
        Returns:
        emitting satellite clock provider
      • addParameterDriver

        protected final void addParameterDriver​(ParameterDriver parameterDriver)
        Add a single parameter.
        Parameters:
        parameterDriver - parameter being added to the MeasurementObject
      • extractPVCoordinatesProvider

        public static PVCoordinatesProvider extractPVCoordinatesProvider​(SpacecraftState templateState,
                                                                         TimeStampedPVCoordinates pvCoordinates)
        Create PV provider from position-velocity-acceleration vector and template state.
        Parameters:
        templateState - template state
        pvCoordinates - position-velocity-acceleration
        Returns:
        position-velocity-acceleration provider
        Since:
        14.0
      • extractFieldPVCoordinatesProvider

        public static FieldPVCoordinatesProvider<Gradient> extractFieldPVCoordinatesProvider​(SpacecraftState templateState,
                                                                                             TimeStampedFieldPVCoordinates<Gradient> pvCoordinates)
        Create PV provider from position-velocity-acceleration vector and template state.
        Parameters:
        templateState - template state
        pvCoordinates - position-velocity-acceleration
        Returns:
        position-velocity-acceleration provider
        Since:
        14.0