Interface RPO

All Known Implementing Classes:
RPOModel

public interface RPO
Interface used for the computation of the waypoints of the following relative maneuver sequences:
  • Linear transfer,
  • Forced Circular Motion,
  • Natural Circumnavigation.
The computeWaypoints are default methods shared by the different models. The only differences between two models in the computation of these waypoints come from the local orbital frame used. This is handled by the getters defined in enum:RPOModel .
Since:
14.0
Author:
Romain Cuvillon
  • Method Details

    • getRBarDirection

      Vector3D getRBarDirection()
      Get the radial unit vector direction of the target local orbital frame.
      Returns:
      RBar direction
    • getVBarDirection

      Vector3D getVBarDirection()
      Get the velocity unit vector direction of the target local orbital frame.
      Returns:
      VBar direction
    • getOutOfPlaneDirection

      Vector3D getOutOfPlaneDirection()
      Get the OutOfPlane unit vector direction of the target local orbital frame.
      Returns:
      OutOfPlane direction
    • getLOFType

      LOFType getLOFType()
      Get the LOFType used by the RPOModel.
      Returns:
      LOFType used by the RPOModel.
    • rotationInLof

      default Rotation rotationInLof(double inclination, double raan)
      Get the rotation for the waypoint in the local orbital frame to be used in the computeForcedCircularMotionWaypoints method.
      Parameters:
      inclination - inclination of the relative orbit.
      raan - raan of the relative orbit.
      Returns:
      rotation to be applied to the waypoints.
    • rotationInLof

      default <T extends CalculusFieldElement<T>> FieldRotation<T> rotationInLof(T inclination, T raan)
      Get the rotation for the waypoint in the local orbital frame to be used in the computeForcedCircularMotionWaypoints method.
      Type Parameters:
      T - type of the field elements.
      Parameters:
      inclination - inclination of the relative orbit.
      raan - raan of the relative orbit.
      Returns:
      rotation to be applied to the waypoints.
    • circularPosition

      default Vector3D circularPosition(double radius, double angle)
      Computes the coordinates of a point on inPlane circle in the associated LocalOrbitalFrame.
      Parameters:
      radius - radius of the circle.
      angle - angle of the point relative to the inPlane axis of the LocalOrbitalFrame.
      Returns:
      position of the circle point in the related LocalOrbitalFrame.
    • circularPosition

      default <T extends CalculusFieldElement<T>> FieldVector3D<T> circularPosition(T radius, T angle)
      Computes the coordinates of a point on inPlane circle in the associated LocalOrbitalFrame.
      Type Parameters:
      T - type of the field elements.
      Parameters:
      radius - radius of the circle.
      angle - angle of the point relative to the inPlane axis of the LocalOrbitalFrame.
      Returns:
      position of the circle point in the related LocalOrbitalFrame.
    • computeForcedLinearWaypoints

      default List<TimeStampedPVCoordinates> computeForcedLinearWaypoints(TimeStampedPVCoordinates initialPVT, TimeStampedPVCoordinates finalPVT, int numberOfPoints)
      Computes the waypoints along the linear path.
      Parameters:
      initialPVT - initial TimeStampedPVCoordinates of the chaser.
      finalPVT - last waypoint on the line path.
      numberOfPoints - number of waypoints along the linear path (including start and end points).
      Returns:
      list of waypoints along the linear path.
    • computeForcedCircularMotionWaypoints

      default List<TimeStampedPVCoordinates> computeForcedCircularMotionWaypoints(AbsoluteDate startDate, Vector3D centerOffset, double radius, double inclination, double raan, double orbitDuration, int pointsOnOrbit, int numberOfRevolutions, double startAngle, boolean retrograde)
      Computes the waypoints to perform a forced circular orbit.
      Parameters:
      startDate - Start date of the first waypoint of the forced circular motion.
      centerOffset - Offset of the forced circular orbit center relative to the target. If no Offset, the center is the target position.
      radius - Radius of the forced circular orbit.
      inclination - Inclination of the relative orbit.
      raan - Relative Longitude of ascending node of the relative circular orbit in radians. If raan = 0, the line of apsides is along the positive RBar direction (X+ axis in QSW frame, Z- in LVLH CCSDS frame).
      orbitDuration - Relative orbital Period, the time it takes to the chaser to perform a complete force circular orbit.
      pointsOnOrbit - Number of waypoints along the circular orbit.
      numberOfRevolutions - Number of revolutions.
      startAngle - Angle of the first waypoints.
      retrograde - Make the relative circular motion retrograde (clockwise viewed from the target's angular momentum direction).
      Returns:
      list of waypoints.
    • computeNaturalCircumnavigationInjectionCircular

      default TimeStampedPVCoordinates computeNaturalCircumnavigationInjectionCircular(AbsoluteDate startDate, double distanceAlongVBar, double inclination, double targetMeanMotion)
      Computes the injection PVT for a natural circumnavigation around a target in a circular orbit.

      The inclination must be in the range ]-90° ; +90°[.

      For i = ±60°, the circumnavigation orbit is circular. Otherwise, it is an ellipse.

      Parameters:
      startDate - Date of the injection into the natural circumnavigation orbit.
      distanceAlongVBar - Distance between the target and the point of the relative orbit lying on vBar.
      inclination - Inclination of the relative orbit.
      targetMeanMotion - Mean motion of the target orbit.
      Returns:
      injection PVT (i.e. after the injection maneuver).
    • computeTeardropWaypoints

      List<TimeStampedPVCoordinates> computeTeardropWaypoints(AbsoluteDate injectionDate, Orbit targetOrbit, double turnAroundDistance, double maneuverDistance, int numberOfTeardrops)
      Computes teardrop waypoints.

      The injection point is the turn-around point of the teardrop (the round end).

      All maneuvers are performed at the pointy end of the teardrop.

      Parameters:
      injectionDate - date of injection in the teardrop.
      targetOrbit - orbit of the target.
      turnAroundDistance - Turn-around distance. This is the "round" end of the orbit. Note that this distance is signed : negative means below the target spacecraft (in between the planet and the target), while positive means above the target (target is in between the chaser and the planet).
      maneuverDistance - Maneuver distance of the teardrop orbit. This is the "pointy" end of the orbit. Note that this distance is signed : negative means below the target spacecraft (in between the planet and the target), while positive means above the target (target is in between the chaser and the planet).
      numberOfTeardrops - Number of teardrop orbits to perform. Must be ≥ 1.
      Returns:
      List of waypoints in time. Date, position, and velocity are non-zero.
    • computeForcedLinearWaypoints

      default <T extends CalculusFieldElement<T>> List<TimeStampedFieldPVCoordinates<T>> computeForcedLinearWaypoints(TimeStampedFieldPVCoordinates<T> initialPVT, TimeStampedFieldPVCoordinates<T> finalPVT, int numberOfPoints)
      Computes the waypoints along the linear path.
      Type Parameters:
      T - type of the field elements.
      Parameters:
      initialPVT - initial TimeStampedPVCoordinates of the chaser.
      finalPVT - last waypoint on the line path.
      numberOfPoints - number of waypoints along the linear path (including start and end points).
      Returns:
      list of waypoints along the linear path.
    • computeForcedCircularMotionWaypoints

      default <T extends CalculusFieldElement<T>> List<TimeStampedFieldPVCoordinates<T>> computeForcedCircularMotionWaypoints(FieldAbsoluteDate<T> startDate, FieldVector3D<T> centerOffset, T radius, T inclination, T raan, T orbitDuration, int pointsOnOrbit, int numberOfRevolutions, T startAngle, boolean retrograde)
      Computes the waypoints to perform a forced circular orbit.
      Type Parameters:
      T - type of the field elements.
      Parameters:
      startDate - Start date of the first waypoint of the forced circular motion.
      centerOffset - Offset of the forced circular orbit center relative to the target. If no Offset, the center is the target position.
      radius - Radius of the forced circular orbit.
      inclination - Inclination of the relative orbit.
      raan - Relative Longitude of ascending node of the relative circular orbit in radians. If raan = 0, the line of apsides is along the positive RBar direction (X+ axis in QSW frame, Z- in LVLH CCSDS frame).
      orbitDuration - Relative orbital Period, the time it takes to the chaser to perform a complete force circular orbit.
      pointsOnOrbit - Number of waypoints along the circular orbit.
      numberOfRevolutions - Number of revolutions.
      startAngle - Angle of the first waypoints.
      retrograde - Make the relative circular motion retrograde (clockwise viewed from the target's angular momentum direction).
      Returns:
      list of waypoints.
    • computeNaturalCircumnavigationInjectionCircular

      default <T extends CalculusFieldElement<T>> TimeStampedFieldPVCoordinates<T> computeNaturalCircumnavigationInjectionCircular(FieldAbsoluteDate<T> startDate, T distanceAlongVBar, T inclination, T targetMeanMotion)
      Computes the injection PVT for a natural circumnavigation around a target in a circular orbit.

      The inclination must be in the range ]-90° ; +90°[.

      For i = ±60°, the circumnavigation orbit is circular. Otherwise, it is an ellipse.

      Type Parameters:
      T - type of the field elements.
      Parameters:
      startDate - Date of the injection into the natural circumnavigation orbit.
      distanceAlongVBar - Distance between the target and the point of the relative orbit lying on vBar.
      inclination - Inclination of the relative orbit.
      targetMeanMotion - Mean motion of the target orbit.
      Returns:
      injection PVT (i.e. after the injection maneuver).
    • computeTeardropWaypoints

      <T extends CalculusFieldElement<T>> List<TimeStampedFieldPVCoordinates<T>> computeTeardropWaypoints(FieldAbsoluteDate<T> injectionDate, FieldOrbit<T> targetOrbit, T turnAroundDistance, T maneuverDistance, int numberOfTeardrops)
      Computes teardrop waypoints.

      The injection point is the turn-around point of the teardrop (the round end).

      All maneuvers are performed at the pointy end of the teardrop.

      Type Parameters:
      T - field.
      Parameters:
      injectionDate - date of injection in the teardrop.
      targetOrbit - orbit of the target.
      turnAroundDistance - Turn-around distance.
      This is the "round" end of the orbit.
      Note that this distance is signed : negative means below the target spacecraft (in between the planet and the target), while positive means above the target (target is in between the chaser and the planet).
      maneuverDistance - Maneuver distance of the teardrop orbit.
      This is the "pointy" end of the orbit.
      Note that this distance is signed : negative means below the target spacecraft (in between the planet and the target), while positive means above the target (target is in between the chaser and the planet).
      numberOfTeardrops - Number of teardrop orbits to perform. Must be ≥ 1.
      Returns:
      List of waypoints in time. Date, position, and velocity are non-zero.
    • computeForcedManeuvers

      List<RelativeManeuver> computeForcedManeuvers(List<TimeStampedPVCoordinates> waypoints, Vector3D initialVelocity, Orbit targetOrbit, RelativeProvider provider)
      Compute relative maneuvers to realize a forced trajectory defined by the waypoints (ForcedLinear/ForcedCircular).
      Parameters:
      waypoints - Waypoints of the trajectory in the correct LocalOrbitalFrame.
      initialVelocity - Initial velocity in the local orbital frame.
      targetOrbit - Orbit of the target.
      provider - Relative motion provider.
      Returns:
      list of relative maneuvers in the chosen RPOModel local orbital frame.
    • computeForcedManeuvers

      <T extends CalculusFieldElement<T>> List<FieldRelativeManeuver<T>> computeForcedManeuvers(List<TimeStampedFieldPVCoordinates<T>> waypoints, FieldVector3D<T> initialVelocity, FieldOrbit<T> targetOrbit, FieldRelativeProvider<T> provider)
      Compute relative maneuvers to realize a forced trajectory defined by the waypoints (ForcedLinear/ForcedCircular).
      Type Parameters:
      T - field.
      Parameters:
      waypoints - Waypoints of the trajectory in the correct LocalOrbitalFrame.
      initialVelocity - Initial velocity in the local orbital frame.
      targetOrbit - Orbit of the target.
      provider - Relative motion provider.
      Returns:
      list of relative maneuvers in the chosen RPOModel local orbital frame.
    • convertToImpulseManeuver

      default List<ImpulseManeuver> convertToImpulseManeuver(List<RelativeManeuver> maneuvers, Orbit targetOrbit, double isp)
      Convert the relative maneuvers into Impulse maneuvers in the targetOrbit frame.

      Warning: EventDetector of the maneuvers must be DateDetector.

      Parameters:
      maneuvers - Relative maneuvers.
      targetOrbit - orbit of the target.
      isp - specific impulse of the chaser.
      Returns:
      list of impulse maneuvers in target's orbit frame.
    • convertToImpulseManeuver

      default <T extends CalculusFieldElement<T>> List<FieldImpulseManeuver<T>> convertToImpulseManeuver(List<FieldRelativeManeuver<T>> maneuvers, FieldOrbit<T> targetOrbit, T isp)
      Convert the relative maneuvers into Impulse maneuvers in the targetOrbit frame.

      Warning: EventDetector of the maneuvers must be DateDetector.

      Type Parameters:
      T - field.
      Parameters:
      maneuvers - Relative maneuvers.
      targetOrbit - orbit of the target.
      isp - specific impulse of the chaser.
      Returns:
      list of impulse maneuvers in target's orbit frame.
    • computeTeardropManeuvers

      List<RelativeManeuver> computeTeardropManeuvers(List<TimeStampedPVCoordinates> waypoints, RelativeProvider relativeProvider)
      Computes the relative maneuvers of the teardrop relative orbit in the RPOModel Local Orbital Frame.

      The injection point is the turn-around point of the teardrop (the round end).

      All maneuvers happen at the pointy end of the teardrop.

      Parameters:
      waypoints - List of the successive waypoints of the target.
      relativeProvider - relative motion provider of the RPOModel.
      Returns:
      list of relative maneuvers.
    • computeTeardropManeuvers

      <T extends CalculusFieldElement<T>> List<FieldRelativeManeuver<T>> computeTeardropManeuvers(List<TimeStampedFieldPVCoordinates<T>> waypoints, FieldRelativeProvider<T> relativeProvider)
      Computes the relative maneuvers of the teardrop relative orbit in the RPOModel Local Orbital Frame.

      The injection point is the turn-around point of the teardrop (the round end).

      All maneuvers happen at the pointy end of the teardrop.

      Type Parameters:
      T - field.
      Parameters:
      waypoints - List of the successive waypoints of the target.
      relativeProvider - relative motion provider of the RPOModel.
      Returns:
      list of relative maneuvers.