Astrogator LEO Rendezvous and Proximity Operations

Astrogator.

This tutorial will show some basic steps in modeling missions of one satellite approaching another already in orbit using STK Astrogator. In this example, you will model two satellites already in the same plane, with an “Inspector” trailing a “Target Satellite” in True Anomaly, and will target two in-plane burns to approach and subsequently circumnavigate the target. We’ll create an Astrogator Mission Control Sequence to perform a non-optimal transfer to the target satellite, and a maneuver to enter into a Natural Motion Circumnavigation relative orbit.

It is worth noting that there is nothing trivial about Rendezvous and Proximity Operations (RPO). This tutorial is intended to address a common RPO mission requirement, while providing a basic understanding of Astrogator techniques. It is not meant to cover or address all of the nuances regarding this type of relative orbit. As mentioned above, this tutorial will not result in a minimum delta V solution, as osculating orbital effects are not considered in determining optimal departure and transfer times.

Recommended Astrogator Training

This tutorial assumes you have some working knowledge of STK Astrogator. It is recommended you go through the following tutorials to become familiar with Astrogator, if you are not already:

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.

Watch the following video, then follow the steps below incorporating the systems and missions you work on (sample inputs provided).

Model the World!

Before you can begin with any analysis, you need to create a scenario and add a satellite. Let's do that now.

  1. Create a new scenario and call it Leo_Rendezvous.
  2. Set the analysis period to the following. Either accept the default start time and add two days (+2 days) or use the specified times below
  3. OptionValue
    Analysis Start Time1 Jul 2018 16:00:00.000 UTCG
    Analysis End Time+ 2 days

  4. Add a satellite () using the Define Properties () method in the Insert STK Objects () tool.
  5. Enter the following in the Satellite's properties.
  6. OptionValue
    NameTarget_Sat
    PropagatorAstrogator
  7. Change the Initial State () to the following LEO orbit.
    1. Apopasis Altitude: 500 km

      Periapsis Altitude: 500 km

      Inclination: 98.5 deg

      RAAN: 90 deg

      Argument of Perigee: 0 deg

      True Anomaly: 0 deg

  8. Change the Propagation during stopping condition to two (2) days.

Example LEO orbit values.

Propagate the Satellite and Clean Up Graphics

Now that you have the satellite ready you can propagate it.

  1. Run () Astrogator to propagate the satellite.
  2. Clear () the run graphics.
  3. Select the 2D Graphics - Pass page.
  4. Click the Resolution button.
  5. Set the Maximum time between orbit points to ten (10) sec. This is purely aesthetic.

Create the Inspector Satellite

You have a good start on the inspector satellite with the LEO satellite you just built. Let's copy that satellite and then modify the new copy.

  1. Copy () Target_Sat () in the Object Browser.
  2. Paste () the new satellite into the Object Browser.
  3. Rename the new satellite RPO_Sat.
  4. Open RPO_Sat's properties and on its Basic>Orbit page, modify the True Anomaly to 30 degrees. This will offset RPO_Sat 30 degrees ahead of Target_Sat in an in-plane leading position.
  5. Change the color of the propagate segment to be a different color than Target_Sat
  6. Run () Astrogator.
  7. Clear () the Graphics.

Reference the Target Satellite

  1. Select the Basic - Reference page in RPO_Sat's () properties ().
  2. Select Target_Sat as the Reference vehicle.
  3. Click Select then Apply
  4. This sets the reference for relative parameters, e.g. targeting relative orbit parameters.

Display the RPO Satellite Relative to Target Sat

You can show the RPO trajectory relative to Target_Sat. This is an aesthetic change, but it makes the relative maneuvers easier to understand.

  1. In the Properties of the RPO_Sat, select the 3D Graphics - Orbit Systems page.
  2. Click the Add VVLH System button.
  3. Select Target_Sat and click OK.
  4. Deselect the other to ensure Target_Sat VVLH is the only one showing.
  5. Click Apply.

View the RPO Satellite Trajectory

  1. Select the 3D Graphics - Pass page.
  2. Set the Orbit Track Lead Type to All.
  3. Click OK.

Add an RPO Maneuver to Approach the Target Satellite

  1. Bring RPO_Sat's () properties () to the front.
  2. Select the Basic - Orbit page.
  3. Change the existing Propagate () segment duration to 600 seconds.
  4. This propagation time is an arbitrary selection based on an initial guess for a mission requirement, and may not be optimal. For an optimal (minimum Delta V) solution, a Lambert solver can be used to seed an initial guess two-body guess to Astrogator. Conversely, the optimization profiles of SNOPT or IPOPT can be utilized within Astrogator. This will be discussed at the end of the tutorial.

  5. Add a Target Sequence () after the propagate segment.
  6. Name the new Target Sequence Target Approach.

Add an In-Plane Maneuver

First you will do an in-plane maneuver to cause the satellite to drift to a specific point (in RIC coordinates) relative to the target satellite.

  1. Insert a Maneuver Segment inside the Target Sequence, and name it Burn1.
  2. In the properties panel for the “Burn1” maneuver, change the Attitude Control option to Thrust Vector.
  3. Click the ellipses next to thrust axes. Ensure that All STK Objects is selected in the filter dropdown, and select RPO_Sat as the object. Select the RIC axess on the right side as the thrust axes.
  4. Click the targets beside the X, Y, and Z values. They should become checked (). Keep the default 0 m/s values for each dimension, this serves as the initial guess for the target sequence.

Drift Toward the Satellite

  1. Add a new propagate () segment after the Maneuver ().
  2. Rename the propagate segment Drift.
  3. Set the Drift Propagate duration trip value to ten (10) hours. This will have an impact on the drift rate: 30 deg drift in 10 hours -> 3 deg/hour.
  4. This propagation time is an arbitrary selection based on an initial guess for a mission requirement, and my not be optimal. For an optimal (minimum Delta V) solution, a Lambert solver can be used to seed an initial guess two-body guess to Astrogator. Conversely, the optimization profiles of SNOPT or IPOPT can be utilized within Astrogator. This will be discussed at the end of the tutorial.

  5. Set the color of the Drift propagate segment to something different than the Target_Sat color.
  6. Run () Astrogator.

RPO drifting with Target_Sat

Set Goals for the Target Sequence

You would like to target a desired position relative to Target_Sat at the end of the drift propagate segment. You can specify those desired values and solve for them using the Target Sequence.

  1. Select the Drift Propagate segment in the Mission Control Sequence (MCS) Browser.
  2. With Drift selected, click the Results button.
  3. Expand () the Relative Motion Components directory.
  4. Move () CrossTrack, InTrack, and Radial to the Selected Components field.
  5. Click OK.

Set the Differential Corrector Search Profiles

Rather than attempting to force a single Differential Corrector to solve for the maneuver components in three axes all at once, we’re going to nest multiple differential correctors to quickly “walk into” our solution.

Build First Differential Corrector

  1. Select the Target Approach target sequence in the MCS.
  2. By default there will be one Differential Corrector profile in the target sequence’s properties panel. Rename the existing Differential Corrector Target InTrack.
  3. Open the properties of the “Target InTrack” differential corrector.
  4. In this first profile, we’re only going to solve for the InTrack maneuver component. For the Y Maneuver component perform the following:
    • Enable the Use option.
    • Set the Perturbation to 1 m/sec.
    • Set the Max Step to 10 m/sec.
    • Setting the Perturbation and Max Step sizes appropriately for your differential corrector is an important step. If set too large or too small, it can prevent the differential corrector from converging on a solution. It is important to think through the magnitude of the changes required for each control parameter in the differential corrector, and to set these fields accordingly.

  5. As an equality constraint, we want to achieve a relative InTrack position. For the InTrack result, perform the following:
    • Enable the Use option.
    • Set the desired value to be 1 km.
    • Set the Tolerance to 0.001 km.
  6. Click the Convergence Tab at the top of the dialog.
  7. In the Convergence Criteria drop box, select the following:
  8. Click OK.
  9. Save your scenario.

Build Second Differential Corrector

  1. In the target sequence’s properties panel, click the copy button ( ) to copy the differential corrector. Click the paste button ( ) to paste a copy.
  2. Rename the Copy Target Radial & InTrack.
  3. Open the properties of the new differential corrector.
  4. In this differential corrector, we will use the solution previously determined for the Y maneuver component, while also solving for the Radial or X maneuver component.

  5. Make sure the Y Maneuver component is still enabled.
  6. For the X Maneuver component perform the following:
    • Enable the Use option.
    • Set the Perturbation to 1 m/sec.
    • Set the Max Step to 10 m/sec.
  7. Make sure the InTrack result is still enabled.
  8. We need to add the relative radial position as an equality constraint. For the Radial result, perform the following:
    • Enable the Use option.
    • Set the Tolerance to 0.001 km.
  9. In the Scaling Method drop-down box, choose By Tolerance.
  10. Click OK.

Build Third Differential Corrector

  1. In the target sequence’s properties panel, click the copy button ( ) to copy the differential corrector. Click the paste button ( ) to paste a copy.
  2. Rename the Copy Target RIC
  3. Open the properties of the new differential corrector.
  4. In this differential corrector, we will use the solution previously determined for the X and Y maneuver components, while also solving for the Cross-Track or Z maneuver component.

  5. For the X, Y, and Z Maneuver component perform the following:
    • Enable the Use option.
    • Set the Perturbation to 1 m/sec.
    • Set the Max Step to 10 m/sec.
  6. Make sure the Radial and InTrack results are enabled.
  7. We need to add the relative cross-track position as an equality constraint. For the CrossTrack result, perform the following:
    • Enable the Use option.
    • Set the Tolerance to 0.001 km.
  8. In the Scaling Method drop-down box, choose By Tolerance.
  9. Click OK.
  10. Save your scenario.

Solve for the Control Parameters

  1. Set the Action to Run Active Profiles. This informs the target sequence to run the profile and solve for the control parameters to meet the desired results.
  2. Run () Astrogator to solve for the solution. The sequence should converge. If it does not converge, try adjusting the duration of the Drift propagate segment.
  3. Right Click on Open the 3D Graphics window and zoom to RPO_Sat. Orient your view so you can see the orbit Astrogator created so far. Notice how RPO_Sat has initiated its transfer to Target_Sat.
  4. Zoom in on Target_Sat. Notice how the orbital trace for RPO_Sat stops 1km away from it, on the VBar or In-track direction relative to Target_Sat.

Target a Maneuver to Circumnavigate the Target Sequence

We’ve successfully targeted a maneuver to transfer RPO_Sat from it’s initial position 30 degrees away in True Anomaly from Target_Sat, to a position 1km away from Target_Sat on Target_Sat’s VBar. We now need to compute the maneuver required to initiate the relative orbit to circumnavigate Target_Sat in a stable manner.

  1. Add a 2nd Target Sequence to the end of the MCS. Insert a maneuver segment and it ”Target_NMC.”

You will do a three (3) axis burn to circumnavigate the target. Since you will be starting your circumnavigation relative orbit on Target_Sat’s VBar, it is primarily a radial maneuver required to formulate the orbit. But there are specific conditions that need to be met in order to achieve the natural motion circumnav. The primary condition being that the orbital periods of RPO_Sat and Target_Sat are matched.

  1. Insert a Maneuver Segment inside the Target Sequence, and name it “Burn2”.
  2. Change the Attitude Control option to Thrust Vector.
  3. Click the ellipses next to thrust axes. Ensure that All STK Objects is selected in the filter drop-down, and select RPO_Sat as the object. Select the RIC axes on the right side as the thrust axes.
  4. Set the X, Y, and Z values to 0.0 m/sec.
  5. Click the targets beside the X, Y, and Z values. They should become checked ( ). These values serve as the initial guesses for the target sequence to use for the maneuver components.

Set the Goals of the Target Sequence to Achieve Relative Orbital Parameters

  1. Select the Burn2 segment in the Mission Control Sequence (MCS) Browser.
  2. With Burn2 selected, click the Results button.
  3. Expand () the Formation Components directory.
  4. Move () Rel Mean SemiMajorAxis to the Selected Components field.
  5. Adding this value to the differential corrector will ensure we achieve a relative orbit where the orbital period is matched with Target_Sat’s.

  6. Expand () the Relative Motion Components directory.
  7. Move () CrossTrackRate to the Selected Components field.
  8. Adding this value to the differential corrector will ensure we achieve a relative orbit that is completely in-plane with Target_Sat.

  9. Click OK.

Add a New Propagate Segment After the Maneuver

  1. Add a new Propagate () segment after the Maneuver () in the second Target Sequence ().
  2. Rename the Propagate segment to Prop2PlaneCross.
  3. We want Burn2 to generate delta V that will propagate RPO_Sat to the negative VBar or -Y side of Target_Sat. That is essentially a position where RPO_Sat is crossing the YZ Plane of Target_Sat where the YZ plane represents the In-Track/Cross-Track plane of Target_Sat.

  4. Add a new stopping condition of type Y-Z Plane Cross.
  5. We want Burn2 to generate delta V that will propagate RPO_Sat to the negative VBar or -Y side of Target_Sat. That is essentially a position where RPO_Sat is crossing the YZ Plane of Target_Sat where the YZ plane represents the In-Track/Cross-Track plane of Target_Sat in the stopping condition’s properties.

  6. Change the Coordinate System from Earth Inertial by clicking on the ellipses button, selecting Target_Sat in the object list, and then the RIC coordinate system on the right.
  7. Delete the Duration stopping condition.
  8. Set the Criterion to Cross Decreasing.
  9. Click the Results button beneath the MCS for the Prop2PlaneCros segment.
  10. We want to achieve a symmetrical relative position on the negative VBar of Target_Sat from where RPO_Sat is currently. We are currently 1km in the positive VBar. So we want to add a relative position component as the result.

  11. Open the Relative Motion folder in the component list, and double click InTrack to add it as an equality constraint.
  12. Change the color of the Propagate segment.

Set the Properties of the Differential Corrector

Similar to the first Target Sequence, we’re going to set up the second Target Sequence to walk into a circumnav relative orbit is a stepwise fashion. To do this, we will use three nested differential correctors.

Build First Differential Corrector

  1. Select the Target NMC target sequence in the MCS.
  2. By default there will be one Differential Corrector profile in the target sequence’s properties panel. Rename the existing Differential Corrector Target Radial and InTrack.
  3. In natural motion relative orbits, the radial and in-track components are intrinsically linked. This can easily be determined by the LTT transformation of the Clohessy-Wiltshire equations. For that reason, it makes sense to solve for the relative radial and in-track components in the same differential corrector.

  4. Open the properties of the “Target Radial and InTrack” differential corrector.
  5. In this first profile, we’re going to solve for the Radial and InTrack maneuver components for the NMC. For the X and Y maneuver components perform the following:
    • Enable the Use option.
    • Set the Perturbation to 0.1 m/sec.
    • Ensure the Max Step Size is set to 10 m/sec

  6. Since we are varying the Radial and InTrack Delta V, we need to add the Relative Semimajor Axis and relative InTrack position as an equality constraints. For the Rel_Mean_Semimajor_Axis result, perform the following:
    • Enable the Use option.
    • Set the desired value to 0 km.
    • Set the Tolerance to 1e-5 km.
  7. For the InTrack result, perform the following:
    • Enable the Use option.
    • Set the desired value to -1 km.
    • Set the Tolerance to 0.001 km.

    This will ensure that the maneuver is computed to place RPO_Sat 1km on the other side of Target_Sat when crossing the YZ Plane.

  8. In the Scaling Method drop-down box, choose By Tolerance.
  9. In the Convergence Criteria drop box, select the following:
  10. Click OK.
  11. Save your scenario.

Build Second Differential Corrector

  1. In the target sequence’s properties panel, click the copy button( ) to copy the differential corrector. Click the paste button ( )to paste the copy.
  2. Rename the copy Target CrossTrack Rate.
  3. Open the properties of the new differential corrector.
  4. In this differential corrector, we will only solve for the cross-track component of the circumnav ellipse. The LTT equations tell us the cross-track component of natural motion ellipses are de-coupled from the radial and in-track components. So solving for it by itself makes sense.

  5. Deselect both the X & Y maneuver control parameters.
  6. In this profile, since we’re only going to solve for the cross-track maneuver component for the NMC, we need to perform the following for the Z maneuver control parameter:
    • Enable the Use option.
    • Set the Perturbation to 0.1 m/sec.
    • Set the Max Step to 10 m/sec.
  7. Deselect both the Rel_Mean_Semimajor_Axis and InTrack results.
  8. Since we are varying the cross-track delta V, we need to add the CrossTrackRate as an equality constraint. For the CrossTrackRate result, perform the following:
    • Enable the Use option.
    • Set the desired value to 0 km/sec.
    • Set the Tolerance to 1e-6 km/sec.
  9. Click OK 
  10. Save your scenario.

Build Third Differential Corrector

  1. In the target sequence’s properties panel, click the copy button ( ) to copy the differential corrector. Click the paste button ( ) to paste a copy.
  2. Rename the Copy Target RI and CrossTrack Rate
  3. Open the properties of the new differential corrector.
  4. In this differential corrector, we will use the solutions previously determined for the X, Y, and Z maneuver components, and further refine them in a single differential corrector.

  5. For the X, Y, and Z Maneuver components perform the following:
    • Enable the Use option.
    • Ensure the Perturbation is set to 0.1 m/sec.
    • Ensure the Max Step is set to 10 m/sec.
  6. We need to add all three equality constraints. For the Rel_Mean_Semimajor_Axis, InTrack, and CrossTrack results, perform the following:
    • Enable the Use option.
    • Ensure the CrossTrackRate Tolerance is set to 1e-6km/sec.
    • Ensure the Rel_Mean_Semimajor_Axis Tolerance is set to 1e-5km/sec.
    • Ensure the InTrack Tolerance is set to 0.001km.
  7. In the Scaling Method drop-down box, choose By Tolerance.
  8. Click OK.
  9. Save your scenario.

Propagate the Natural Motion Circumnav for 12 Hours

  1. After the Target NMC target sequence, add a propagate segment and name it NMC.
  2. Set the trip value for the duration stopping condition to be 12 hours.
  3. Your MCS should look like this:

Solve for the Control Parameters

  1. For the Target NMC target sequence, set the Action to Run Active Profiles. This informs the target sequence to run the profile and solve for the control parameters to meet the desired results.
  2. Run () Astrogator to solve for the solution.
  3. Clear () the graphics.

Evaluate the Maneuvers Performed

Take a look at the differential correct window for the second target sequence (Target NMC) where we targeted the Radial, InTrack, and CrossTrack Rate (Target.NMC.Target RI & CrossTrackRate). It will show you the Delta V magnitude for each maneuver axis of the satellite.

At first glance, the large In-track (Y) maneuver component makes sense. We arrived on Target_Sat’s VBar, and needed to perform an in-track maneuver to move to the negative VBar. What may not make sense is the larger radial (X) maneuver component. What is the reason for this?

Let’s generate a Maneuver Summary report to get a feel for the total delta V required for this maneuver. You can do this two ways.

  1. Right-click Burn2 in the MCS.
  2. Select Summary... You can also click the Summary () button.
  3. Notice the delta V magnitude reported:

  4. You can also right-click on RPO_Sat in the Object Browser.
  5. Select the Report & Graph Manager ().
  6. Expand () the Installed Styles directory.
  7. Generate a Maneuver Summary report.

Take a moment to evaluate the total delta V reported. 81.195 m/sec for Burn2.

Remember that the resulting magnitude of the maneuver vector is computed using the root of the sum of the squares (RSS). So.

It’s worth asking again “why is the radial maneuver required?” What if there was little or no radial component in the maneuver?

The tiny cross-track component wouldn’t even register, and you’d be left with just the expected in-track component.

To understand the reason for the radial component, you need to go back to Burn1, the rendezvous maneuver.

Look at the differential corrector results for the first target sequence (Target Approach).

Notice it too has a large radial component of -84.588 m/sec required to perform the maneuver. Remember, RPO_Sat had the same orbital parameters as Target_Sat, but was offset in True Anomaly by 30 degs. In many ways, we would say RPO_Sat was “coplanar” with Target_Sat, with matched inclinations and the same altitude. So why the radial component required?

It goes back to the caveat at the beginning of this lesson. This rendezvous was not optimal.

Effects of Osculating Elements and HPOP

Both Target_Sat and RPO_Sat were propagated in Astrogator using the High Precision Orbit Propagator (HPOP) using osculating elements. What are osculating elements? “Osculating elements are the true time-varying orbital elements, and they include all periodic (long- and short- periodic) and secular effects. They represent the high-precision trajectory and are useful for highly accurate simulations” (Vallado 616; 9.2).

“Osculating elements are the true time-varying orbital elements, and they include all periodic (long- and short- periodic) and secular effects. They represent the high-precision trajectory and are useful for highly accurate simulations” (Vallado 616; 9.2).

If the satellites had been propagated using a two-body propagator, without osculating elements, the cross-track component would dissapear. It just would not have been realistic.

For computing and planning rendezvous using full-force models and osculating elements, choosing optimal departure and arrival times to minimize the differences in orbital periods and other elements is critical. Careful consideration of those time could have minimized the need for much of the radial maneuver component during the rendezvous, and ultimately to maintain the in-track NMC.

Visualize the Osculating Elements

Create an RIC Plot for Target_Sat and RPO_Sat:

  1. In the object browser, right click on Target_Sat and select Report and Graph Manager.
  2. Expand the Installed Styles on the right side, and locate and double-click the RIC graph style.
  3. In the dialog that pops up, select RPO_Sat and click assign.

Here we see the RIC plot for Target_Sat to RPO_Sat. It clearly shows the point in time when the rendezvous maneuver takes place, the transfer to RPO_Sat, and when RPO_Sat begins its proximity operations (where the RIC plots converge. Range is drawn on the secondary Y axis.

  1. Select the zoom tool, and lasso the cross-range plot line from the beginning of the graph to the point when the rendezvous happens.
  2. Keep zooming in in this manner until you can see the initial maneuver (Burn1) effect the cross-track component.

Notice the initial drift in cross-track during the 600sec propagation segment, then the large oscillation that takes place when Burn1 occurs (vertical black line).

The maneuver took place when the relative difference in the cross-track components of Target_Sat and RPO_Sat were not zero. Additionally, we can see that the cross-track component moved by over a kilometer when we initiated the transfer. We needed to raise RPO_Sat’s orbit to drift over to Target_Sat, and it turns out that the rate at which Inclination and RAAN vary, are very sensitive to altitude. So during the transfer, the planes of the two satellites were moving differently and at different rates.

Additionally, to minimize the radial components of the maneuvers and the overall delta V required, careful consideration of the timing of the maneuvers needed to be applied. This can partly be visualized by plotting an altitude plot of RPO_Sat.

Generate an Altitude Plot

  1. Right-click on RPO_Sat () in the Object Browser and select Report & Graph Manager ().
  2. Create a new graph style (), and name it Altitude.
  3. Expand () the Astrogator Values>Geodetic Folder and double click the Altitude data provider.
  4. Click OK.
  5. Click Generate.

Notice the drastic change in altitude early in RPO_Sat’s ephemeris when it enters the transfer to Target_Sat. Also notice the how there is a jog in the altitude as RPO_Sat enters the NMC around Target_Sat.

These redirections manifest as radial components, and are indicative of sub-optimal departure and arrival times.

A more robust solution incorporating an optimization target profile like IPOPT or SNOPT, to determine the optimal times to initiate the transfer and the drift duration can be implemented.

Enter Near-Optimal Departure and Drift Times

To demonstrate the effect of more-optimal departure and arrival times, enter the following propagations times and re-run the MCS.

  1. For the initial propagate segment, enter 0 sec for the trip time.
  2. For the Drift propagate segment, enter 34325 sec for the trip time.
  3. Re-run the MCS.
  4. How does the total Delta V required compare?

Lastly, a further step of incorporating a minimum delta V Lambert solution into Astrogator via the scripting interface to seed an optimal two-body transfer solution, will greatly increase the efficiency of the transfer and proximity operations maneuvers. Though not necessary, this “semi-analytic” approach of combining analytic solutions from Lambert with the numerical solutions of Astrogator’s search profiles, can be quite successful.

To better understand how our engineers calculated these durations or to use Astrogrator’s built in optimizers to find optimal RPO orbits, try out the follow-on tutorial “Optimal LEO Rendezvous and Proximity Operations.”