A class that can compute solutions to the targeting problem.
More...
#include <WsfOrbitalTargeting.hpp>
|
| | 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 bool | GoShortWay (const UtVec3d &aLocationInterceptor, const UtVec3d &aVelocityInterceptor, const UtVec3d &aLocationTarget) |
A class that can compute solutions to the targeting problem.
◆ 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
-
| aTime | The time at which to begin the targeting operation. |
| aInterceptorProp | A propagator representing the motion of the intercepting spacecraft. |
| aTarget | A target point to be intercepted. |
| aAllowHyperbolic | Indicates if hyperbolic transfer orbits are allowed. |
| aAllowEarthHit | Indicates if Earth intersecting transfer orbits are allowed. |
◆ WsfOrbitalTargeting() [3/4]
◆ WsfOrbitalTargeting() [4/4]
◆ ~WsfOrbitalTargeting()
| WsfOrbitalTargeting::~WsfOrbitalTargeting |
( |
| ) |
|
|
default |
◆ 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
-
| aLocationInterceptor | The ECI location of the interceptor |
| aVelocityInterceptor | The ECI velocity of the interceptor |
| aLocationTarget | The 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
-
| aCost | The CostFunction used to define the optimum solution. |
| aDtMax | The maximum allowable targeting solution time. |
| aDvMax | The maximum allowable targeting delta v for the solution. |
| aRendezvous | Indicates if this targeting is a rendezvous. |
| aTimeTolerance | The 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] | aDt | The transit time of the minimum delta v solution. |
| [out] | aDv | The 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
-
| aDtMax | The maximum allowable targeting solution time. |
| aDvMax | The maximum allowable targeting delta v for the solution. |
| aRendezvous | Indicates if this targeting is a rendezvous. |
| aTimeTolerance | The desired precision in seconds of the solution (i.e., there is no earlier constrained solution to within aTimeTolerance). |
| [out] | aDt | The minimum time of the solution. |
| [out] | aDv | The 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
-
| aDtMax | The maximum allowable targeting solution time. |
| aDvMax | The maximum allowable targeting delta v for the solution. |
| aRendezvous | Indicates if this targeting is a rendezvous. |
| aTimeTolerance | The 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] | aDt | The transit time of the minimum delta v solution. |
| [out] | aDv | The 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
-
| aDt | The time of the targeting solution. |
| aRendezvous | Indicates if the solution is for a rendezvous. |
| [out] | aDeltaV | The 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
-
| aDt | The time of the targeting solution. |
| [out] | aDeltaV_Intercept | The delta V vector for the intercept portion of the maneuver. |
| [out] | aDeltaV_Rendezvous | The 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: