WSF
WsfOrbitalTargeting Class Reference

A class that can compute solutions to the targeting problem. More...

#include <WsfOrbitalTargeting.hpp>

Public Member Functions

 WsfOrbitalTargeting (const UtCalendar &aTime, UtOrbitalPropagatorBase &aInterceptorProp, const wsf::space::OrbitalTargetPoint &aTarget)
 WsfOrbitalTargeting (const UtCalendar &aTime, UtOrbitalPropagatorBase &aInterceptorProp, const wsf::space::OrbitalTargetPoint &aTarget, bool aAllowHyperbolic, bool aAllowEarthHit)
 WsfOrbitalTargeting (const WsfOrbitalTargeting &aOther)=delete
 WsfOrbitalTargeting (WsfOrbitalTargeting &&)=default
 ~WsfOrbitalTargeting ()=default
UtLambertProblem::Result MinimizeDeltaV (double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
UtLambertProblem::Result MinimizeDeltaT (double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
UtLambertProblem::Result MinimizeCost (const wsf::space::OrbitalTargetingCost &aCost, double aDtMax, double aDvMax, bool aRendezvous, double aTimeTolerance, double &aDt, double &aDv) const
UtLambertProblem::Result Solve (double aDt, bool aRendezvous, double &aDeltaV) const
UtLambertProblem::Result Solve (double aDt, UtVec3d &aDeltaV_Intercept, UtVec3d &aDeltaV_Rendezvous) const
double GetTolerance () const
void SetTolerance (double aTolerance)

Static Public Member Functions

static bool GoShortWay (const UtVec3d &aLocationInterceptor, const UtVec3d &aVelocityInterceptor, const UtVec3d &aLocationTarget)

Detailed Description

A class that can compute solutions to the targeting problem.

Constructor & Destructor Documentation

◆ WsfOrbitalTargeting() [1/4]

WsfOrbitalTargeting::WsfOrbitalTargeting ( const UtCalendar & aTime,
UtOrbitalPropagatorBase & aInterceptorProp,
const wsf::space::OrbitalTargetPoint & aTarget )

◆ WsfOrbitalTargeting() [2/4]

WsfOrbitalTargeting::WsfOrbitalTargeting ( const UtCalendar & aTime,
UtOrbitalPropagatorBase & aInterceptorProp,
const wsf::space::OrbitalTargetPoint & aTarget,
bool aAllowHyperbolic,
bool aAllowEarthHit )

Construct the object with the option of relaxing solution constraints. The constructor allows users to explicitly allow for solutions that have transfer orbits that are hyperbolic, or which intersect the Earth.

Parameters
aTimeThe time at which to begin the targeting operation.
aInterceptorPropA propagator representing the motion of the intercepting spacecraft.
aTargetA target point to be intercepted.
aAllowHyperbolicIndicates if hyperbolic transfer orbits are allowed.
aAllowEarthHitIndicates if Earth intersecting transfer orbits are allowed.

◆ WsfOrbitalTargeting() [3/4]

WsfOrbitalTargeting::WsfOrbitalTargeting ( const WsfOrbitalTargeting & aOther)
delete

References WsfOrbitalTargeting().

◆ WsfOrbitalTargeting() [4/4]

WsfOrbitalTargeting::WsfOrbitalTargeting ( WsfOrbitalTargeting && )
default

References WsfOrbitalTargeting().

◆ ~WsfOrbitalTargeting()

WsfOrbitalTargeting::~WsfOrbitalTargeting ( )
default

Member Function Documentation

◆ GetTolerance()

double WsfOrbitalTargeting::GetTolerance ( ) const
inline

◆ GoShortWay()

bool WsfOrbitalTargeting::GoShortWay ( const UtVec3d & aLocationInterceptor,
const UtVec3d & aVelocityInterceptor,
const UtVec3d & aLocationTarget )
static

Decide if the Lambert solution should proceed the short or long way This is taken from Vallado, p. 506.

Parameters
aLocationInterceptorThe ECI location of the interceptor
aVelocityInterceptorThe ECI velocity of the interceptor
aLocationTargetThe ECI location of the target.
Returns
true if the short way is to be taken; false if the long way is to be taken.

Referenced by Solve(), and ~WsfOrbitalTargeting().

◆ MinimizeCost()

UtLambertProblem::Result WsfOrbitalTargeting::MinimizeCost ( const wsf::space::OrbitalTargetingCost & aCost,
double aDtMax,
double aDvMax,
bool aRendezvous,
double aTimeTolerance,
double & aDt,
double & aDv ) const

Solve the targeting problem to minimize the provided cost for the transfer. This solution will impose a number of conditions on the solution. They include those of the LambertUniversal function, as well as that the maximum allowed time is not exceeded, and that the solution can be accomplished without exceeding the provided aDvMax. Unless the user of this object explicitly allows it during construction, solutions may not have transfer orbits that are hyperbolic, or which intersect the Earth.

Parameters
aCostThe CostFunction used to define the optimum solution.
aDtMaxThe maximum allowable targeting solution time.
aDvMaxThe maximum allowable targeting delta v for the solution.
aRendezvousIndicates if this targeting is a rendezvous.
aTimeToleranceThe desired precision in seconds of the solution (i.e., valid to within aTimeTolerance seconds). A value of <=1E-4 s will generally provide an error of approximately one meter or less.
[out]aDtThe transit time of the minimum delta v solution.
[out]aDvThe minimum delta v.
Returns
true if the solution satisfies the imposed constraints; false otherwise.

Referenced by MinimizeDeltaV(), and ~WsfOrbitalTargeting().

◆ MinimizeDeltaT()

UtLambertProblem::Result WsfOrbitalTargeting::MinimizeDeltaT ( double aDtMax,
double aDvMax,
bool aRendezvous,
double aTimeTolerance,
double & aDt,
double & aDv ) const

Solve the targeting problem to minimize delta t of the transfer. This solution will impose a number of conditions on the solution. They include those of the LambertUniversal function, as well as that the maximum allowed delta t is not exceeded, and that the solution can be accomplished without exceeding the provided aDvMax. Unless the user of this object explicitly allows it during construction, solutions may not have transfer orbits that intersect the Earth.

Parameters
aDtMaxThe maximum allowable targeting solution time.
aDvMaxThe maximum allowable targeting delta v for the solution.
aRendezvousIndicates if this targeting is a rendezvous.
aTimeToleranceThe desired precision in seconds of the solution (i.e., there is no earlier constrained solution to within aTimeTolerance).
[out]aDtThe minimum time of the solution.
[out]aDvThe delta v of the minimum time solution.
Returns
The result of the solution of the targeting problem for the minimum time solution.

References Solve().

Referenced by ~WsfOrbitalTargeting().

◆ MinimizeDeltaV()

UtLambertProblem::Result WsfOrbitalTargeting::MinimizeDeltaV ( double aDtMax,
double aDvMax,
bool aRendezvous,
double aTimeTolerance,
double & aDt,
double & aDv ) const

Solve the targeting problem to minimize delta V of the transfer. This solution will impose a number of conditions on the solution. They include those of the LambertUniversal function, as well as that the maximum allowed time is not exceeded, and that the solution can be accomplished without exceeding the provided aDvMax. Unless the user of this object explicitly allows it during construction, solutions may not have transfer orbits that intersect the central body.

Parameters
aDtMaxThe maximum allowable targeting solution time.
aDvMaxThe maximum allowable targeting delta v for the solution.
aRendezvousIndicates if this targeting is a rendezvous.
aTimeToleranceThe desired precision in seconds of the solution (i.e., valid to within aTimeTolerance seconds). A value of <=1E-4 s will generally provide an error of approximately one meter or less.
[out]aDtThe transit time of the minimum delta v solution.
[out]aDvThe minimum delta v.
Returns
The results of the optimal delta-v solution.

References MinimizeCost().

Referenced by ~WsfOrbitalTargeting().

◆ SetTolerance()

void WsfOrbitalTargeting::SetTolerance ( double aTolerance)
inline

◆ Solve() [1/2]

UtLambertProblem::Result WsfOrbitalTargeting::Solve ( double aDt,
bool aRendezvous,
double & aDeltaV ) const

Solve the targeting problem. This will solve a single instance of the targeting problem for a given time to intercept, aDt. Unless the user allows for it during construction of this object, this method will return false if the resulting solution intersects the Earth on the transfer orbit. This is essentially Algorithm 61 from Vallado (pp. 503-504).

Parameters
aDtThe time of the targeting solution.
aRendezvousIndicates if the solution is for a rendezvous.
[out]aDeltaVThe resulting delta V for the solution.
Returns
The results of the solution of the targeting problem.

References Solve().

Referenced by WsfConjunctionInput::ComputeSolution(), MinimizeDeltaT(), Solve(), and ~WsfOrbitalTargeting().

◆ Solve() [2/2]

UtLambertProblem::Result WsfOrbitalTargeting::Solve ( double aDt,
UtVec3d & aDeltaV_Intercept,
UtVec3d & aDeltaV_Rendezvous ) const

Solve the targeting problem. This will solve a single instance of the targeting problem for a given time to intercept, aDt. Unless the user allows for it during construction of this object, this method will return false if the resulting solution is hyperbolic, or if it intersects the Earth on the transfer orbit. This is essentially Algorithm 61 from Vallado (pp. 503-504). This routine computes both vector delta-V values; the caller is responsible for including the rendezvous portion if needed.

Parameters
aDtThe time of the targeting solution.
[out]aDeltaV_InterceptThe delta V vector for the intercept portion of the maneuver.
[out]aDeltaV_RendezvousThe delta V vector for the rendezvous portion of the maneuver.
Returns
The results of the targeting problem.

References GoShortWay().


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved