5.2. Mission Segments

5.2.1. Lambert Targeter

A Lambert targeter is an algorithm which can solve Lambert’s problem. The input into this problem is the initial position vector, the final position vector, and the time-of-flight (TOF) for the peoblem that needs to be solved. Several Lambert Targeting algorithms, developed over the last few years, are included in Tudat. Each of these algorithm are a seperate class that is derived from one base class: lambertTargeter.

class lambertTargeter

This is the base class that is used to derive the different algorithms to solve Lambert’s problem. Each class that is derived from this base class contains a method called execute(). This method is called in the constructor of each class and performs the specific algorithm. Other methods like: getInertialVelocityAtDeparture() can then be called to get the results of the algorithm.

There are several algorithms available in Tudat. Which algorithms are available are discussed below, however, the specifics of these algorithms are not explained here.

class lambertTargeterIzzo

This class uses Izzo’s algorithm to solve the Lambert problem. This class can be called as follows:

LambertTargeterIzzo( const Eigen::Vector3d& aCartesianPositionAtDeparture,
                   const Eigen::Vector3d& aCartesianPositionAtArrival,
                   const double aTimeOfFlight,
                   const double aGravitationalParameter,
                   const bool isRetrograde = false,
                   const double convergenceTolerance = 1e-9,
                   const int maximumNumberOfIterations = 50 )

where:

  • aCartesianPositionAtDeparture:

    The cartesian position of the body at departure, given in meters.

  • aCartesianPositionAtArrival:

    The cartesian position of the body at arrival, given in meters.

  • aTimeOfFlight:

    The time-of-flight between departure and arrival, given in seconds.

  • aGravitationalParameter:

    The gravitational parameter of the main body.

  • isRetrograde:

    Boolean variable that determines if the orbital motion is retrograde or not.

  • convergenceTolerance:

    double that gives the tolerance of the root finding algorithm.

  • maximumNumberOfIterations:

    int that gives the maximum number of iterations of the root finding algorithm.

class lambertTargeterGooding

This class uses Gooding’s algorithm to solve the Lambert problem. This class can be called as follows:

LambertTargeterGooding( const Eigen::Vector3d& aCartesianPositionAtDeparture,
                      const Eigen::Vector3d& aCartesianPositionAtArrival,
                      const double aTimeOfFlight,
                      const double aGravitationalParameter,
                      root_finders::RootFinderPointer aRootFinder =
                      root_finders::RootFinderPointer( ) );

where:

  • aCartesianPositionAtDeparture:

    The cartesian position of the body at departure, given in meters.

  • aCartesianPositionAtArrival:

    The cartesian position of the body at arrival, given in meters.

  • aTimeOfFlight:

    The time-of-flight between departure and arrival, given in seconds.

  • aGravitationalParameter:

    The gravitational parameter of the main body.

  • aRootFinder:

    A pointer of type: root_finders::RootFinderPointer that points to a root finding algorithm.

class ZeroRevolutionlambertTargeterIzzo

This class uses Izzo’s zero revolution algorithm to solve the Lambert problem. This class can be called as follows:

ZeroRevolutionLambertTargeterIzzo( const Eigen::Vector3d& aCartesianPositionAtDeparture,
                                 const Eigen::Vector3d& aCartesianPositionAtArrival,
                                 const double aTimeOfFlight,
                                 const double aGravitationalParameter,
                                 const bool aIsRetrograde = false,
                                 const double aConvergenceTolerance = 1.0e-9,
                                 const int aMaximumNumberOfIterations = 50 )

where:

where:

  • aCartesianPositionAtDeparture:

    The cartesian position of the body at departure, given in meters.

  • aCartesianPositionAtArrival:

    The cartesian position of the body at arrival, given in meters.

  • aTimeOfFlight:

    The time-of-flight between departure and arrival, given in seconds.

  • aGravitationalParameter:

    The gravitational parameter of the main body.

  • isRetrograde:

    Boolean variable that determines if the orbital motion is retrograde or not.

  • convergenceTolerance:

    double that gives the tolerance of the root finding algorithm.

  • maximumNumberOfIterations:

    int that gives the maximum number of iterations of the root finding algorithm.

class MultiRevolutionlambertTargeterIzzo

This class uses Izzo’s multi-revolution algorithm to solve the Lambert problem. This class is not directly derived from the lambertTargeter class, but it is derived from the ZeroRevolutionlambertTargeterIzzo class. This class can be called as follows:

MultiRevolutionLambertTargeterIzzo( const Eigen::Vector3d& aCartesianPositionAtDeparture,
                                  const Eigen::Vector3d& aCartesianPositionAtArrival,
                                  const double aTimeOfFlight,
                                  const double aGravitationalParameter,
                                  const int aNumberOfRevolutions = 0,
                                  const bool aIsRightBranch = false,
                                  const bool aIsRetrograde = false,
                                  const double aConvergenceTolerance = 1e-9,
                                  const int aMaximumNumberOfIterations = 50 )

where:

where:

  • aCartesianPositionAtDeparture:

    The cartesian position of the body at departure, given in meters.

  • aCartesianPositionAtArrival:

    The cartesian position of the body at arrival, given in meters.

  • aTimeOfFlight:

    The time-of-flight between departure and arrival, given in seconds.

  • aGravitationalParameter:

    The gravitational parameter of the main body.

  • aNumberOfRevolutions:

    Required number of revolutions in the problem solution.

  • aIsRightBranch:

    A boolean flag to indicate whether the right or left branch (corresponding to a low or high energy transfer arc) should be used in the solution .

  • aIsRetrograde:

    Boolean variable that determines if the orbital motion is retrograde or not.

  • convergenceTolerance:

    double that gives the tolerance of the root finding algorithm.

  • maximumNumberOfIterations:

    int that gives the maximum number of iterations of the root finding algorithm.