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:

  1. Satellite in sunlight
  2. Positive Sun incidence angle over the solar panels
  3. 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

  1. Launch STK ().
  2. Click the Create a Scenario button.
  3. Enter the following in the STK New Scenario Wizard:
  4. Option Value
    Name: FiniteThrustWithSun
    Start: 25 Jan 2019 12:00:00.000 UTCG
    Stop: 10 Feb 2019 12:00:00.000 UTCG
  5. Click OK to confirm your changes.
  6. Click Save () once the scenario loads. A folder with the same name as your scenario is created for you.
  7. Verify the scenario name and location in the Save As window.
  8. Click Save.

Save () often!

Configuring the Component Browser

With the Component Browser, you can build a custom low-thrust engine for the satellite.

  1. Open the Component Browser.
  2. Select the Engine Models folder.
  3. Duplicate the Constant Thrust and Isp model.
  4. Rename the model Low Thrust.
  5. 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.

  1. Select Satellite () in the Insert STK Objects tool.
  2. Select the Insert Default method.
  3. Click Insert....
  4. 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.

  1. Open BodyInSunlight's () Properties ().
  2. Select the Basic - Orbit page.
  3. Set Propagator: to Astrogator.

Setting the satellite's orbital properties

  1. Return to the Basic - Orbit page.
  2. Set the following parameters in the Initial State segment:
  3. 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
  4. Select the Spacecraft Parameters tab.
  5. Set the Dry Mass to 150 kg.
  6. Select the Fuel Tank tab.
  7. Set the following parameters:
  8. 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.

  1. Add () an R Magnitude stopping condition in the Propagate segment.
  2. Set the following:
  3. 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.

  4. Add () a Lighting stopping condition.
  5. Name it Coasting.
  6. 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.
  7. Remove Duration stopping condition.

Change propagator

Select Earth Point Mass as the propagator. This will reduce the computational time, while still providing useful results:

  1. Click ellipses () in the Propagation segment.
  2. 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.

  1. Open the Automatic Sequence Browser ().
  2. Create a new sequence named SunlightManeuver.
  3. Click the Edit... button to enter into the Automatic Sequence Properties page.
  4. Click the Insert Segment After () and add a new Maneuver segment. Set the following:
  5. 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
  6. Add () a new Lighting stopping condition from the Propagator tab.
  7. Set it to Exit Direct Sun.
  8. Remove the default (Duration) stopping condition.

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.

  1. Run the MCS.
  2. Clear the graphics ().
  3. Navigate to the 3D Graphics > Pass > Orbit Track page.
  4. Set the following:
  5. Option Value
    Lead Type All
    Trail Type Same As Lead
  6. Select the 2D Graphics > Lighting panel from the Properties Browser.
  7. Ensure the Umbra check box is checked.
  8. Click Apply.
  9. View the orbit in the 3D Graphics window.

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.

  1. Open the Report & Graph Manager ().
  2. Run the Maneuver Summary report.
  3. 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

  1. Select the FiniteThrustWithSun Styles folder in the Styles list.
  2. Click the Create new graph style button ().
  3. Rename the graph "Semimajor Axis."
  4. 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.

  1. Expand () the Classical Element data provider.
  2. Expand () the ICRF data provider.
  3. Move () the Semi-major Axis element to the right.
  4. Click OK to save the graph style.
  5. Save () the scenario.
  6. 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

  1. Select Satellite () in the Insert STK Objects tool.
  2. Select the Insert Default method.
  3. Click Insert....
  4. Rename Satellite () to FixedSolarPanels.

Setting FixedSolarPanels's propagator to Astrogator

You will use Astrogator to design your spacecraft trajectory.

  1. Open the FixedSolarPanels' () Properties ().
  2. Select the Basic - Orbit page.
  3. Set Propagator: to Astrogator.

Define the initial state

Set the orbital properties for the satellite.

  1. Set the following parameters in the Initial State segment:
  2. 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
  3. Select the Spacecraft Parameters tab.
  4. Set the Dry Mass to 150 kg.
  5. Select the Fuel Tank tab and set the following parameters:
  6. 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.

  1. Propagate () the satellite.
  2. Zoom To the satellite in the 3D window. You can see the solar panels are articulated to follow the Sun.
  3. Select Properties ().
  4. Navigate to the 3D Graphics > Model Pointing page.
  5. Set None in the Available Targets field.
  6. Click Apply.
  7. Navigate to the 3D Graphics - Model.
  8. Click the View button in the Articulations groupbox.
  9. Set the articulation value for the SolarPanels group to 0.
  10. Click Apply.
  11. 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.

  1. Open Analysis Workbench ().
  2. Select the FixedSolarPanels () satellite in the left panel.
  3. Select the Vector Geometry tab.
  4. Click the Create New Angle () button.
  5. Define the angle this way:
  6. 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
  7. Click OK to close the panel and to accept the modification. A new angle element will appear within the My Components folder.
  8. Close Analysis Workbench.

Show custom elements in the 3D Graphics window

You will show the geometry of the system using the STK's 3D window.

  1. Open the FixedSolarPanels' () Properties ().
  2. Navigate to 3D Graphics > Vector page.
  3. Check the Sun Vector option to show it in the 3D window from the Vectors tab.
  4. Click on the Add... button from the Angles tab.
  5. Select the previously created SunIncidence angle item.
  6. Click OK to apply the changes and to close the window.
  7. Change the color of the newly created item to yellow.
  8. Select the Body.XY Plane item from the Planes tab to show it in the 3D window.
  9. Click Apply.

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).

  1. Open Analysis Workbench ().
  2. Select the FixedSolarPanels () satellite in the left panel.
  3. Select the Calculation tab.
  4. Click the Create New Scalar Calculation () button.
  5. Define the component this way:
  6. Option Value
    Type Angle
    Name SunIncidence
    Parent Satellite/FixedSolarPanels
    Input Angle FixedSolarPanels SunIncidence
  7. Click OK.
  8. Close Analysis Workbench window.

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.

  1. Browse to the Basic > Orbit page of the FixedSolarPanels () satellite.
  2. Add () an R Magnitude stopping condition in the Propagate segment.
  3. 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

  1. Add () a UserSelect stopping condition.
  2. Double-click on the Name cell to rename it NegativeSunAngle.
  3. Click the Edit button for the User Calc Object item. A new window will appear.
  4. 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.
  5. Browse to the Scalar folder.
  6. Select the Scalar component.
  7. Click OK 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

  1. Double-click the Value cell of the Scalar field.
  2. Select Satellite as Filter by item.
  3. Select the FixedSolarPanels () satellite in the left window.
  4. Select the SunIncidence component in the right window.
  5. Double-click the Value cell of the UnitDimension field.
  6. Select AngleUnit from the drop-down menu.
  7. Click OK to close the Listbox Field window
  8. Click OK to close the User Calculation Object Selection window to return to the Basic > Orbit page.
  9. Select the NegativeSunAngle stopping condition and set the following:
  10. Option Value
    Trip 0 deg
    Criterion Cross Increasing
    Tolerance 0.1 deg
  11. Delete the Duration stopping condition, which is added by default.

Change propagator

Select Earth Point Mass as the propagator. This will reduce the computational time, while still providing useful results:

  1. Click the ellipses () in the Propagation segment.
  2. 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.

  1. Open the Automatic Sequence Browser ().
  2. Click New.
  3. Rename it the SunlightManeuver.
  4. Click the Edit button to enter into the Automatic Sequence Properties page.
  5. 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

  1. Return to the Attitude tab.
  2. Click the More Options… button.
  3. 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.
  4. Click OK.

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.

  1. Add () a new UserSelect stopping condition from the Propagator tab.
  2. Rename it SunAngle.
  3. Click the More Options… button to further customize the stopping condition. Select the SunAngle stopping condition.
  4. Click the Edit button for the User Calc Object item. A new window will appear.
  5. 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.
  6. Expand the Scalar folder.
  7. Select the Scalar component.
  8. Click OK 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

  1. Double-click the Value cell of the Scalar field.
  2. Select Satellite as Filter by item.
  3. Select the FixedSolarPanels () satellite in the left window.
  4. Select the SunIncidence component in the right window.

Configuring the AWB scalar for the UserSelect stopping condition

  1. Double-click the Value cell of the UnitDimension field.
  2. Select AngleUnit from the drop-down menu.
  3. Click OK.
  4. Select the SunAngle stopping condition and set the following in the MCSProp window:
  5. Option Value
    Trip 0 deg
    Criterion Cross Decreasing
    Tolerance 0.1 deg
  6. Delete the default Duration stopping condition.
  7. Click OK.
  8. Click OK to close the Automatic Sequence Properties.
  9. Click OK to close the Automatic Sequence Browser.

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.

  1. Set the Sequence option for the NegativeSunAngle stopping condition to SunlightManeuver in the main sequence.
  2. 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.

  1. Run the MCS.
  2. Clear the graphics ().
  3. Select the 3D Graphics > Pass > Orbit Track panel from the Properties Browser.
  4. Set the following:
  5. Option Value
    Lead Type All
    Trail Type Same As Lead
  6. Select the 2D Graphics > Lighting panel from the Properties Browser.
  7. Ensure the Umbra check box is checked. This will display the portion of the orbit in umbra in blue.
  8. Click Apply.
  9. View the orbit in the 3D Graphics window:

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.

  1. Open the Report & Graph Manager ().
  2. Run the Maneuver Summary report. Notice, the increasing maneuver durations are consistent with the graphical results.
  3. Select both satellites in the left window of the Report & Graph Manager.
  4. 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.

  1. Select Satellite () in the Insert STK Objects tool.
  2. Select the Insert Default method.
  3. Click Insert....
  4. Rename Satellite () to PowerConstraint.

Set PowerConstraint's propagator to Astrogator

You will use Astrogator to design your spacecraft trajectory.

  1. Open PowerConstraint's () Properties ().
  2. Select the Basic - Orbit page.
  3. Set Propagator: to Astrogator.

Define the initial state

  1. Set the following parameters in the Initial State segment:
  2. 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
  3. Select the Spacecraft Parameters tab.
  4. Set the Dry Mass to 150 kg.
  5. Option Value
    Dry Mass: 150 kg
  6. Select the Fuel Tank tab and set the following parameters:
  7. 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.

  1. Propagate () the satellite and then zoom to it in the 3D window. Note as the solar panel are articulated to follow the Sun.
  2. Set None in the Available Targets panel in 3D Graphics > Model Pointing.
  3. Click Apply.
  4. Navigate to the 3D Graphics > Model.
  5. Click the View button in the Articulations groupbox.
  6. Set the articulation value for the SolarPanels group to 0.
  7. Click Apply.
  8. 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.

  1. Open Analysis Workbench ().
  2. Select the PowerConstraint () satellite in the left panel.
  3. Select the Vector Geometry tab.
  4. Click the Create New Angle () button and define the angle this way:
  5. 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
  6. Click OK to accept the modification.

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.

  1. Select the Calculation tab.
  2. Click the Create New Scalar Calculation () button.
  3. Define the component this way:
  4. Option Value
    Type Angle
    Name SunIncidence
    Parent Satellite/PowerConstraint
    Input Angle PowerConstraint SunIncidence
  5. Click OK to close the panel. A new calculation element will appear within the My Components folder. This will be the input parameter for the script.

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

  1. Open a file editor such as Notepad++.
  2. Copy the following scripting statements into a new file:
  3. 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
    

  4. Using the windows File Explorer, navigate to your scenario folder.
  5. Create the following folder structure (specifically the folders circled in red):
  6. The nested folder structure highlighted in the figure is needed because STK will check for Scalar Calculation elements in the Scalar folder.
  7. 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.

Defining the calculation

  1. Return to STK.
  2. Select the Calculation tab for the PowerConstraint () satellite.
  3. Click the Create New Scalar Calculation () button.
  4. Define the component:
  5. Option Value
    Type Custom Script
    Name AvailablePower
    Parent Satellite/PowerConstraint
    CalcScalar Script File [yourScenarioFolder]\Scripting\VectorTool\Scalar\AvailablePower.vbs
    Dimension Power
  6. Click OK to close the panel and to accept the modification.

Checking the available power over time

  1. Right-click the AvailablePower component and select the Report/Graph option.
  2. Select Graph as the Type.
  3. Select AvailablePower as a Report Element.
  4. Click the Create Graph button.
  5. 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.

  1. Browse to the Basic > Orbit page of the PowerConstraint () satellite.
  2. Add () an R Magnitude stopping condition in the Propagate segment.
  3. Set the following:
  4. 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

  1. Add () a UserSelect stopping condition.
  2. Double-click on the Name cell.
  3. Type LessPower as the new name.
  4. Click the Edit button for the User Calc Object item. A new window will appear.
  5. 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.
  6. Browse to the Scalar folder.
  7. Select the Scalar component.
  8. Click OK 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

  1. Double-click the Value cell of the Scalar field.
  2. Select Satellite as Filter by item.
  3. Select the PowerConstraint () satellite in the left window.
  4. Select AvailablePower component in the right window.
  5. Double-click the Value cell of the UnitDimension field.
  6. Select PowerUnit from the drop-down menu.
  7. Click OK to close the Listbox Field window
  8. Click OK to close the User Calculation Object Selection window to return to the Basic -> Orbit page.
  9. Select the LessPower stopping condition and set the following. Note the units of Watts.
  10. Option Value
    Trip 500 W
    Criterion Cross Increasing
    Tolerance 1 W
  11. Delete the Duration stopping condition, which is created by default.

Changing the propagator

  1. Select the ellipses () in the Propagator: field.
  2. 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.

  1. Open the Automatic Sequence Browser ().
  2. Create a new sequence named PowerManeuver.
  3. Click the Edit button to enter into the Automatic Sequence Properties page.
  4. Click the Insert Segment After () and add a new Maneuver segment.
  5. Set the following:
  6. 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
  7. Return to the Attitude tab and Click the More Options… button.
  8. 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.

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.

  1. Add () a new UserSelect stopping condition from the Propagator tab.
  2. Rename it MorePower.
  3. Click the More Options… button to further customize the stopping condition.
  4. Select the MorePower stopping condition.
  5. Click the Edit button for the User Calc Object item. A new window will appear.
  6. 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.
  7. Browse to the Scalar folder.
  8. Select the Scalar component.
  9. Click OK 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

  1. Double-click the Value cell of the Scalar field.
  2. Select Satellite as Filter by item.
  3. Select the PowerConstraint () satellite in the left window, and the AvailablePower component in the right window.
  4. Double-click the Value cell of the UnitDimension field and select PowerUnit from the drop-down menu.
  5. Click OK to close the Listbox Field window
  6. Click OK to close the User Calculation Object Selection window to return to MSCProp window.
  7. Select the MorePower stopping condition and set the following. Please make note of the units.
  8. Option Value
    Trip 500 W
    Criterion Cross Decreasing
    Tolerance 1 W

Closing the windows

  1. Delete the Duration stopping condition, which is created by default.
  2. Click OK to close the MCSProp window.
  3. Click OK to close the Automatic Sequence Properties window.
  4. Click OK 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.

  1. Save () the scenario.
  2. 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.

  1. Run the MCS.
  2. Clear the graphics ().
  3. Select PowerConstraint's () Properties ().
  4. Select the 3D Graphics > Pass > Orbit Track panel from the Properties Browser.
  5. Set the following:
  6. Option Value
    Lead Type All
    Trail Type Same As Lead
  7. Select the 2D Graphics > Lighting panel from the Properties Browser.
  8. Ensure the Umbra check box is checked.
  9. Click Apply
  10. View the changes in the 3D Graphics window.

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.

  1. Open the Report & Graph Manager ().
  2. Run the Maneuver Summary report. Notice, the increasing maneuver durations are consistent with the graphical results.
  3. Select the satellites in the left window of the Report & Graph Manager.
  4. 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.