Class GroundStation

java.lang.Object
org.orekit.estimation.measurements.AbstractParticipant
org.orekit.estimation.measurements.GroundStation
All Implemented Interfaces:
MeasurementParticipant, Observer, ParameterDriversProvider
Direct Known Subclasses:
EarthBasedStation

public class GroundStation extends AbstractParticipant implements Observer
Class modeling a ground station that can perform some measurements.

This class adds a position offset parameter to a base topocentric frame.

Since 9.3, this class also adds a station clock offset parameter, which manages the value that must be subtracted from the observed measurement date to get the real physical date at which the measurement was performed (i.e. the offset is negative if the ground station clock is slow and positive if it is fast).

  1. station clock offset, controlled by MeasurementParticipant.getClockBiasDriver()
  2. station position offset, controlled by getEastOffsetDriver(), getNorthOffsetDriver() and getZenithOffsetDriver()
Since:
8.0
Author:
Luc Maisonobe
  • Constructor Details

  • Method Details

    • isSpaceBased

      public final boolean isSpaceBased()
      Get the type of object being used in measurement observations.
      Specified by:
      isSpaceBased in interface Observer
      Returns:
      boolean
    • getEastOffsetDriver

      public ParameterDriver getEastOffsetDriver()
      Get a driver allowing to change station position along East axis.
      Returns:
      driver for station position offset along East axis
    • getNorthOffsetDriver

      public ParameterDriver getNorthOffsetDriver()
      Get a driver allowing to change station position along North axis.
      Returns:
      driver for station position offset along North axis
    • getZenithOffsetDriver

      public ParameterDriver getZenithOffsetDriver()
      Get a driver allowing to change station position along Zenith axis.
      Returns:
      driver for station position offset along Zenith axis
    • getBaseFrame

      public TopocentricFrame getBaseFrame()
      Get the base frame associated with the station.

      The base frame corresponds to a null position offset, null polar motion, null meridian shift

      Returns:
      base frame associated with the station
    • computeDisplacement

      protected Vector3D computeDisplacement(AbsoluteDate date, Vector3D position)
      Get the station displacement.
      Parameters:
      date - current date
      position - raw position of the station in Earth frame before displacement is applied
      Returns:
      station displacement
      Since:
      9.1
    • getOffsetGeodeticPoint

      public GeodeticPoint getOffsetGeodeticPoint(AbsoluteDate date)
      Get the geodetic point at the center of the offset frame.
      Parameters:
      date - current date (may be null if displacements are ignored)
      Returns:
      geodetic point at the center of the offset frame
      Since:
      9.1
    • getOffsetGeodeticPoint

      public <T extends CalculusFieldElement<T>> FieldGeodeticPoint<T> getOffsetGeodeticPoint(FieldAbsoluteDate<T> date)
      Get the geodetic point at the center of the offset frame.
      Type Parameters:
      T - type of the field elements
      Parameters:
      date - current date(must be non-null, which is a more stringent condition * than in getOffsetGeodeticPoint(AbsoluteDate)
      Returns:
      geodetic point at the center of the offset frame
      Since:
      12.1
    • getPVCoordinatesProvider

      public PVCoordinatesProvider getPVCoordinatesProvider()
      Return the PVCoordinatesProvider.
      Specified by:
      getPVCoordinatesProvider in interface Observer
      Returns:
      pos/vel coordinates provider
    • 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
    • getOrigin

      protected FieldVector3D<Gradient> getOrigin(FieldAbsoluteDate<Gradient> date, Map<String,Integer> indices)
      Retrieve station's position in body shape frame.
      Parameters:
      date - date
      indices - mapping from parameters' name to derivatives' index.
      Returns:
      origin position
    • shiftKinematicTransform

      protected FieldStaticTransform<Gradient> shiftKinematicTransform(KinematicTransform kinematicTransform, Gradient dt)
      Shift a kinematic transform by a Gradient time into a FieldStaticTransform.
      Parameters:
      kinematicTransform - kinematic transform to shift
      dt - time to shift by
      Returns:
      Field static transform shifted by dt
      Since:
      14.0
    • 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