An RPO Simulator, with Help from Python and Tkinter

Rendezvous and proximity operations (RPO) is the process of bringing satellites close together for activities such as docking, refueling, intercepting communications, and more. Planning a maneuver sequence for a single satellite is complex enough, but RPO requires coordinating the orbital states of multiple vehicles simultaneously. Combine this with the typical uncertainties associated with satellite positioning and you have an extremely challenging task.

For people new to satellite operations, RPO can be difficult to learn due to the non-intuitive nature of orbital dynamics. For example, when an interceptor is behind a target (commonly referred to as a negative in-track component), one might think that the interceptor should increase its speed to “catch up” to the other satellite. However, that would have the opposite effect by increasing the orbit altitude, slowing the orbit period and putting the interceptor even further away. Counterintuitive aspects like the one illustrated in that example make it difficult to teach RPO fundamentals to students and new satellite operators. Not only that, there are also very few tools available in the industry to plan and optimize these types of maneuvers, especially in relation to other vehicles.

Throughout my six-week research opportunity with AGI, I explored this problem and developed a solution in the form of an RPO simulator for Systems Tool Kit (STK). It’s a work in progress, but it shows STK’s scripting versatility.

The RPO simulator is a Python script that uses STK’s object model and Astrogator capability to make a game-like simulator for two teams. One team controls an interceptor and the other controls a constellation of satellites trying to avoid the interceptor. Each team takes turns submitting orders to their satellite and time progresses in 12-hour increments. Right now, maneuvers are limited to a few Astrogator RPO sequences, but we intend to add more sequences soon.

In addition to a simulator, the program can be a single person mission planner. It is simple, easy to use, and quick, taking only a few minutes to go from nothing to a fully functional mission plan. You can also adjust the plan at any moment in the mission, even during a maneuver. Even if you don’t use it for an actual mission, you can use it as a sandbox to generate new ideas and test different maneuvers.

The tools used to create the simulator—Astrogator, Python, and Tkinter—are easy to learn and implement. You should first learn how to use Astrogator and basic STK-Python integration before implementing these tools into your own project. The STK Help is a great resource with many tutorials for all kinds of missions, including Astrogator (and this one on RPO), Python integration, and much more. The STK Programming Help contains essential information for integrating STK with any language. Tkinter is a Python-specific graphical user interface (GUI) creator that is useful when making your own tool. It’s easy to learn and you can find tutorials on YouTube. There are also many YouTube videos on STK’s RPO sequences that go more in-depth than this simulator and are worth the look if you do a lot with Astrogator. Finally, the link to the simulator is posted here—feel free to edit it or use it as a reference. Thanks for reading!


Systems Tool Kit (STK)

Modeling and simulation software for digital mission engineering and systems analysis.


Design high-fidelity spacecraft trajectories for mission planning and operations.