Finite Maneuvers with Astrogator
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.
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.
This lesson requires STK 12.4 or newer to complete it in its entirety. It includes new features introduced in STK 12.4.
Capabilities covered
- STK Pro
- Astrogator
- Analysis Workbench
Problem statement
When designing a maneuver that requires a large Delta-V, you need a finite maneuver model to properly simulate a satellite’s trajectory, especially when you have a low-thrust engine on your satellite. Also, the availability of power from the solar panels constrains the engine's possible thrust.
In this lesson, you will learn how to properly configure the Finite Maneuver segment in order to take into account specific constraints.
Solution
Use STK's Astrogator capability to design an orbit raising strategy (from LEO to MEO) with a low-thrust engine. You must account for different Sun related constraints during the engine burn. You will analyze each of these constraints in Cases 1 to 3:
- Satellite in sunlight
- Positive Sun incidence angle over the solar panels
- A minimum available solar power level from the solar panels
All the above cases will require the definition of a main propagation flow (during which the satellite does not maneuver) and a nested autosequence that contains the Maneuver segment, active when a constraint is satisfied.
Video Guidance
Watch the following video. Then follow the steps below, which incorporate the systems and missions you work on (sample inputs provided).
Creating a new Scenario
- Launch STK ().
- Click the button.
- Enter the following in the STK New Scenario Wizard:
- Click to confirm your changes.
- Click Save () once the scenario loads. A folder with the same name as your scenario is created for you.
- Verify the scenario name and location in the Save As window.
- Click .
Option | Value |
---|---|
Name: | FiniteThrustWithSun |
Start: | 25 Jan 2019 12:00:00.000 UTCG |
Stop: | 10 Feb 2019 12:00:00.000 UTCG |
Save () often!
Configuring the Component Browser
With the Component Browser, you can build a custom low-thrust engine for the satellite.
- Open the Component Browser.
- Select the Engine Models folder.
- Duplicate the Constant Thrust and Isp model.
- Rename the model Low Thrust.
- Set the following values for the custom engine:
Option | Value |
---|---|
Thrust: | 1 N |
Isp: | 1900 sec |
You will use this engine for each of the three cases (and the resulting three satellites) in this scenario.
Case 1: satellite with Sun constraints
In this first case, you will examine a satellite with Sun constraints. You need to insert a Satellite () object which you will use to create the satellite orbit.
- Select Satellite () in the Insert STK Objects tool.
- Select the Insert Default method.
- Click .
- Rename the Satellite () BodyInSunlight.
Setting BodyInSunlight's propagator to Astrogator.
You will use Astrogator to design your satellite's trajectory. You will use a simple Sunlight condition as the constraint; however, you don't need to add a sunlight constraint on the satellite since Astrogator will take care of that aspect.
- Open BodyInSunlight's () Properties ().
- Select the Basic - Orbit page.
- Set Propagator: to Astrogator.
Setting the satellite's orbital properties
- Return to the Basic - Orbit page.
- Set the following parameters in the Initial State segment:
- Select the Spacecraft Parameters tab.
- Set the Dry Mass to 150 kg.
- Select the Fuel Tank tab.
- Set the following parameters:
Option | Value |
---|---|
Coordinate Type: | Keplerian |
Orbit Epoch: | 25 Jan 2019 12:00:00.000 UTCG |
Semi-major Axis | 7000 km |
Eccentricity: | 0 |
Inclination: | 28.5 deg |
Right Asc. of Asc. Node: | 0 deg |
Argument of Periapsis | 0 deg |
True Anomaly: | 0 deg |
Option | Value |
---|---|
Fuel Mass: | 100 kg |
Define stopping conditions
In this section, you'll define the logic behind the satellite's path. You want the satellite to reach its goal of 20000 km from Earth's center by using the engine only when the satellite is in sunlight.
- Add () an R Magnitude stopping condition in the Propagate segment.
- Set the following:
- Add () a Lighting stopping condition.
- Name it Coasting.
- Set the Condition to be Enter Direct Sun. This way, you trigger an automatic sequence (containing a finite maneuver) when the satellite enters direct sunlight.
- Remove Duration stopping condition.
Option | Value |
---|---|
Trip | 20000 km |
Tolerance | 1 km |
These parameters represent the overall final condition for propagation. The next stopping condition you will add will be triggered multiple times and initiate autosequences rather than stop propagation.
Change propagator
Select Earth Point Mass as the propagator. This will reduce the computational time, while still providing useful results:
- Click ellipses () in the Propagation segment.
- Select Earth Point Mass as the Propagator.
Creating an Automatic Sequence
In this section, you'll learn how to add and design an autosequence. An autosequence is like a standard sequence, except that it is executed automatically when an associated stopping condition is triggered. Here, the goal is to maneuver when the satellite enters sunlight, and cease maneuvers when the satellite exits sunlight.
- Open the Automatic Sequence Browser ().
- Create a new sequence named SunlightManeuver.
- Click the button to enter into the Automatic Sequence Properties page.
- Click the Insert Segment After () and add a new Maneuver segment. Set the following:
- Add () a new Lighting stopping condition from the Propagator tab.
- Set it to Exit Direct Sun.
- Remove the default (Duration) stopping condition.
Option | Value |
---|---|
Maneuver Name | SunConstrained |
Maneuver Color | Red |
Maneuver Type | Finite |
Attitude Control (Attitude tab) | Along Velocity Vector |
Attitude Update (Attitude tab) | Update during burn |
Engine Model (Engine tab) | Low Thrust |
Finite Propagator and Force Model for Optimization | Earth Point Mass |
Implement the Automatic Sequence
You just created an automatic sequence that will apply a thrust force (using the custom engine you previously defined) only when the satellite is in sunlight. Apply all changes and, in the main sequence, set the Sequence option for the Coasting stopping condition to SunlightManeuver.
Set the graphics
You will modify the graphics settings so that you can view the satellite's entire orbit. Specifically, you want to see when a portion of the orbit is in Umbra.
- Run the MCS.
- Clear the graphics ().
- Navigate to the 3D Graphics > Pass > Orbit Track page.
- Set the following:
- Select the 2D Graphics > Lighting panel from the Properties Browser.
- Ensure the Umbra check box is checked.
- Click .
- View the orbit in the 3D Graphics window.
Option | Value |
---|---|
Lead Type | All |
Trail Type | Same As Lead |
The red portion of the orbit is when the satellite executes its low-thrust maneuver.
Check the results
Now that you have modeled the satellite's orbit and visualized its behavior, examine the results to get an overview about the engine's performance.
- Open the Report & Graph Manager ().
- Run the Maneuver Summary report.
The maneuver durations increase as the satellite spirals outward and time spent in sunlight increases along with the period.
Create a custom graph showing the Semi-major axis over time
- Select the FiniteThrustWithSun Styles folder in the Styles list.
- Click the Create new graph style button ().
- Rename the graph "Semimajor Axis."
- Open the graph's properties.
Edit the graph's data providers
When the graph's properties open, you will see the Data Providers list on the left side of the window and the Graph Contents list on the right side.
- Expand () the Classical Element data provider.
- Expand () the ICRF data provider.
- Move () the Semi-major Axis element to the right.
- Click to save the graph style.
- Save () the scenario.
- Reset () the animation time.
Closing Case 1
You have built and analyzed a scenario where you simulated a satellite's rise while leveraging when the satellite appears in direct sunlight as a simple control law. In Case 2, you will build on this first case to increase the fidelity of the scenario.
Case 2: satellite with solar panels constraints
Unlike the previous case, where you set a simple sunlight constraint on the satellite, now you want the Sun vector to have a positive incidence angle over the solar panels. The solar panels are fixed in this case. By building on Case 1, Case 2 will increase the fidelity of your scenario. You will create a new satellite for Case 2.
Inserting a Satellite object
- Select Satellite () in the Insert STK Objects tool.
- Select the Insert Default method.
- Click Insert....
- Rename Satellite () to FixedSolarPanels.
Setting FixedSolarPanels's propagator to Astrogator
You will use Astrogator to design your spacecraft trajectory.
- Open the FixedSolarPanels' () Properties ().
- Select the Basic - Orbit page.
- Set Propagator: to Astrogator.
Define the initial state
Set the orbital properties for the satellite.
- Set the following parameters in the Initial State segment:
- Select the Spacecraft Parameters tab.
- Set the Dry Mass to 150 kg.
- Select the Fuel Tank tab and set the following parameters:
Option | Value |
---|---|
Coordinate Type: | Keplerian |
Orbit Epoch: | 25 Jan 2019 12:00:00.000 UTCG |
Semi-major Axis | 7000 km |
Eccentricity: | 0 |
Inclination: | 28.5 deg |
Right Asc. of Asc. Node: | 0 deg |
Argument of Periapsis | 0 deg |
True Anomaly: | 0 deg |
Option | Value |
---|---|
Fuel Mass: | 100 kg |
Lock the solar panels to a fixed orientation
The solar panels in the 3D model of the default satellite are articulated. You can point them towards an available target. In this case, you will make them fixed with respect to the spacecraft body.
- Propagate () the satellite.
- Zoom To the satellite in the 3D window. You can see the solar panels are articulated to follow the Sun.
- Select Properties ().
- Navigate to the 3D Graphics > Model Pointing page.
- Set None in the Available Targets field.
- Click .
- Navigate to the 3D Graphics - Model.
- Click the View button in the Articulations groupbox.
- Set the articulation value for the SolarPanels group to 0.
- Click .
- Animate the scenario (). The solar panels should now have a fixed orientation respect to the satellite body. Also, they should align with the local horizontal plane.
Create additional elements in the Analysis Workbench
You will now create new elements in STK's Analysis Workbench capability to evaluate when the solar incidence angle with the solar panels is greater than zero.
- Open Analysis Workbench ().
- Select the FixedSolarPanels () satellite in the left panel.
- Select the Vector Geometry tab.
- Click the Create New Angle () button.
- Define the angle this way:
- Click to close the panel and to accept the modification. A new angle element will appear within the My Components folder.
- Close Analysis Workbench.
Option | Value |
---|---|
Type | To Plane |
Name | SunIncidence |
Parent | Satellite/FixedSolarPanels |
Reference Vector | FixedSolarPanels Sun |
Reference Plane | FixedSolarPanels Body.XY |
Signed Checkbox | Signed |
Toward plane normal | Negative |
Show custom elements in the 3D Graphics window
You will show the geometry of the system using the STK's 3D window.
- Open the FixedSolarPanels' () Properties ().
- Navigate to 3D Graphics > Vector page.
- Check the Sun Vector option to show it in the 3D window from the Vectors tab.
- Click on the button from the Angles tab.
- Select the previously created SunIncidence angle item.
- Click to apply the changes and to close the window.
- Change the color of the newly created item to yellow.
- Select the Body.XY Plane item from the Planes tab to show it in the 3D window.
- Click .
Viewing the geometry in the 3D Graphics window.
You can see the system's geometry in the 3D Graphics window. The SunIncidence angle will vary over time, with positive or negative values depending on the relative position of the Sun with respect to the spacecraft. Also, note that the solar panels lay in the body XY plane.
.
Create a scalar component
Now, you have a custom element (the Sun incidence angle) that you want to use to constrain the satellite thrust. You only want the satellite to thrust when the Sun incidence angle is greater than zero (meaning when the Sun has a positive elevation with respect to the satellite Body XY plane).
- Open Analysis Workbench ().
- Select the FixedSolarPanels () satellite in the left panel.
- Select the Calculation tab.
- Click the Create New Scalar Calculation () button.
- Define the component this way:
- Click .
- Close Analysis Workbench window.
Option | Value |
---|---|
Type | Angle |
Name | SunIncidence |
Parent | Satellite/FixedSolarPanels |
Input Angle | FixedSolarPanels SunIncidence |
Define R Magnitude stopping condition
You now need to use the scalar component that you just created as a triggering condition for the thrust maneuver.
- Browse to the Basic > Orbit page of the FixedSolarPanels () satellite.
- Add () an R Magnitude stopping condition in the Propagate segment.
- Set the following conditions:
Option | Value |
---|---|
Trip | 20000 km |
Tolerance | 1 km |
This R Magnitude stopping condition will be the overall terminating event.
Defining a UserSelect stopping condition
- Add () a UserSelect stopping condition.
- Double-click on the Name cell to rename it NegativeSunAngle.
- Click the Edit button for the User Calc Object item. A new window will appear.
- Click the Change... button. This action will open another window where you can define which component you'd like to use for the stopping condition.
- Browse to the Scalar folder.
- Select the Scalar component.
- Click to accept the changes. This will close the window and will bring you back to the User Calculation Object Selection window.
Selecting and configuring the AWB scalar for the UserSelect stopping condition
- Double-click the Value cell of the Scalar field.
- Select Satellite as Filter by item.
- Select the FixedSolarPanels () satellite in the left window.
- Select the SunIncidence component in the right window.
- Double-click the Value cell of the UnitDimension field.
- Select AngleUnit from the drop-down menu.
- Click to close the Listbox Field window
- Click to close the User Calculation Object Selection window to return to the Basic > Orbit page.
- Select the NegativeSunAngle stopping condition and set the following:
- Delete the Duration stopping condition, which is added by default.
Option | Value |
---|---|
Trip | 0 deg |
Criterion | Cross Increasing |
Tolerance | 0.1 deg |
Change propagator
Select Earth Point Mass as the propagator. This will reduce the computational time, while still providing useful results:
- Click the ellipses () in the Propagation segment.
- Select Earth Point Mass as the Propagator.
Create an Automatic Sequence
This Automatic Sequence will execute maneuvering only when incidence angle between the Sun and the solar panels is positive.
- Open the Automatic Sequence Browser ().
- Click .
- Rename it the SunlightManeuver.
- Click the Edit button to enter into the Automatic Sequence Properties page.
- Click the Insert Segment After () and add a new Maneuver segment. Set the following:
Option | Value |
---|---|
Maneuver Name | SunConstrained |
Maneuver Color | Red |
Maneuver Type | Finite |
Attitude Control (Attitude tab) | Along Velocity Vector |
Attitude Update (Attitude tab) | Update during burn |
Engine Model (Engine tab) | Low Thrust |
Finite Propagator and Force Model for Optimization | Earth Point Mass |
Set the maneuver to use Basic - Attitude
- Return to the Attitude tab.
- Click the More Options… button.
- Select the Use attitude page definition for other STK functions option. This will prevent the maneuver from defining the vehicle's attitude, allowing the SunIncidence angle to be applied.
- Click .
Create a UserSelect stopping condition for the finite maneuver propagator
You just defined a new autosequence. The next step is to create the proper stopping condition for the SunConstrained maneuver's propagator.
- Add () a new UserSelect stopping condition from the Propagator tab.
- Rename it SunAngle.
- Click the More Options… button to further customize the stopping condition. Select the SunAngle stopping condition.
- Click the button for the User Calc Object item. A new window will appear.
- Click the button. This action will open another window where you can define which component you'd like to use for the stopping condition.
- Expand the Scalar folder.
- Select the Scalar component.
- Click to accept the changes. This will close the window and will bring you back to the User Calculation Object Selection window.
Selecting the AWB scalar for the UserSelect stopping condition
- Double-click the Value cell of the Scalar field.
- Select Satellite as Filter by item.
- Select the FixedSolarPanels () satellite in the left window.
- Select the SunIncidence component in the right window.
Configuring the AWB scalar for the UserSelect stopping condition
- Double-click the Value cell of the UnitDimension field.
- Select AngleUnit from the drop-down menu.
- Click .
- Select the SunAngle stopping condition and set the following in the MCSProp window:
- Delete the default Duration stopping condition.
- Click .
- Click to close the Automatic Sequence Properties.
- Click to close the Automatic Sequence Browser.
Option | Value |
---|---|
Trip | 0 deg |
Criterion | Cross Decreasing |
Tolerance | 0.1 deg |
Implement the Automatic Sequence
You just created an automatic sequence that will execute maneuvering (using the custom engine you previously defined) only when the Sun has a positive incidence angle with respect to the satellite's solar panels.
- Set the Sequence option for the NegativeSunAngle stopping condition to SunlightManeuver in the main sequence.
- Save () the scenario.
Set the graphics
Now that you have modeled the satellite's orbit, you will run the MCS and modify the 3D display settings.
- Run the MCS.
- Clear the graphics ().
- Select the 3D Graphics > Pass > Orbit Track panel from the Properties Browser.
- Set the following:
- Select the 2D Graphics > Lighting panel from the Properties Browser.
- Ensure the Umbra check box is checked. This will display the portion of the orbit in umbra in blue.
- Click .
- View the orbit in the 3D Graphics window:
Option | Value |
---|---|
Lead Type | All |
Trail Type | Same As Lead |
The red portion of the orbit is when the satellite executes its low-thrust maneuver. The green portion is when the satellite is in sunlight but with a negative solar incidence angle with respect to the solar panels.
Check the results
You can create an overview of the engine's performance.
- Open the Report & Graph Manager ().
- Run the Maneuver Summary report. Notice, the increasing maneuver durations are consistent with the graphical results.
- Select both satellites in the left window of the Report & Graph Manager.
- Run the previously created Semimajor Axis graph.
Note, since the incidence angle constraint is more stringent than only in sunlight, the orbit is more elliptical than in the previous case and the overall semi-major axis value does not grow as high.
Case 3: satellite with Sun constraints
In this case, you have a more stringent operative requirement: a minimum available power for the solar panels during the thrust period. Since the available power for the solar panels is not a default data provider in STK, you will use Analysis Workbench to create a custom data provider. In particular, you will use a script that takes the Sun incidence angle as input and provides the power as an output. The script will use this well-known formula to calculate the power:
Power = 1380 * SolarPanelArea * sin(sunIncedence)
You will see how to implement the script later. Begin by creating and configuring a new satellite.
Inserting a Satellite object
You need to insert a Satellite object for Case 3.
- Select Satellite () in the Insert STK Objects tool.
- Select the Insert Default method.
- Click .
- Rename Satellite () to PowerConstraint.
Set PowerConstraint's propagator to Astrogator
You will use Astrogator to design your spacecraft trajectory.
- Open PowerConstraint's () Properties ().
- Select the Basic - Orbit page.
- Set Propagator: to Astrogator.
Define the initial state
- Set the following parameters in the Initial State segment:
- Select the Spacecraft Parameters tab.
- Set the Dry Mass to 150 kg.
- Select the Fuel Tank tab and set the following parameters:
Option | Value |
---|---|
Coordinate Type: | Keplerian |
Orbit Epoch: | 25 Jan 2019 12:00:00.000 UTCG |
Semi-major Axis | 7000 km |
Eccentricity: | 0 |
Inclination: | 28.5 deg |
Right Asc. of Asc. Node: | 0 deg |
Argument of Periapsis | 0 deg |
True Anomaly: | 0 deg |
Option | Value |
---|---|
Dry Mass: | 150 kg |
Option | Value |
---|---|
Fuel Mass: | 100 kg |
Lock the solar panels to a fixed orientation
Like in the previous case, you need to lock the solar panels respect to the satellite body axis.
- Propagate () the satellite and then zoom to it in the 3D window. Note as the solar panel are articulated to follow the Sun.
- Set None in the Available Targets panel in 3D Graphics > Model Pointing.
- Click .
- Navigate to the 3D Graphics > Model.
- Click the View button in the Articulations groupbox.
- Set the articulation value for the SolarPanels group to 0.
- Click .
- Animate the scenario (). The solar panels should now have a fixed orientation respect to the satellite body. Make sure they are correctly aligned (they should be aligned with the local horizontal plane as in the previous exercise).
Create additional elements in the Analysis Workbench
Like in the previous case, you will now create new elements in Analysis Workbench to implement the constraints to apply in this case.
- Open Analysis Workbench ().
- Select the PowerConstraint () satellite in the left panel.
- Select the Vector Geometry tab.
- Click the Create New Angle () button and define the angle this way:
- Click to accept the modification.
Option | Value |
---|---|
Type | To Plane |
Name | SunIncidence |
Parent | Satellite/PowerConstraint |
Reference Vector | PowerConstraint Sun |
Reference Plane | PowerConstraint Body.XY |
Signed Checkbox | Signed |
Toward plane normal | Negative |
Defining the calculation
A new angle element will appear within the My Components folder. Now you have a custom Vector Geometry component available. Next step is to create an additional scalar element that takes the value of the Vector Geometry component, which you will use in your script.
- Select the Calculation tab.
- Click the Create New Scalar Calculation () button.
- Define the component this way:
- Click to close the panel. A new calculation element will appear within the My Components folder. This will be the input parameter for the script.
Option | Value |
---|---|
Type | Angle |
Name | SunIncidence |
Parent | Satellite/PowerConstraint |
Input Angle | PowerConstraint SunIncidence |
Create and configure script
The SunIncidence angle you just created will be the input for your script that will calculate the amount of power available to the solar panels. This variable will then be used to trigger the finite maneuver.
Among other scripting languages, STK accepts VBScript as input. Here are a couple of basic considerations:
- The script has to be located inside a specific sub-folder of the main scenario folder.
- The input variables in the script will be scalar components in the STK scenario; in this case, you'll use the SunIncidence scalar that you just created.
Implementing the script
- Open a file editor such as Notepad++.
- Copy the following scripting statements into a new file:
- Using the windows File Explorer, navigate to your scenario folder.
- Create the following folder structure (specifically the folders circled in red):
- The nested folder structure highlighted in the figure is needed because STK will check for Scalar Calculation elements in the Scalar folder.
- Save the script file from your file editor in that folder as AvailablePower.vbs. Note, the file name is the same as the function name in the script.
Dim AvailablePower_compute_init Dim AvailablePower_Inputs Dim AvailablePower_Outputs Function AvailablePower(argArray) Dim retVal If IsEmpty(argArray(0)) Then retVal = AvailablePower_compute( argArray ) ElseIf argArray(0) = "register" Then AvailablePower_compute_init = -1 retVal = AvailablePower_register() ElseIf argArray(0) = "compute" Then retVal = AvailablePower_compute( argArray ) Else retVal = Empty End If AvailablePower = retVal End Function Function AvailablePower_register() ReDim argStr(2) argStr(0) = "ArgumentType = Output ; Name = Scalar ; ArgumentName = value" argStr(1) = "ArgumentType = Input ; Type = Scalar ; Source = Satellite/PowerConstraint ; Name = SunIncidence ; ArgumentName = SunIncidence" AvailablePower_register = argStr End Function Function AvailablePower_compute(stateData) If AvailablePower_compute_init < 0 Then Set AvailablePower_Inputs = g_GetPluginArrayInterface("AvailablePower_Inputs") Set AvailablePower_Outputs = g_GetPluginArrayInterface("AvailablePower_Outputs") AvailablePower_compute_init = 1 End If Redim returnValue(1) returnValue(AvailablePower_Outputs.value) = CustomScalar(stateData(AvailablePower_Inputs.SunIncidence)) AvailablePower_compute = returnValue End Function Function CustomScalar(SunIncidence) If SunIncidence > 0 Then CustomScalar = 1380*sin(SunIncidence) Else CustomScalar = 0 End If End Function
Defining the calculation
- Return to STK.
- Select the Calculation tab for the PowerConstraint () satellite.
- Click the Create New Scalar Calculation () button.
- Define the component:
- Click to close the panel and to accept the modification.
Option | Value |
---|---|
Type | Custom Script |
Name | AvailablePower |
Parent | Satellite/PowerConstraint |
CalcScalar Script File | [yourScenarioFolder]\Scripting\VectorTool\Scalar\AvailablePower.vbs |
Dimension | Power |
Checking the available power over time
- Right-click the AvailablePower component and select the Report/Graph option.
- Select Graph as the Type.
- Select AvailablePower as a Report Element.
- Click the Create Graph button.
- Change the graph units () to Watts to show the graph in a more readable way
Note the dependent variable is displayed in Watts (default is dBWatts) consistent with the incidence angle.
Defining stopping conditions
You now need to use the scalar component that you just created to trigger maneuver.
- Browse to the Basic > Orbit page of the PowerConstraint () satellite.
- Add () an R Magnitude stopping condition in the Propagate segment.
- Set the following:
Option | Value |
---|---|
Trip | 20000 km |
Tolerance | 1 km |
As in the previous exercises, this condition represents the overall terminating event for the propagate segment.
Defining the UserSelect stopping condition
- Add () a UserSelect stopping condition.
- Double-click on the Name cell.
- Type LessPower as the new name.
- Click the button for the User Calc Object item. A new window will appear.
- Click the button. This action will open another window where you can define which component you'd like to use for the stopping condition.
- Browse to the Scalar folder.
- Select the Scalar component.
- Click to accept the changes. This will close the window and will bring you back to the User Calculation Object Selection window.
Selecting and configuring the AWB scalar for the UserSelect stopping condition
- Double-click the Value cell of the Scalar field.
- Select Satellite as Filter by item.
- Select the PowerConstraint () satellite in the left window.
- Select AvailablePower component in the right window.
- Double-click the Value cell of the UnitDimension field.
- Select PowerUnit from the drop-down menu.
- Click to close the Listbox Field window
- Click to close the User Calculation Object Selection window to return to the Basic -> Orbit page.
- Select the LessPower stopping condition and set the following. Note the units of Watts.
- Delete the Duration stopping condition, which is created by default.
Option | Value |
---|---|
Trip | 500 W |
Criterion | Cross Increasing |
Tolerance | 1 W |
Changing the propagator
- Select the ellipses () in the Propagator: field.
- Select the Earth Point Mass object as propagator. This will reduce the computational time, while still providing useful results.
Create an Automatic Sequence
Create an automatic sequence that will enable engine thrust only when the available power from the solar panels is higher than a specific threshold.
- Open the Automatic Sequence Browser ().
- Create a new sequence named PowerManeuver.
- Click the Edit button to enter into the Automatic Sequence Properties page.
- Click the Insert Segment After () and add a new Maneuver segment.
- Set the following:
- Return to the Attitude tab and Click the button.
- Select the Use attitude page definition for other STK functions option. This will prevent the maneuver from defining the vehicle's attitude, allowing the SunIncidence angle to be applied.
Option | Value |
---|---|
Maneuver Name | PowerConstrained |
Maneuver Color | Red |
Maneuver Type | Finite |
Attitude Control (Attitude tab) | Along Velocity Vector |
Attitude Update (Attitude tab) | Update during burn |
Engine Model (Engine tab) | Low Thrust |
Finite Propagator and Force Model for Optimization | Earth Point Mass |
Creating a UserSelect stopping condition
You just defined a new autosequence. The next step is to create the proper stopping condition for the maneuver's propagator.
- Add () a new UserSelect stopping condition from the Propagator tab.
- Rename it MorePower.
- Click the button to further customize the stopping condition.
- Select the MorePower stopping condition.
- Click the button for the User Calc Object item. A new window will appear.
- Click the button. This action will open another window where you can define which component you'd like to use for the stopping condition.
- Browse to the Scalar folder.
- Select the Scalar component.
- Click to accept the changes. This will close the window and will bring you back to the User Calculation Object Selection window.
Selecting and configuring the scalar
- Double-click the Value cell of the Scalar field.
- Select Satellite as Filter by item.
- Select the PowerConstraint () satellite in the left window, and the AvailablePower component in the right window.
- Double-click the Value cell of the UnitDimension field and select PowerUnit from the drop-down menu.
- Click to close the Listbox Field window
- Click to close the User Calculation Object Selection window to return to MSCProp window.
- Select the MorePower stopping condition and set the following. Please make note of the units.
Option | Value |
---|---|
Trip | 500 W |
Criterion | Cross Decreasing |
Tolerance | 1 W |
Closing the windows
- Delete the Duration stopping condition, which is created by default.
- Click to close the MCSProp window.
- Click to close the Automatic Sequence Properties window.
- Click to close the Automatic Sequence Browser.
Implementing the Automatic Sequence
You just created an automatic sequence that will apply thrust (using the custom engine you previously defined) only when the Sun provides an available power higher than 500 W.
- Save () the scenario.
- Set the Sequence option for the LessPower stopping condition to PowerManeuver in the main sequence.
Set the graphics and check the results
You're now ready to propagate the MCS and properly configure the 3D graphics to display the results.
- Run the MCS.
- Clear the graphics ().
- Select PowerConstraint's () Properties ().
- Select the 3D Graphics > Pass > Orbit Track panel from the Properties Browser.
- Set the following:
- Select the 2D Graphics > Lighting panel from the Properties Browser.
- Ensure the Umbra check box is checked.
- Click
- View the changes in the 3D Graphics window.
Option | Value |
---|---|
Lead Type | All |
Trail Type | Same As Lead |
The red portion of the orbit is when the satellite executes its low-thrust maneuver. The green portion is when the satellite is in sunlight but with an available power less than 500 W.
Check the results
You can create an overview of the engine's performance.
- Open the Report & Graph Manager ().
- Run the Maneuver Summary report. Notice, the increasing maneuver durations are consistent with the graphical results.
- Select the satellites in the left window of the Report & Graph Manager.
- Run the previously created Semimajor Axis graph.
Conclusion
The exercises in this scenario aimed to design and implement constraints relevant to different scalar elements to use with lighting conditions and autosequences. When an element is not directly available in STK, it can be built using different approaches in Analysis Workbench.
Remember to Save () your scenario before closing.