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.

  1. Create a new scenario and call it OptimalTrueAnomaly.
  2. Use the default Start and Stop times for the scenario.
  3. Click OK .

Create a Satellite

You have the information necessary to create a satellite using Astrogator and define the initial state.

  1. Add a satellite () using the Define Properties () method.
  2. Select the Basic - Orbit page.
  3. 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.

  1. Locate the Mission Control Sequence.
  2. 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.

  3. Select the Initial State segment.
  4. Change the Coordinate Type to Keplerian
  5. Set the Semi-major Axis option to Periapsis Radius.
  6. 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.

  7. Set the following options:
  8. Option Value
    Periapsis Radius 6778 km
    Eccentricity 0.4
    Inclination 45 degrees
  9. Leave the RAAN, Argument of Periapsis, and True Anomaly at zero 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.

  1. Delete () the default Propagate () segment. You will add your own sequences.
  2. Click Insert Segment After ().
  3. Add a Target Sequence ().
  4. 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

  1. Click the Insert Segment After () button.
  2. Add a Propagate () segment inside theTarget_Maneuver sequence.
  3. Rename it ProptoMnvrStart.
  4. Add a Stopping Condition.
  5. Select True Anomaly as the Stopping Condition.
  6. Delete () the Default stopping condition.
  7. 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.
  8. 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.

  1. Click the Insert Segment After () button.
  2. Add a Maneuver () segment after ProptoMnvrStart inside the Target_Maneuver sequence.
  3. Rename the Maneuver 'Mnvr'.
  4. Set the Maneuver Type to Finite.
  5. Set the Attitude Control to Thrust Vector.
  6. Click the Propagator tab
  7. Set the Trip variable as the Control (). This allows the burn time to vary.
  8. Set the Trip value to 900 sec as an initial guess.
  9. Change the color of Mnvr to something different than ProptoMnvrStart.
  10. Click Results... and move () DeltaV from the Maneuver folder as the only dependent variable.
  11. Click OK .

Create a Second Propagate Segment

After the burn is complete, the resulting orbit is defined in the second propagate segment.

  1. Click the Insert Segment After () button.
  2. Add a Propagate () segment after Mnvr insideTarget_Maneuver.
  3. Rename it PropPerigee.
  4. Add a Stopping Condition.
  5. Select Periapsis as the Stopping Condition.
  6. Change the color of PropPerigee to something different than the previous segments.
  7. Click Results... and move () R-Mag from the Spherical Elems folder as the only dependent variable.
  8. Click OK .
  9. Click Apply .
  10. 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.

  1. Select the Target_Maneuver segment.
  2. Delete () the default Differential Corrector profile.
  3. Add a new SNOPT Optimizer profile.
  4. Double-click to open its properties.
  5. Select the True Anomaly variable as a control parameter.
  6. Set the Lower and Upper bounds to the following:
  7. 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

  1. Select the FiniteMnvr Duration as a control parameter.
  2. Set the Lower and Upper bounds to the following.
  3. 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.

  1. Select the DeltaV option to set it as the objective.
  2. Set the goal to Minimize.
  3. Select the R_Mag option to set it as a constraint.
  4. Set the Lower and Upper bounds of R_Mag to the following:
  5. Option Value
    Lower Bounds 10000 km
    Upper Bounds 10000 km
  6. Click OK .

Run Astrogator

Now that you have set all the parameters, you can run Astrogator to view the results.

  1. Set the Action to Run Active Profiles.
  2. 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.

  1. Right-click on the satellite () in the Object Browser.
  2. Select the Report & Graph Manager ().
  3. In the Styles list, select the Maneuver Summary report
  4. Click Generate... .