Lambert Search Profile
The Lambert Search profile finds the most fuel-efficient trajectory between two points or objects for the supplied search parameter ranges. The profile executes a grid search, searching over the input departure and arrival time windows with spacing that you specify. At each point, the profile uses a Lambert solver to find the Delta-V needed to achieve the trajectory for a given departure and arrival time. Once the grid search finishes, the profile uses a parabolic-fit optimization over departure and arrival times, and over phase angle if you do not select “Match Phase of Target.” It uses the resulting departure times, arrival times, and Delta-Vs to determine the minimum Delta-V solution. STK stores the result in Astrogator attributes associated with the profile. The profile can write the departure delay and propagation duration to stopping conditions in propagate segments within the target sequence and the Delta-Vs to maneuvers within the target sequence.
For best performance, ensure that the sequence of propagate, maneuver, propagate, and maneuver segments are within the target sequence. The presence of this sequence allows the profile to write the results of the search to the segments. This gives you an opportunity to perform analyses such as visualizing the two-body Lambert arc or using Lambert Delta-Vs and propagation times as initial guesses to find the corresponding trajectory in the full force model. The profile will still function without these segments, but getting the result of the profile will require reading from the profile’s attributes rather than having the results be automatically written to segment properties.
Switching central bodies
Lambert’s problem uses a two-body model for its solution. The central body that Astrogator uses when solving Lambert’s problem is the central body associated with the satellite. When you create the satellite, you can select a central body or leave it as the default, which is the scenario central body. To do an interplanetary transfer, for example, it is best to select the Sun as your central body for the satellite. This figure shows that Astrogator simply displays the name of the satellite’s central body.
Writing to segments
The profile provides several options to write the results of the Lambert search to propagate and maneuver segments within the target sequence. You can choose to write to two propagate segments and two maneuver segments. The first propagate segment represents a departure delay before performing the first maneuver, and the second propagate segment represents propagation of the Lambert trajectory. Astrogator performs the first maneuver at the departure time and the second maneuver at the arrival time. If you select the option to write to a propagate segment, Astrogator will create a duration stopping condition called “LambertDuration.” If a stopping condition with this name already exists, the trip value will be overwritten. These changes will not be visible unless you click
in the target sequence consistent with the general behavior of target sequence profiles. You can also disable all non-LambertDuration stopping conditions on the propagate segment. If you do so, then it’s possible that another enabled stopping condition will trigger before the LambertDuration condition, which could result in unintended behavior. If you select the option to write to a maneuver segment, Astrogator will change the maneuver to an impulsive maneuver if necessary and will set the Delta-V to the inertial Delta-V for the minimum fuel Lambert solution found.Log
The Lambert Search profile log file is a comma-separated value (CSV) file that contains the Delta-V data for the Lambert arcs solved for during the grid search. The first line of the CSV is a comment containing the best departure and arrival times and corresponding Delta-V found by the optimization process after the grid search. The next line of the CSV (and the first line of data) is a list of the candidate departure times. The first column is the candidate arrival times. Each other data element is the Delta-V for the arrival time for that row and departure time for that column. If the maximum number of revolutions is greater than zero, then this grid will only include solutions with the number of revolutions equal to the number of revolutions of the minimum Delta-V solution. The Delta-V displayed is the minimum of all solution options (such as short or long way and high or low energy) for that departure and arrival time. A Delta-V of infinity means that the Lambert solver could not find a solution for that departure and arrival time.
Parallel processing
This profile takes advantage of shared-memory parallel processing when executing the grid search. STK will take half of all available threads in executing the search and will display in the message viewer the number of threads that it is using. Before Astrogator executes the grid search, it evaluates the target position at each possible combination of arrival and departure times. It processes these computations serially, and
is not available during this initialization phase. Once Astrogator computes the target positions and the grid search begins, then clicking will terminate the profile execution.Input parameters
Option name | Attribute | Description |
---|---|---|
Coordinate System | CoordinateSystem | This is the coordinate system for the target position and velocity. If the system is inertial, then Astrogator will use the central body of the coordinate system when Target Coordinate Type is Keplerian. |
Target Coordinate Type | TargetCoordinateType | This specifies whether the target position and velocity should be entered in Cartesian vectors or Keplerian orbital elements. You can only choose Keplerian when Coordinate System is inertial. |
Calculate Second Maneuver at Destination | ShouldCalculateSecondManeuver | This is true if the Lambert solver should also calculate the required Delta-V to reach the desired end-point velocity. |
Match Phase of Target | ShouldMatchPhase | Set this to true if the satellite should match the phase of the orbit at the target. |
X Position | TargetPositionX | This is the X component of the target position for the end of the Lambert transfer. |
Y Position | TargetPositionY | This is the Y component of the target position for the end of the Lambert transfer. |
Z Position | TargetPositionZ | This is the Z component of the target position for the end of the Lambert transfer. |
X Velocity | TargetVelocityX | This is the X component of the target velocity for the end of the Lambert transfer, and it is visible when you select Calculate Second Maneuver at Destination. |
Y Velocity | TargetVelocityY | This is the Y component of the target velocity for the end of the Lambert transfer, and it is visible when you select Calculate Second Maneuver at Destination. |
Z Velocity | TargetVelocityZ | This is the Z component of the target velocity for the end of the Lambert transfer and is visible when you select Calculate Second Maneuver at Destination. |
Semimajor Axis | TargetSemimajorAxis | This is the target semimajor axis for the end of the Lambert transfer. |
Eccentricity | TargetEccentricity | This is the target eccentricity for the end of the Lambert transfer. |
Inclination | TargetInclination | This is the target inclination for the end of the Lambert transfer. |
Right Ascension Of Ascending Node | TargetRightAscensionOfAscendingNode | This is the target right ascension of the ascending node for the end of the Lambert transfer. |
Argument of Periapsis | TargetArgumentOfPeriapsis | This is the target argument of periapsis for the end of the Lambert transfer. |
True Anomaly | TargetTrueAnomaly | This is the target true anomaly for the end of the Lambert transfer. |
Latest Departure Time from Start of Target Sequence | LatestDepartureTime | This is the latest time from the start of the target sequence for the first Lambert maneuver to occur. |
Earliest Arrival Time from Start of Target Sequence | EarliestArrivalTime | This is the earliest time from the start of the target sequence that the satellite should arrive at its destination. |
Latest Arrival Time from Start of Target Sequence | LatestArrivalTime | This is the latest time from the start of the target sequence that the satellite should arrive at its destination. |
Grid Search Time Steps | GridSearchTimeStep | This is the time step between Lambert evaluations for searching over both the departure window and arrival window of time. |
Max Number of Revolutions for Lambert Solution | MaxNumRevs | This is the maximum number of revolutions for the Lambert solution. |
Central Body Collision Altitude Padding | AltitudePadding | This is the minimum altitude below which the Lambert algorithm will consider the spacecraft to have hit the central body. |
Write Departure Delay to First Propagate | ShouldWriteToFirstPropagate | Set this to true to write the departure delay duration before the Lambert transfer to the 'LambertDuration' stopping condition in the first linked propagate segment. |
Disable Non-LambertDuration Stopping Conditions in First Propagate | ShouldDisableFirstPropagateStopConditions | Set this to true to disable all non-LambertDuration stopping conditions in the first propagate segment. This is visible when you select Write Departure Delay to First Propagate. |
First Propagate | FirstPropagateSegment | This is the propagate segment to manipulate that contains the departure delay. It is visible when you select Write Departure Delay to First Propagate. |
Write Initial Inertial Delta-V to Maneuver | ShouldWriteToFirstManeuver | Set this to true to write the Delta-V solution from Lambert at the start of the transfer to the linked maneuver. |
First Maneuver | FirstManeuverSegment | This is the first maneuver segment to manipulate that occurs at the start of the transfer. It is visible when you select Write Initial Inertial Delta-V to Maneuver. |
Write Flight Duration to Second Propagate | ShouldWriteToSecondPropagate | Set this to true to write the Lambert duration of transfer to the 'LambertDuration' stopping condition in the second linked propagate segment. |
Disable Non-LambertDuration Stopping Conditions in Second Propagate | ShouldDisableSecondPropagateStopConditions | Set this to true to disable all non-LambertDuration stopping conditions in the second propagate segment. This is visible when you select Write Flight Duration to Second Propagate. |
Second Propagate | SecondPropagateSegment | This is the propagate segment to manipulate that contains the transfer duration. It is visible when you select Write Flight Duration to Second Propagate. |
Write Final Inertial Delta-V to Maneuver | ShouldWriteToSecondManeuver | Set this to true to write the Delta-V solution from Lambert at the end of the transfer to the linked maneuver. It is visible when you select Calculate Second Maneuver At Destination . |
Second Maneuver | SecondManeuverSegment | This is the second maneuver segment to manipulate that occurs at the end of the transfer. It is visible when you select Write Final Inertial Delta-V to Maneuver. |
Output parameters
Attribute | Description |
---|---|
ArrivalPositionX | This is the X component of the two-body propagated position at the second maneuver of the Lambert transfer. |
ArrivalPositionY | This is the Y component of the two-body propagated position at the second maneuver of the Lambert transfer. |
ArrivalPositionZ | This is the Z component of the two-body propagated position at the second maneuver of the Lambert transfer. |
CalculatedArrivalTime | This is the arrival time for the satellite at the target position after the start of the target sequence used for the minimum Delta-V Lambert solution. |
CalculatedDepartureDelay | This is the departure delay after the start of the target sequence used for the minimum Delta-V Lambert solution. |
CalculatedTimeOfFlight | This is the time of flight between departure and arrival used for the minimum Delta-V Lambert solution. |
DeparturePositionX | This is the X component of the two-body propagated position at the first maneuver of the Lambert transfer. |
DeparturePositionY | This is the Y component of the two-body propagated position at the first maneuver of the Lambert transfer. |
DeparturePositionZ | This is the Z component of the two-body propagated position at the first maneuver of the Lambert transfer. |
DidSolutionConverge | This is true if the Lambert solver converged on a solution. |
FinalDeltaVx | This is the X component, in central body inertial coordinates, of Delta-V for the second maneuver. |
FinalDeltaVy | This is the Y component, in central body inertial coordinates, of Delta-V for the second maneuver. |
FinalDeltaVz | This is the Z component, in central body inertial coordinates, of Delta-V for the second maneuver. |
InitialDeltaVx | This is the X component, in central body inertial coordinates, of Delta-V for the first maneuver. |
InitialDeltaVy | This is the Y component, in central body inertial coordinates, of Delta-V for the first maneuver. |
InitialDeltaVz | This is the Z component, in central body inertial coordinates, of Delta-V for the first maneuver. |