Spiral to GEO Using an Optimal Finite Maneuver

STK Premium (Space) or STK Enterprise
You can obtain the necessary licenses for this tutorial by contacting AGI Support at support@agi.com or 1-800-924-7244.

Usage of the Sparse Nonlinear Optimizer (SNOPT) search profile requires an additional license. Please contact AGI support for licensing.

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 capabilities of the Ansys Systems Tool Kit® (STK®) digital mission engineering software:

  • STK Pro
  • Astrogator
  • Analysis Workbench

Problem statement

Engineers and operators want to transfer a spacecraft from a low Earth orbit (LEO) to a geosynchronous orbit (GEO) along a spiral path using a low-thrust maneuver. "Low" may be a relative term, but in space travel, there is a boundary for what is considered "low thrust": an acceleration of 10-3m/s2 or lower. Most systems that use this type of propulsion are electric propulsion systems. Maneuvers at this acceleration are designed for long missions and can be effected on a scale of months. They may not be fast, but they are efficient. Given the planned length of the mission, you want to ensure that the maneuver effecting the orbital plane change is optimized for the most feasible efficiency.

Solution

Use the STK/Astrogator® capability, a SNOPT (Sparse Nonlinear OPTimizer) search profile, and the Analysis Workbench capability's Vector Geometry tool to transfer a satellite from LEO to GEO along a spiral path with an Optimal Finite Maneuver.

What you will learn

Upon completion of this tutorial, you will be able to:

  • Model a low-thrust orbit
  • Design a low-thrust Finite Maneuver
  • Build the steps for an Optimal Finite Maneuver using a SNOPT search profile
  • Calculate an Optimal Finite Maneuver using a Finite Maneuver as an initial guess
  • Import and export Collocation Node files
  • Calculate an Optimal Finite Maneuver using an Initial Guess file

Creating a new scenario

Before you begin with any analysis, you need to create a two-day scenario.

  1. Launch the STK application ().
  2. Click Create a Scenario.
  3. Enter the following in the STK: New Scenario Wizard:
  4. Option Value
    Name Spiral_to_GEO_Optimal_Finite
    Analysis Start Time Default
    Analysis End Time + 2 days
  5. Click OK when you finish.
  6. Click Save () when the scenario loads.
  7. A folder with the same name as your scenario is created for you.

  8. Verify the scenario name and location when the Save As dialog box opens.
  9. Click Save.

Save () often!

Configuring your workspace

Your exercise will focus primarily on the 3D Graphics window.

  1. Close the 2D Graphics window.
  2. Close the Timeline View.

Creating a new Astrogator satellite

Add a satellite to the scenario and select Astrogator as the propagator to utilize the Astrogator capability for trajectory and maneuver planning.

Adding a new Satellite object

Insert a new Satellite object into your scenario.

  1. Bring the Insert STK Objects tool () to the front.
  2. Select Satellite () in the Select an Object To Be Inserted list.
  3. Select the Insert Default () method.
  4. Click Insert. . ..
  5. Rename Satellite1 () Finite_Maneuver.

Changing the propagator to Astrogator

There are several types of orbit propagators available in the STK application; high-fidelity numerical propagators like Astrogator attempt to include all significant force models acting on the body.

  1. Right-click on Finite_Maneuver () in the Object Browser.
  2. Select Properties () in the shortcut menu.
  3. Select the Basic - Orbit page when the Properties Browser opens.
  4. Open the Propagator drop-down list.
  5. Select Astrogator.
  6. Click Apply to confirm your change and to keep the Properties Browser open.

Creating a custom Engine Model component

Before you dive into building the Mission Control Sequence (MCS) using the Astrogator capability, you must first define the custom low-thrust engine model you will use with the satellite. You can do so using the Component Browser. The Component Browser is a powerful tool that contains analysis components and enables you to define your own components.

Duplicating a prebuilt component

Duplicate an existing read-only Engine Model component for use on your satellite.

  1. Click Component Browser () on the MCS toolbar.
  2. Select the Engine Models () folder in the Show Component Type list when the Component Browser dialog box opens.
  3. Select Constant Acceleration and Isp () in the Engine Models list.
  4. The Constant Acceleration and Isp Engine Model employs constant values for acceleration and Isp. At each time step, the model adjusts the thrust to hold acceleration and Isp constant given a changing mass.

  5. Click Duplicate component () on the Engine Models toolbar.
  6. Enter My Engine in the Name field when the Field Editor dialog box opens.
  7. Click OK to create the new Engine Model component and to close the Field Editor dialog box.

Customizing the engine component

Now that you have created a duplicate component, you can customize its acceleration, specific impulse (Isp), etc.

  1. Select My Engine () in the Engine Models list.
  2. Click View properties () on the Engine Models toolbar.
  3. Double-click on Acceleration in the Name column when the My Engine dialog box opens.
  4. Enter 9.8 cm/sec^2 in the Real Number field when the Real Number Field dialog box opens.
  5. The Earth surface gravity acceleration for Isp conversions (g) is 0.00980665 km/sec^2. This looks similar to the Acceleration value you are entering, which is equivalent to 0.000098 km/sec^2. Be sure you are editing the Acceleration value and not the g value for your engine model.

  6. Click OK to confirm your change and to close the Real Number Field dialog box.
  7. Double-click on Isp in the Name column.
  8. Enter 3000 s in the Real Number field when the Real Number Field dialog box opens.
  9. Click OK to confirm your change and to close the Real Number Field dialog box.
  10. Click OK to confirm your changes and to close the My Engine dialog box.
  11. Click Close to confirm your changes and to close the Component Browser.

Configuring the satellite's initial state

The default segments in the MCS are Initial State and Propagate. Starting with the initial state, you can define the segments to build the low-thrust sequence.

  1. Return to the Properties Browser.
  2. Select Initial State () in the MCS.
  3. Select the Elements tab.
  4. Open the Coordinate Type drop-down list.
  5. Select Keplerian.
  6. Set the following options:
  7. Option Value
    Semi-major Axis 7000 km
    True Anomaly 140 deg
  8. Keep the remaining default values.
  9. Click Apply to confirm your changes and to keep the Properties Browser open.

Modeling a Finite Maneuver

Next, define a Finite Maneuver segment. A Finite Maneuver is effectively a Propagate segment with thrust. It uses a defined propagator to propagate the state, accounting for the acceleration due to thrust. The selected engine model specifies the magnitude of the thrust vector and the selected attitude control specifies the direction of the thrust vector. Like Propagate segments, each calculated point is added to the ephemeris, and propagation continues until Astrogator reaches a stopping condition.

Thanks to the initial state, you have a starting model for the orbit. You can use a Finite Maneuver to model the effects of applying thrust to the satellite and provide data to "seed" for an optimized maneuver later in the lesson.

Inserting a Maneuver segment

Insert a Maneuver segment and set the type to Finite.

  1. Select Initial State () in the MCS.
  2. Click Insert Segment After () on the MCS toolbar.
  3. Select Maneuver () when the Segment Selection dialog box opens.
  4. Click OK to confirm your selection and to close the Segment Selection dialog box.

Configuring the Maneuver segment

Configure the Maneuver segment for a Finite Maneuver, then configure how the maneuver pointing and the spacecraft's attitude are updated.

  1. Open the Maneuver Type drop-down list.
  2. Select Finite.
  3. Click the Finite Propagator and Force Model for Optimization ellipsis ().
  4. Select Earth Point Mass () when the Select Component dialog box opens.
  5. Using the Earth Point Mass Propagator component will reduce the computational time, while still providing useful results.

  6. Click OK to confirm your selection and to close the Select Component dialog box.

Setting the attitude

The "thrust vector" describes the direction of acceleration applied to a satellite.

  1. Select the Attitude tab.
  2. Open the Attitude Control drop-down list.
  3. Select Thrust Vector.
  4. With this attitude control setting, the Delta-V vector is specified in some reference frame, using either Cartesian or spherical components. Astrogator then computes the attitude so that the total thrust vector in the body frame, as specified by the thruster set or engine model, aligns with this vector in the reference axes.

  5. Ensure the Attitude Update is set to Update during burn.
  6. With this option, the maneuver pointing is updated throughout the maneuver in order to maintain the required thrust direction in the specified direction at every instant throughout the burn. Therefore, the thrust vector rotates with the specified coordinate system.

Defining the thrust axes

When you create a maneuver, you need to define the direction in which to apply thrust. In this situation, you don't want to incorrectly choose axes that take you back to Earth. Your goal is to reach a higher orbit. The axes you will use are the In-Track, Cross-Track, Radial (ICR) axes with a Z axis along position vector and an X axis toward inertial velocity vector. This is also known as an ICR frame. Using this frame, you can align and constrain the position and velocity vectors along the trajectory of the satellite. These axes are available as a preinstalled template file, available as part of the Analysis Workbench capability's Vector Geometry tool.

  1. Click the Thrust Axes ellipsis ().
  2. Ensure that the Filter By option is set to Templates when the Select Reference dialog box opens.
  3. Select Satellite () in the objects list.
  4. Select ICR () in the Installed Templates () folder in the Templates for Satellite list.
  5. Click OK to confirm your selection and to close the Select Reference dialog box.

Defining the spherical components

You have the option to define the direction of the thrust axis in either Cartesian or spherical components. Either way, you will be able to compute your final solution. Some people, however, find spherical components easier to understand.

  1. Ensure the Spherical option is selected.
  2. Enter 42 deg in the Azimuth field.
  3. Enter 27 deg in the Elevation field.
  4. Click Apply to confirm your changes and to keep the Properties Browser open.

Selecting the Engine Model component

Using the Engine Model component you previously created, you can define the magnitude and nature of the propulsion.

  1. Select the Engine tab.
  2. Ensure the Engine Model option is selected in the Propulsion Type panel.
  3. Click the Engine Model ellipsis ().
  4. Select My Engine () when the Select Component dialog box opens.
  5. Click OK to confirm your selection and to close the Select Component dialog box.

Defining the stopping condition

Your satellite models the maneuver up until a specified stopping condition. Stopping conditions are used by Propagate segments to define the point at which propagation should stop. In the propagator tab, you can set propagation to stop after an 18-hour duration by updating the default Duration stopping condition.

  1. Select the Propagator tab.
  2. Enter 18 hr in the Trip Value field.
  3. Click Apply to confirm your change and to keep the Properties Browser open.

Defining the Propagate segment

After the maneuver, you want to model the rest of the orbit. You can do that by updating the Propagate segment following the Maneuver segment.

  1. Select Propagate () in the MCS.
  2. Click the Propagator ellipsis ().
  3. Select Earth Point Mass () when the Select Component dialog box opens.
  4. Click OK to confirm your selection and to close the Select Component dialog box.
  5. Note the default Duration stopping condition.
  6. Enter 24 hr in the Trip field.
  7. Click Segment Properties () on the MCS toolbar.
  8. Open the Color drop-down list when the Edit Segment dialog box opens.
  9. Select a color that's different from the Maneuver segment.
  10. The Finite Maneuver and Propagate segments can be viewed in the 3D Graphics window. By selecting different colors, you can see when each segment takes place after running the mission control sequence.

  11. Click OK to confirm your selection and to close the Edit Segment dialog box.
  12. Click Apply to confirm your changes and to keep the Properties Browser open.

Running the Mission Control Sequence

To calculate the trajectory of the spacecraft, you must run the Mission Control Sequence.

  1. Click Run Entire Mission Control Sequence () on the MCS toolbar.
  2. Close the Properties Browser.
  3. Bring the 3D Graphics window to the front.
  4. Save () your scenario.

propagated Finite Maneuver

You can see that your maneuver got your satellite close to GEO.

Generating a Maneuver Summary report

Create a Maneuver Summary report to better understand your Finite Maneuver.

  1. Right-click on Finite_Maneuver () in the Object Browser.
  2. Select Report & Graph Manager... () in the shortcut menu.
  3. Expand () the Installed Styles () folder in the Styles panel list when the Report & Graph manager opens.
  4. Select the Maneuver Summary () report.
  5. Click Generate. . ..
  6. Take note the Duration of the burn as well as the total Delta V and Fuel Used.
  7. Keep the Maneuver Summary report and the Report & Graph Manager open.

While your maneuver did get you close to GEO, you can do better. For that, you can use a Optimal Finite Maneuver.

Using an Optimal Finite Maneuver with SNOPT

You want the spacecraft to travel from LEO to GEO. With an Optimal Finite Maneuver, Astrogator computes the thrust attitude and, optionally, the maneuver duration, in order to optimize a certain objective function and meet a set of constraints — in this case, to achieve an optimal geosynchronous orbit. This approach is different from using a Target Sequence in Astrogator. In a Target Sequence, the ephemeris of a satellite is created (think back to the trajectory of a spacecraft). For an Optimal Finite Maneuver, you use a previously computed path (ephemeris) as an initial guess, then refine, or optimize it, using a SNOPT search profile.

A SNOPT search profile uses the SNOPT programming solver to achieve a certain goal, represented by a cost function and a set of constraint functions. The profile iteratively modifies a set of decision variables or controls to find a feasible, optimum solution. SNOPT is a software package for solving large-scale optimization problems (both linear and nonlinear programs). It employs a sparse Sequential Quadratic Programming (SQP) algorithm with limited-memory quasi-Newton approximations to the Hessian of 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.

There are two approaches you can take to optimize your maneuver: the first is to compute the Finite Maneuver and use the solver, which is time intensive; the other is to use an Initial Guess file. Since you already computed the Finite Maneuver, you can reuse those steps first.

For more information on initial guesses for Finite Maneuver optimization, refer to the Astrogator technical notes.

Using a Finite Maneuver trajectory as an initial guess

While your initial solution was not ideal, it got you close to GEO. Now, you can begin solving for a solution. You can use the Finite Maneuver trajectory as the initial guess, or "seed," in the computation. The Finite Maneuver provides Astrogator with some data to start. The advantage to seeding from a Finite Maneuver without a node file is that you can "start from scratch" within Astrogator. This is useful when you don't have a means for producing a node file or you're less familiar with the problem, and builds on Astrogator's inherent interactive design environment paradigm.

Creating a new satellite

Copy the existing Finite Maneuver satellite and propagate the initial Finite Maneuver.

  1. Select Finite_Maneuver () in the Object Browser.
  2. Click Copy () on the Object Browser toolbar.
  3. Click Paste () on the Object Browser toolbar to create a copy of Finite_Maneuver ().
  4. Rename Finite_Maneuver1 () Optimal_Finite.
  5. Clear the check box for Finite_Maneuver () in the Object Browser to clear it from displaying in the 3D Graphics window.

Propagating the Finite Maneuver

Prior to setting up your Optimal Finite Maneuver, re-run the MCS to propagate your Finite Maneuver.

  1. Open Optimal_Finite's () Properties ().
  2. Select the Basic - Orbit page when the Properties Browser opens.
  3. Click Run Entire Mission Control Sequence () to recreate the same Finite Maneuver.

Before you can seed an Optimal Finite Maneuver from a Finite Maneuver, the Finite Maneuver's state must already be propagated by the selected Maneuver segment. This is why you must ensure you run your MCS first.

Changing the Maneuver segment's color

Update the color of the Maneuver segment.

  1. Select Maneuver () in the MCS.
  2. Click Segment Properties () on the MCS toolbar.
  3. Open the Color drop-down list when the Edit Segment dialog box opens.
  4. Select a color that's different from Finite_Maneuver's () Maneuver () and Propagate () segments.
  5. Click OK to confirm your selection and to close the Edit Segment dialog box.

Selecting an Optimal Finite Maneuver segment

Change the Maneuver type from Finite to Optimal Finite.

  1. Confirm Maneuver () is selected in the MCS.
  2. Open the Maneuver Type drop-down list.
  3. Select Optimal Finite.
  4. Note that the tabs have changed.

The tabs you saw before were Attitude, Engine, and Propagator; you should now see Solver and Engine.

Setting the number of nodes

To compute the Optimal Finite Maneuver, you must break up the trajectory of the satellite so that it can be computed in sections specified by nodes. Nodes are states along the trajectory arc that serve as control points for the direct transcription algorithm. The nodes are adjusted by the optimizer to best satisfy the thrust-augmented dynamics. For this calculation, you will use 120 nodes. This value was settled upon after running the analysis at:

  • 30 nodes
  • 60 nodes, which provided sufficient results
  • 120 nodes, which provides sufficient results and a smooth trajectory
  • Higher node values, which provided sufficient results, but without much improvement in the analysis

If you were working on your own mission, you would go through this same iterative process to find the appropriate value.

  1. Select the Solver tab.
  2. Enter 120 in the Number of Nodes field in the Problem Setup panel.
  3. Click Algorithm Options....
  4. Open the Scaling Options drop-down list when the Algorithm Options dialog box opens.
  5. Select Scale based on initial state.
  6. Scaling typically improves the numerical behavior of optimization problems. This option specifies how to accomplish scaling.

  7. Click OK to confirm your selection and to close the Algorithm options dialog box.
  8. Click Apply to confirm your changes and to keep the Properties Browser open.

Defining the Seed options

The solution of an Optimal Finite Maneuver problem requires an initial guess. This initial guess is often a rough approximation of the vehicle's orbital states, thrust attitude, and maneuver duration for the maneuver objective in question. The initial guess is then iteratively refined by a numerical optimization library. Seeding is the process of loading a previous solution or initial guess from a Finite Maneuver or file. These results provide the Optimal Finite Maneuver with starting values.

  1. Select the Seed from - Finite Maneuver option in the Problem Setup panel.
  2. Click Seed.
  3. This loads in the values from the Finite Maneuver.

  4. Note the Node Status has been updated to 120 nodes seeded from finite maneuver and that two additional tabs have been exposed: Log and Steering/Nodes.

The orbit states, mass, and the thrust attitude for an Optimal Finite Maneuver are ultimately solved for at a set of discrete time nodes, suitably placed between maneuver start and end times (which themselves may be variables). It is precisely at these nodes that the initial guess states and controls are also sampled after seeding is accomplished.

For more information on seeding an Optimal Finite Maneuver from a finite maneuver, refer to the Astrogator technical notes.

Reviewing the Initial Boundary conditions

Next you want to limit what values your optimal finite calculation can use. This will keep your values between reasonable conditions. In the case of the Initial Boundary, you will just check the values.

  1. Click Initial Boundary....
  2. Take a look at the variables when the Initial Boundary Conditions dialog box opens. You won't change any values, only review the numbers.
    • a — corresponds to the semi-major axis
    • h & k — describe the shape of the satellite's orbit and the position of perigee
    • p & q — describe the orientation of the satellite's orbit plane
    • L — corresponds to the Mean Longitude
  3. Click OK to close the Initial Boundary Conditions dialog box without making any changes.

For more information on these parameters, review the Equinoctial Coordinate Type help page.

Defining the Final Boundary conditions

You can use the Final Boundary to define the upper and lower bounds for the orbital parameters you want for the final state.

  1. Click Final Boundary....
  2. Clear the Set from Initial Guess check box when the Final Boundary Conditions dialog box opens.
  3. Set the following values in the Set Explicitly panel. Set the upper bound first, then the lower bound, one variable at a time:
  4. Lower Bound Variable Upper Bound
    42000 km a 42000 km
    0 h 0
    0 k 0
    0 p 0
    0 q 0
    0 deg L 1800 deg
    Tf - 7200 sec Final Time Tf + 7200 sec

    If your lower bound value is higher than the upper bound, you will see an error (). That's why it's a good idea to set the upper bound first.

  5. Click OK to confirm your changes and to close the Final Boundary Conditions dialog box.
  6. Click Apply to confirm your changes and to keep the Properties Browser open.

Defining the Path Boundaries

The Path Boundaries enable you to define the upper and lower bounds of the orbital states and the thrust spherical angles (when not using unit vectors as controls in the Algorithm Options) on the trajectory at all but the initial and terminal points.

  1. Click Path Boundaries....
  2. Clear the Compute from Initial Guess check box when the Path Boundaries for Variables dialog box opens.
  3. You can explicitly set some values. In the following steps, you can set the goal for the satellite to go from the LEO regime to a final GEO position with an inclination and eccentricity of zero (0).

  4. Set the following values in the State Element Variables panel. Set the upper bound first, then the lower bound, one variable at a time:
  5. Lower Bound Variable Upper Bound
    6000 km a 65000 km
    -0.9 h 0.9
    -0.9 k 0.9
    -0.9 p 0.9
    -0.9 q 0.9
    140 deg L 1800 deg
  6. Click OK to confirm your changes and to close the Path Boundaries for Variables dialog box.
  7. Click Apply to confirm your changes and to keep the Properties Browser open.

Specifying the maneuver optimization objective

Specify the maneuver optimization objective to minimize the amount of fuel used.

  1. Click Optimizer... in the Problem Execution panel.
  2. Open the Objective drop-down list when the SNOPT Options dialog box opens.
  3. Select Minimize propellant use.
  4. This determines the thrust attitude program (and any other optimizable variables) to minimize the net propellant mass expended over the maneuver duration. When you select this option, Astrogator effectively maximizes the propellant mass at the maneuver final time.

  5. Click OK to confirm your selection and to close the SNOPT Options dialog box.
  6. Click Apply to confirm your changes and to keep the Properties Browser open.

Setting the Run Mode to Optimize via direct transcription

Set the Run Mode to Optimize via direct transcription. Running the sequence with this option initiates the Finite Maneuver optimization process.

  1. Open the Run Mode drop-down list in the Problem Execution panel.
  2. Select Optimize via direct transcription.
  3. Note that the Halt MCS and Discard Result if Optimization is Unsuccessful check box has been automatically selected.
  4. When selected, if the numerical optimizer indicates unsuccessful convergence to a locally best solution, the MCS stops and the result from the direct-transcription-collocation system is not stored or available for further use.

  5. Click Apply to confirm your change and to keep the Properties Browser open.

For more information on maneuver optimization using direct transcription methods, refer to the Astrogator technical notes.

Confirming the Engine model component

Before you run this model, confirm that you are using the correct Engine Model component.

  1. Select the Engine tab.
  2. Confirm the Engine Model is set to My Engine in the Propulsion Type panel.
  3. Confirm the Pressure mode is set to Pressure-Regulated.
  4. Confirm that the Thrust Efficiency is 1.
  5. Confirm that the Thrust is set to Affects Accel Only.

If you click the Log tab, you will see data only when the analysis has been run. If you click the Steering/Nodes tab, you will see a table of data on each of the 120 nodes. The Azimuth and Elevation columns have values taken from the Finite Maneuver.

Updating the Propagate segment's color

Change the Propagate segment's color.

  1. Select Propagate () in the MCS.
  2. Click Segment Properties () on the MCS toolbar.
  3. Open the Color drop-down list when the Edit Segment dialog box opens.
  4. Select a color that's different from Finite_Maneuver's () Maneuver () and Propagate () segments.
  5. Click Apply to confirm your change and to keep the Properties Browser open.
  6. Save () your scenario.

Running the MCS for the Optimal Finite Maneuver

With your MCS configured, run the entire MCS.

  1. Click Run Entire Mission Control Sequence () on the MCS toolbar.
  2. The Optimal Finite Maneuver: optimizer output console window appears and steps through the analysis, displaying the numerical optimizer iterations in real time. Depending on the setup of the analysis or the capabilities of your computer, this analysis may take a few minutes.

  3. Review the details in the Optimal Finite Maneuver: optimizer output console window.
  4. Close the Optimal Finite Maneuver: optimizer output console window when you are finished.
  5. Bring the 3D Graphics window to the front and view the results.

Optimal_Finite satellite propagated into GEO

Note the coarse trajectory drawn by the maneuver. The trajectory is currently showing the node points and lines connecting them.

Exporting the nodes

Once you have the final analysis, you can export the data from the Maneuver segment's Steering/Nodes tab as a Collocation Node file (*.nod). A Collocation Node file contains the initial guess of the nodes of the optimal trajectory. Each node contains the time, position, velocity, mass, and thrust direction.

  1. Return to Optimal_Finite's () Properties ().
  2. Select Maneuver () in the MCS.
  3. Select the Steering/Nodes tab.
  4. Examine the Azimuth and Elevation columns.
  5. The values should now reflect the changing direction of thrust.

  6. Click Export... in the Export panel to save your analysis.
  7. Enter Low_Thrust_Optimization_GEO_Spiral_120 in the File name field when the Export Nodes dialog box opens.
  8. Click Save to confirm your selection and to close the Export Nodes dialog box.
  9. The default save location is in your scenario folder.

  10. Save () your scenario.

Once you export the optimizer output as a node file, you can subsequently use it for seeding purposes.

Smoothing the trajectory by Running current nodes

You can update and re-run the MCS to produce a smoother result by selecting the Run Mode to Run current nodes. After attempting maneuver optimization, when you select the Run Mode to Run current nodes, running the MCS propagates the vehicle with the states returned from the optimizer and, if successful, the optimal maneuver pointing history.

  1. Select the Solver tab.
  2. Open the Run Mode drop-down list in the Problem Execution panel.
  3. Select Run current nodes.

Running the MCS for the Optimal Finite Maneuver

With your MCS configured, run the entire MCS.

  1. Click Run Entire Mission Control Sequence () on the MCS toolbar.
  2. Click OK to confirm your change and to close the Properties Browser.
  3. Bring the 3D Graphics window to the front to view the results.

Initial coarse trajectory showing node points

Re-run smoothed trajectory

Using an Initial Guess file

In the previous analysis, you used the Finite Maneuver as the initial guess. This time, use the Collocation Node file you exported earlier for a your Initial Guess. An Initial Guess file is an ASCII text file formatted for compatibility with the STK application that ends in a *.nod extension. The initial guess content comprises a time-ordered sequence of the vehicle's position and velocity, its mass, and the thrust attitude. An Initial Guess file allows the specification of the thrust attitude in either a spherical-angle-pair format, or a direction-cosine or unit vector format. Such an initial guess is then iteratively adjusted by a numerical optimizer in an attempt to converge to a locally optimal solution; this is the same type of information you would have if you ran Finite Maneuver first.

Creating a new satellite

For the purposes of this tutorial, copy the existing Optimal_Finite satellite and rename it. This will reduce the amount of time and effort needed to configure the satellite.

  1. Copy () Optimal_Finite () in the Object Browser.
  2. Paste () Optimal_Finite () into the Object Browser.
  3. Rename Optimal_Finite 1 () OptFinite_File.
  4. Clear the check box for Optimal_Finite () in the Object Browser.

You do not need to re-run the MCS to create the Finite Maneuver if you are using an Initial Guess file.

Updating the Maneuver segment's color

Update the Maneuver segment's color.

  1. Open OptFinite_File's () Properties ().
  2. Select Maneuver () in the MCS when the Properties Browser opens.
  3. Click Segment Properties () on the MCS toolbar.
  4. Open the Color drop-down list when the Edit Segment dialog box opens.
  5. Select a color that's different from Optimal_Finite's () Maneuver () and Propagate () segments.
  6. Click Apply to confirm your change and to keep the Properties Browser open.

Loading the Initial Guess node file

The Initial Guess node file contains the ephemeris data for a satellite maneuver. Using a node file enables you to save different forms of converged solutions that can vary:

  • the force model
  • the number of nodes
  • the control strategy (angles vs. unit vectors)

Using a node file allows you to take data from another tool, format it appropriately, and load it into Astrogator. It also provides a mechanism to solve the problem in stages using a previous solution as an initial guess for a more complex force model. Use the node file you exported earlier in this lesson for your initial guess.

  1. Select the Solver tab.
  2. Click the Initial Guess File ellipsis () in the Problem Setup panel.
  3. Navigate to the location of the Collocated Node file when the Select File dialog box opens.
  4. Select Low_Thrust_Optimization_GEO_Spiral_120.nod.
  5. Click Open to confirm your selection and to close the Select File dialog box.
  6. Click Apply to confirm your change and to keep the Properties Browser open.

Seeding the initial guess

In this step, you will seed the data from the file into your calculation. This provides the Optimal Finite Maneuver with starting values to compute the optimal low thrust maneuver.

  1. Select the Seed from - Initial Guess File option in the Problem Setup panel.
  2. Click Seed.
  3. Note the Node Status has been updated to note 120 nodes seeded from file.
  4. Click Apply to confirm your changes and to keep the Properties Browser open.

For more information on seeding an Optimal Finite Maneuver from a file, refer to the Astrogator technical notes.

Reviewing the Boundary and Path conditions

Review the Boundary and Path conditions to confirm they are the same as those you used when you seeded the Optimal Finite Maneuver from a Finite Maneuver.

  1. Click Initial Boundary....
  2. Review the explicit values when the Initial Boundary Conditions dialog box opens.
  3. Click OK to close the Initial Boundary Conditions dialog box without making any changes.
  4. Click Final Boundary....
  5. Confirm the following values are set in the Set Explicitly panel:
  6. Lower Bound Variable Upper Bound
    42000 km a 42000 km
    0 h 0
    0 k 0
    0 p 0
    0 q 0
    0 deg L 1800 deg
    Tf - 7200 sec Final Time Tf + 7200 sec
  7. Click OK to close the Final Boundary Conditions dialog box without making any changes.
  8. Click Path Boundaries....
  9. Confirm the following values are set in the State Element Variables dialog box:
  10. Lower Bound Variable Upper Bound
    6000 km a 65000 km
    -0.9 h 0.9
    -0.9 k 0.9
    -0.9 p 0.9
    -0.9 q 0.9
    140 deg L 1800 deg
  11. Click OK to close the Path Boundaries for Variables dialog box without making any changes.

Setting the Run Mode to Optimize via direct transcription

Set the Run Mode to Optimize via direct transcription to use the optimizer.

  1. Open the Run Mode drop-down list in the Problem Execution panel.
  2. Select Optimize via direct transcription.
  3. Click Apply to confirm your change and to keep the Properties Browser open.

Confirming the Engine model component

Before you run this model, confirm that you are using the correct Engine Model component.

  1. Select the Engine tab.
  2. Confirm the Engine Model is set to My Engine in the Propulsion Type panel.
  3. Confirm the Pressure mode is set to Pressure-Regulated.
  4. Confirm that the Thrust Efficiency is 1.
  5. Confirm that the Thrust is set to Affects Accel Only.

Updating the Propagate segment's color

Change the Propagate segment's color.

  1. Select Propagate () in the MCS.
  2. Click Segment Properties () on the MCS toolbar.
  3. Open the Color drop-down list when the Edit Segment dialog box opens.
  4. Select a color that's different from Optimal_Finite's () Maneuver () and Propagate () segments.
  5. Click Apply to confirm your change and to keep the Properties Browser open.
  6. Save () your scenario.

Running the MCS for the Optimal Finite Maneuver

With your MCS configured run the entire MCS.

  1. Click Run Entire Mission Control Sequence () on the MCS toolbar.
  2. As before, the Optimal Finite Maneuver: optimizer output console window appears and steps through the analysis.

  3. Review the details in the Optimal Finite Maneuver: optimizer output console window.
  4. Close the Optimal Finite Maneuver: optimizer output console window when you are finished.
  5. Bring the 3D Graphics window to the front to view the results.

OptFinite_File satellite propagated into GEO

Smoothing the trajectory by Running current nodes

Update the coarse trajectory drawn by the maneuver by setting the Run Mode to Run current nodes.

  1. Return to OptFinite_File's () Properties ().
  2. Select Maneuver () in the MCS.
  3. Select the Solver tab.
  4. Open the Run Mode drop-down list in the Problem Execution panel.
  5. Select Run current nodes.

Running the MCS for the Optimal Finite Maneuver

With your MCS configured run the entire MCS.

  1. Click Run Entire Mission Control Sequence () on the MCS toolbar.
  2. Click OK to confirm your changes and to close the Properties Browser.
  3. Bring the 3D Graphics window to the front to view the results.

trajectory RE-run from current nodes

If you enable the display of Optimal_Finite () in the Object Browser, you can see the propagated orbits are the same, which is expected. By using the Initial Guess file, however, you were able to perform the optimization calculations much more quickly.

Analyzing the mission data

Now that you have the final trajectories for the spacecraft, you can generate data about the mission.

Creating a custom Graph style

Create a custom graph style to plot the angle history of the OptFinite_File satellite.

  1. Bring the Report & Graph Manager () to the front.
  2. Select OptFinite_File () in the Object Type list.
  3. Select the MyStyles () folder in the Styles panel list.
  4. Click Create new graph style () on the Styles toolbar.
  5. Rename the new graph Angle History.
  6. Select the Enter key.

Selecting the data providers

Next, choose the data providers for your custom graph.

  1. Select the Content page when the Properties Browser opens.
  2. Expand () the Vector Choose Axes () data provider.
  3. Expand () the TotalThrust () data provider group.
  4. Move () the following data provider elements to the Y Axis list:
    • RightAscension ()
    • Declination ()
  5. Click OK to confirm your selections and to close the Properties Browser.

Generating the Angle History graph

Generate the graph based on the ICR axes.

  1. Ensure AngleHistory () is selected in the Styles list.
  2. Click Generate. . ..
  3. Select OptFinite_File () in the Filter by: All STK Objects list when the Select Axes dialog box opens.
  4. Select ICR () in the Axes for: OptFinite_File list.
  5. Click OK to confirm your selections and to generate the graph.

You can see how the direction of thrust changes over the course of the mission until its last segment. In the last segment, the final orbit is propagated.

Generating a Maneuver Summary report for comparison

Compare the results of your Optimal Finite Maneuver to your initial Finite Maneuver by generating another Maneuver Summary report.

  1. Bring the Report & Graph Manager () to the front.
  2. Expand () the Installed Styles () folder in the Styles panel list.
  3. Select Maneuver Summary ().
  4. Click Generate. . ..
  5. Take note the Duration of the burn as well as the total Delta V and Fuel Used.
  6. Compare these values to the Maneuver Summary report you created earlier.

You can see your optimized maneuver had a shorter duration and a lesser Delta-V, thus requiring less fuel.

Saving your work

Clean up and close out your scenario.

  1. Close any open graphs, reports, properties, and the Report & Graph Manager.
  2. Save () your work.

Summary

You began by setting up a basic Astrogator satellite. After creating a custom low-thrust engine model, you configured a basic Mission Control Sequence utilizing a Finite Maneuver segment. You then used this Finite Maneuver as an initial guess for an Optimal Finite Maneuver segment, which used a SNOPT search profile to find a feasible, optimum solution. You exported the solution as a Collocated Node file, then, after running the current nodes to smooth the satellite's trajectory, imported the file as an initial guess for another Optimal Finite Maneuver. Finally, you created a custom graph to view the changes in the thrust axes over time to help visualize the optimal low-thrust maneuver and generated Maneuver Summary reports to quantify the differences between your initial Finite Maneuver and your final Optimal Finite Maneuver.