Spiral to GEO Using an Optimal Finite Maneuver
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
- 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.
Solution
Use the Optimal Finite Maneuver segment, available with STK's Astrogator capability, and STK's Analysis Workbench capability to transfer a satellite from LEO to GEO along a spiral path.
What You Will Learn
Upon completion of this tutorial, you will be able to:
- Define the Initial State of the spacecraft.
- Create custom components.
- Build the steps for the Optimal Finite Maneuver.
- Model the low thrust orbit.
What is 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-³m/s² or lower. Maneuvers at this acceleration are designed for long missions that can be on the scale of months. They may not be fast, but they are efficient. Most systems that use this type of propulsion are electric propulsion systems. In this tutorial, you will optimize the mission and then take a look at approximately how much fuel was used.
Video Guidance
Watch the following video. Then follow the steps below, which incorporate the systems and missions you work on (sample inputs provided).
Please note, the video refers to files accessed from the STK Data Federate (SDF). Any files previously located on the SDF are now available from agi.com. Please follow the written steps in this tutorial to download the files.
Creating a new scenario
Before you can begin with any analysis, you need to create a scenario that spans two (2) days.
- Launch STK ().
- Click .
- Enter the following in the STK: New Scenario Wizard:
- Click .
- Click Save () when the scenario loads. A folder with the same name as your scenario is created for you.
- Verify the scenario name and location shown in the Save As window.
- Click .
Option | Value |
---|---|
Name | Spiral_to_GEO_Optimal_Finite |
Analysis Start Time | 13 Dec 2018 17:00:00.00 UTCG |
Analysis End Time | +2 Day |
Save () often!
Downloading required files
This lesson uses a Node file (.nod) that you will need to download following the steps below.
- Download the zipped folder here: https://support.agi.com/download/?type=training&dir=sdf/help&file=NodeFile.zip
(missing or bad snippet)
- Navigate to the downloaded folder.
- Right-click on NodeFile.zip.
- Select Extract All...
- Set the Files will be extracted to this folder: path to be within your scenario folder (e.g. C:\Users\username\Documents\STK 12\Spiral_to_GEO_Optimal_Finite\NodeFile).
- Click .
- Go to your scenario folder.
- Low_Thrust_Optimization_GEO_Spiral_120.nod will be in the NodeFile folder.
Creating Custom Components using the Component Browser
Before you dive into building the spacecraft, let’s build the engine model you will use for the spacecraft.
Creating a custom component
Create a custom component.
- Extend the Utilities menu.
- Open the Component Browser.
- Select the Engine Models directory.
- Select the Constant Acceleration and Isp model.
- Click duplicate ().
- Rename the new model MyEngine.
- Click to close the window.
Customizing the New Component
Now that you have created a custom component, you can customize the acceleration, isp, etc.
- Double-click to open the MyEngine component.
- Set the Acceleration to 9.8 cm/sec2.
- Set the Isp to 3000 s.
- Click .
- Click .
- Save () your scenario.
Creating a new Satellite
Let's add a satellite to the scenario and set the propagator to Astrogator.
- Insert a new satellite () using the Define Properties () method.
- Rename the satellite Finite_Maneuver.
- Select the Basic - Orbit page.
- Set the Propagator to Astrogator.
- Click .
Building the Initial State
The default segments in the MCS are an initial state and a propagate segment. Starting with the initial state, you can define the segments to build the satellite.
- Set the satellite's Coordinate Type to Keplerian for the Initial State.
- Set the following options:
- Set all other values to zero (0).
- Click .
Option | Value |
---|---|
Semi-major axis | 7000 km |
Inclination | 28.5 deg |
True Anomaly | 140 deg |
Modeling a Maneuver segment
Next you can define the maneuver. Thanks to the initial state, you have a starting model for the orbit. You can add a maneuver to model the effects of applying a thrust to the satellite and provide data to "seed" for the optimized maneuver later in the lesson.
Inserting a Maneuver segment
Insert a Maneuver segment and set the type to Finite.
- Insert a new Maneuver () segment between the Initial State () and Propagate () segments.
- Set the Maneuver type to Finite.
- Click the button to set the Finite Propagator and Force Model for Optimization to Earth Point Mass.
- Ensure the Attitude Update is set to Update during burn.
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 an axes that takes you back to Earth. Your goal is to reach a higher orbit. The axes you will use are the In-Track, Cross-Track, Radial axes with:
- Z-axis along position vector
- 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.
- Click the button next to the Thrust Axes option.
- Ensure that the Filter By option is set to Templates.
- Select Satellite () from the list.
- Under the Axes list, select the ICR Axes.
- Click .
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.
- Enable the Spherical components option.
- Set the Azimuth to 42 deg.
- Set the Elevation to 27 deg.
- Click .
Defining the Engine
Using the previously created engine model, you can define the magnitude and nature of the propulsion.
- Select the Engine tab.
- Enable the Engine Model option.
- Click the button next to the Engine Model option.
- Set the Engine Model to MyEngine.
- Click .
- Click .
Defining the Propagator
Your satellite models the maneuver up until a specified stopping condition. In the propagator tab, you can set that condition to an 18 hr duration.
- Select the Propagator tab.
- Set the Trip value to 18 hr.
- Click .
Defining the Propagate segment
After the maneuver, you want to model the rest of the orbit. You can do that by modeling a propagate segment after the maneuver segment.
- Select the Propagate segment.
- Click the button to set the Propagator to Earth Point Mass.
- Set the Trip to 24 hr.
- Open the Propagate segment's properties ().
- Change the Color field to another color.
- Click .
- Click .
Running the MCS
You have now designed your mission. Let's run it and see how well you did.
- Run () the MCS.
- Save () the scenario.
Take a look at the orbit and the model that was created by Astrogator. You should see a spiral of the low thrust maneuver.
LEO to GEO Orbit
You want the spacecraft to travel from low Earth orbit to a GEO orbit. There are two approaches you can take. The first is to compute the Finite Maneuver and use the solver (time intensive). The other is to use an Initial Guess file. Since you already computed the Finite Maneuver, you can first review those steps. After that, you can use an initial guess file.
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 the initial guess and refine, or optimize it.
Running the Finite Maneuver
You can use the Finite Maneuver trajectory as the initial guess in the computation. The Finite Maneuver provides Astrogator with some data to start. While the initial solution was not ideal, it got you close to a GEO orbit. Now you can begin solving for the solution.
- Copy () and paste () the Finite_Maneuver satellite and rename the copy Optimal_Finite.
- Disable Finite_Maneuver in the Object Browser to disable the visualization.
- Open Optimal_Finite's () properties ().
- Select the Basic - Orbit page.
- Open the Maneuver () segment.
- Run () the MCS to recreate the same finite maneuver.
- Set the Maneuver Type to Optimal Finite.
- Open the Maneuver segment's properties ().
- Change the Color field to another color.
The tabs you saw before were Attitude, Engine, and Propagator. You should now see Solver and Engine tabs.
Defining the Optimal Finite Maneuver
To compute the optimal finite maneuver, you will break up the trajectory of the satellite so that it can be computed in sections. 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 that provided sufficient results, but without much improvement in the analysis.
If you were working on your own mission, you would go through the same iterative process to find the appropriate value.
Setting the number of nodes
Set the number of nodes to 120.
- Select the Maneuver.
- On the Solver tab, set the Number of Nodes to 120.
- Click button.
- Set the Scaling Options to Scale based on initial state.
- Click .
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.
Defining the Seed Options
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.
- Set the Seed from: option to Finite Maneuver.
- Click the button. This loads in the values from the finite maneuver.
- Click button.
- a - corresponds to the semi-major axis
- h & k - describe the shape of the satellite's orbit and the position of perigee
- p & q - describes the orientation of the satellite's orbit plane
- L - corresponds to the Mean Longitude
Next you want to limit what values our 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.
You won't change any values, only review the numbers. Take a look at the variables.
For more information on these parameters, review our Equinoctial Coordinate Type help page.
Defining the Final Boundary option
You can use the Final Boundary to define the upper and lower bounds for the orbital parameters you want for the final state.
- Click the button.
- Clear the Set from Initial Guess check box.
- Set the following values:
- Click .
Lower Bound | Variable | Upper Bound |
---|---|---|
42000 km | a | 42000 km |
0 | h | 0 |
0 | k | 0 |
0 | p | 0 |
0 | q | 0 |
0 | L | 1800 deg |
tf - 7200 sec | Final Time | tf + 7200 sec |
Defining the Boundary Path
The Path Boundary enables you to define:
- the upper and lower bounds of the orbit states
- 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.
- Click the button.
- Clear the Compute from Initial Guess check box.
- Set the following values:
- Click .
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).
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 |
Setting the Run Mode to Optimize via direct transcription
Set the Run Mode to Optimize via direct transcription.
- Locate the In the Problem Execution section.
- Set the Run Mode to Optimize via direct transcription.
Define the Engine
Before you run this model, let's confirm that you are using your custom engine model, "MyEngine."
- Click the Engine tab.
- Confirm the Engine Model is set to MyEngine.
- Confirm the Pressure mode is set to Pressure-Regulated.
- Confirm that the Thrust Efficiency to one (1).
- Confirm that the Thrust is set to Affects Accel Only.
- Click .
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 each node of the tab. The Azimuth and Elevation columns have values taken from the Finite Maneuver.
Running the MCS
- Change the color of the Propagate segment in the MCS.
- Save () the scenario.
- Run () the MCS.
- Bring the 3D Graphics window to the front and view the results.
The Optimal Finite Maneuver: optimizer output window appears and steps through the analysis. Depending on the setup of the analysis or the capabilities of the computer, this analysis may take a few minutes.
Notice the coarse trajectory drawn by the maneuver. The trajectory is currently showing node points and lines connecting them. You can update this.
Setting the Run Mode to Run current nodes
Set the Run Mode to Run current nodes.
- Select the Maneuver () segment in the MCS.
- Set the Run Mode to Run current nodes in the Problem Execution field.
- Re-run () the MCS.
- Bring the 3D Graphics window to the front and view the results.
Exporting the Nodes
Once you have the final analysis, you can export the data from the Maneuver segment's Steering/Nodes tab.
- Select the Steering/Nodes tab in the Maneuver () segment.
- Examine the Azimuth and Elevation columns, the values should now reflect the changing direction of thrust.
- Click button to save the analysis.
- Name the file Optimal_Finite_Nodes.nod.
- Click .
- Save () the scenario.
A node file contains the initial guess of the nodes of the optimal trajectory. Each node contains the time, position, velocity, mass, and thrust direction.
Alternative Approach: Using an Initial Guess File
In the previous analysis, you used the Finite Maneuver as the initial guess. This time you can use a node file as the initial guess. The node file is the same type of information you would have if you ran a finite maneuver first.
Creating a new satellite
- Copy () the Finite_Maneuver satellite () object.
- Paste () the Finite_Maneuver satellite () object
- Rename it OptFinite_File.
- Open OptFinite_File's () properties ().
- Select the Basic - Orbit page.
- Re-run () the MCS. This recreates the same finite maneuver.
- Set the Maneuver Type to Optimal Finite.
- Open the Maneuver segment's properties ().
- Change the Color field to another color.
Defining the Solver Settings
Define the Solver settings.
- Click the Solver tab.
- Set the number of Nodes to 120.
- Click the button.
- Set the Scaling Options to Scale based on initial state.
- Click .
Loading the Node File
A 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]
Let's use the Node file (Low_Thrust_Optimization_GEO_Spiral_12.nod) you downloaded earlier in this lesson.
- Click beside the Initial Guess option.
- Navigate to the location of downloaded Node file.
- Open the Low_Thrust_Optimization_GEO_Spiral_120.nod file.
- Begin with a seeded guess or converged solution to an optimal finite maneuver.
- Export a node file from the current OFM state, regardless of its optimality or lack thereof.
The advantage to seeding from a finite maneuver without a node file is that you can "start from scratch" within Astrogator. Either you don’t have a means for producing a node file or you’re less familiar with the problem. This builds on Astrogator’s inherent interactive design environment paradigm.
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.
Setting the Initial Guess File
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.
- Set the Seed option to Initial Guess File.
- Click button.
- Click option and review the values.
Defining the Final Boundary Option
Next you will define the Final Boundary. The Final Boundary defines the upper and lower bounds for the final orbital state. To be consistent, you will use the same boundaries as the optimal finite calculation seeded from a finite maneuver.
- Clear the Set from Initial Guess check box.
- Set the following options:
- Click .
Lower Bound | Variable | Upper Bound |
---|---|---|
42000 km | a | 42000 km |
0 | h | 0 |
0 | k | 0 |
0 | p | 0 |
0 | q | 0 |
0 | L | 1800 deg |
tf - 7200 sec | Final Time | tf + 7200 sec |
Setting the Path Boundary
- Clear the Compute from Initial Guess check box.
- Set the following values:
- Set the Problem Execution-Run Mode: to Optimize via direct transcription.
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 |
Defining the Engine
- Click the Engine tab.
- Confirm the Engine Model is set to MyEngine.
- Confirm the Pressure mode is set to Pressure-Regulated.
- Confirm that the Thrust Efficiency to one (1).
- Confirm that the Thrust is set to Affects Accel Only.
- Click .
Data appears in the Log tab only after the analysis is run. If you click the Steering/Nodes tab, you will notice that each step in the trajectory contains information from the initial guess file.
Running the MCS
- Change the color of the Propagate segment in the MCS.
- Save () the scenario.
- Run () the MCS.
- Bring the 3D Graphics window to the front and view the results.
The Optimal Finite Maneuver: optimizer output window appears and steps through the analysis. Depending on the setup of the analysis or the capabilities of the computer, this analysis may take a few minutes.
Notice the coarse trajectory drawn by the maneuver. The trajectory is currently showing node points and lines connecting them. You can update this.
Setting the Mode to Run current nodes
Set the Mode to Run current nodes.
- Select the Maneuver () segment in the MCS.
- Set the Run Mode to Run current nodes in the Problem Execution field.
- Re-run () the MCS.
- Bring the 3D Graphics window to the front and view the results.
Analyzing the Trajectory
Now that you have the final trajectories for the spacecraft, you can generate data about the mission.
- Open the Report & Graph Manager ().
- Set the Object Type to Satellite.
- Select Optimal_Finite satellite in the Objects List.
- Select the MyStyles directory.
- Click the Create New Graph () button.
- Rename the graph Angle History.
- Expand () the Vector Choose Axes Data Provider.
- Expand () TotalThrust directory.
- Move () the following parameters:
- RightAscension
- Declination
- Click .
- Generate the graph.
This graph is based on the Axes of the Finite Maneuver or the Initial Guess File. In this study, the axes used in the Finite Maneuver was Optimal_Finite - ICR. In the Initial State File, you can pull the Axes data from the header of the initial state file, or in the Steering/Nodes tab, to create the OptFinite_File_ICR.
You can see how the direction of thrust changes over the course of the mission until the last segment of the mission. In the last segment, the final orbit is propagated.
Examing Maneuver Summary and Fuel Used Reports
Let's examine more information about the mission using the Maneuver Summary report.
- Bring the Report & Graph Manager () to the front.
- Select the Optimal_Finite satellite in the Objects List.
- Expand () Installed Styles directory.
- Generate the Maneuver Summary report.
- Examine the duration of the mission.
- Change the units to hours.
- Scroll to the Fuel Used column.
- Examine the report and determine how much fuel was consumed for the mission.
For more information about Astrogator or the Optimal Finite Maneuver, you can check out the Astrogator Maneuver page.