Trajectory Design with SNOPT Optimizer
SNOPT and STK Premium (Space) or STK Enterprise
You can obtain STK Premium (Space) or STK Enterprise for this tutorial by visiting http://licensing.agi.com/stk/evaluation. Commercial users can contact AGI support at support@agi.com or 1-800-924-7244 to request a SNOPT license.
The results of the tutorial may vary depending on the user settings and data enabled (online operations, terrain server, dynamic Earth data, etc.). It is acceptable to have different results.
Capabilities Covered
This lesson covers the following STK Capabilities:
- STK Pro
- Astrogator
Problem Statement
Engineers and operators need to model raising a satellite's perigee using a single finite burn. You'd like to optimize the burn by minimizing the change in velocity required so you can minimize the amount of fuel required. You plan to focus on finding the optimal true anomaly for the finite burn to accomplish this.
You have some information on the satellite's initial state and an outline for the burns you plan to make in order to accomplish the mission requirements. Here are the initial state values you have available:
Option | Value |
---|---|
Periapsis Radius | 6778 km |
Eccentricity | 0.4 km |
Inclination | 45 degrees |
Solution
Use STK's Astrogator capability and its Sparse Nonlinear Optimizer (SNOPT) to:
- Propagate the satellite's orbit until it reaches a certain true anomaly (the optimum value will be determined).
- Adjust the burn time until the resulting orbit has a radius of perigee equal to 10,000 km.
- Propagate the orbit until it reaches perigee.
What You Will Learn
Upon completion of this tutorial, you will be able to:
- Set Controls and Objectives for an analysis
- Run SNOPT
- Generate a maneuver summary report
Video Guidance
Watch the following video. Then follow the steps below, which incorporate the systems and missions you work on (sample inputs provided).
Model the World!
Before you can begin with any analysis, you need to create a scenario and add a satellite. Let's do that now.
- Create a new scenario and call it OptimalTrueAnomaly.
- Use the default Start and Stop times for the scenario.
- Click .
Create a Satellite
You have the information necessary to create a satellite using Astrogator and define the initial state.
- Add a satellite () using the Define Properties () method.
- Select the Basic - Orbit page.
- Set the Propagator to Astrogator.
Define the Initial State
Now that you have a satellite in the scenario, you can begin to define its Initial State.
- Locate the Mission Control Sequence.
- Select the Initial State segment.
- Change the Coordinate Type to Keplerian
- Set the Semi-major Axis option to Periapsis Radius.
- Set the following options:
- Leave the RAAN, Argument of Periapsis, and True Anomaly at zero degrees.
The Mission Control Sequence is where you can add the Initial State and Propagate segments that will define the orbit and burns of the satellite.
Use the drop-down menu below Element Type to select Periapsis Radius. Also, ensure that you correctly enter the Periapsis Radius value listed in the table, as the default value is a similar number.
Option | Value |
---|---|
Periapsis Radius | 6778 km |
Eccentricity | 0.4 |
Inclination | 45 degrees |
Create Mission Control Sequence
Now that you have set up the initial state properties, you can create additional segments that define the orbits and burns of the satellite. Most of the MCS segments are going to be nested inside a Target Sequence. A Target Sequence allows you to set a goal or target to accomplish. The nested segments serve as a means to accomplish the goal.
- Delete () the default Propagate () segment. You will add your own sequences.
- Click Insert Segment After ().
- Add a Target Sequence ().
- Rename the Target Sequence Target_Maneuver.
This is going to serve as the primary segment that your other segments will be inside.
Add a Propagate Segment
- Click the Insert Segment After () button.
- Add a Propagate () segment inside theTarget_Maneuver sequence.
- Rename it ProptoMnvrStart.
- Add a Stopping Condition.
- Select True Anomaly as the Stopping Condition.
- Delete () the Default stopping condition.
- Click the Target () icon beside Trip. This ensures the value is available as a control variable. This allows the location of the maneuver start to vary.
- Set the Trip value to 170 degrees as an initial guess.
The Maneuver
Now that you have created the Target Sequence and initial Propagate segment, you can create the maneuver.
- Click the Insert Segment After () button.
- Add a Maneuver () segment after ProptoMnvrStart inside the Target_Maneuver sequence.
- Rename the Maneuver 'Mnvr'.
- Set the Maneuver Type to Finite.
- Set the Attitude Control to Thrust Vector.
- Click the Propagator tab
- Set the Trip variable as the Control (). This allows the burn time to vary.
- Set the Trip value to 900 sec as an initial guess.
- Change the color of Mnvr to something different than ProptoMnvrStart.
- Click and move () DeltaV from the Maneuver folder as the only dependent variable.
- Click .
Create a Second Propagate Segment
After the burn is complete, the resulting orbit is defined in the second propagate segment.
- Click the Insert Segment After () button.
- Add a Propagate () segment after Mnvr insideTarget_Maneuver.
- Rename it PropPerigee.
- Add a Stopping Condition.
- Select Periapsis as the Stopping Condition.
- Change the color of PropPerigee to something different than the previous segments.
- Click and move () R-Mag from the Spherical Elems folder as the only dependent variable.
- Click .
- Click .
- Save () your scenario.
Astrogator Optimizer
SNOPT (Sparse Nonlinear OPTimizer) is a software package for solving large-scale optimization problems (linear and nonlinear programs). It employs a sparse SQP algorithm with limited-memory quasi-Newton approximations to the Hessian of the Lagrangian. SNOPT is especially effective for nonlinear problems whose functions and gradients are expensive to evaluate. The functions should be smooth but need not be convex. An augmented Lagrangian merit function ensures convergence from an arbitrary point. Infeasible problems are treated methodically via elastic bounds on the nonlinear constraints. SNOPT allows the nonlinear constraints to be violated (if necessary) and minimizes the sum of such violations.
Let's configure the optimizer.
- Select the Target_Maneuver segment.
- Delete () the default Differential Corrector profile.
- Add a new SNOPT Optimizer profile.
- Double-click to open its properties.
- Select the True Anomaly variable as a control parameter.
- Set the Lower and Upper bounds to the following:
Option | Value |
---|---|
Lower Bounds | 160 deg |
Upper Bounds | 180 deg |
This limits where in the orbit you want to start the maneuver.
Set a Finite Maneuver Duration as a Control
- Select the FiniteMnvr Duration as a control parameter.
- Set the Lower and Upper bounds to the following.
Option | Value |
---|---|
Lower Bounds | 0 sec |
Upper Bounds | 1200 sec |
Set the Objective
You would like to reach a radius of perigee of 10,000 km using the minimum amount of fuel. To accomplish this, you are going to vary the starting location (true anomaly) and duration of the burn.
- Select the DeltaV option to set it as the objective.
- Set the goal to Minimize.
- Select the R_Mag option to set it as a constraint.
- Set the Lower and Upper bounds of R_Mag to the following:
- Click .
Option | Value |
---|---|
Lower Bounds | 10000 km |
Upper Bounds | 10000 km |
Run Astrogator
Now that you have set all the parameters, you can run Astrogator to view the results.
- Set the Action to Run Active Profiles.
- Run () the MCS.
A new window pops up displaying the progress of the optimizer, followed by a message that the optimizer finished successfully and the values it achieved.
Run a Maneuver Summary Report
Let's use the Report & Graph Manager to run a Maneuver Summary Report to ensure our mission was successful.
- Right-click on the satellite () in the Object Browser.
- Select the Report & Graph Manager ().
- In the Styles list, select the Maneuver Summary report
- Click .