With STK 9 just about wrapped up, I have time to talk about some of the new features added to the STK Object Model. I'll be focusing today on one of the major pieces that was added, Astrogator. For those who aren't too familiar with Astrogator, it is a specialized analysis module for interactive orbit maneuver and spacecraft trajectory design. Astrogator acts as one of the propagators available for a satellite object. This module calculates the satellite's ephemeris by executing a Mission Control Sequence, or MCS, that you define according to the requirements of your mission. By exposing it through the STK Object Model you now have more options for automating repetitive tasks, integrating with other applications or even developing your own custom application.
Following are a few of the many highlights of the Astrogator Object Model.
All the interfaces, methods and properties have been fully documented.
Included in the documentation are high level diagrams that show how the interfaces are interconnected. I'd recommend taking a look at these diagrams because they can be very important to get a visual picture of the overall architecture.
Support for multiple languages
The Astrogator Object Model can be used in environments supporting COM automation. Available environments include .Net (Visual Basic©, Visual C#©, etc.), Java, Visual C++, PowerPoint, Excel, Access, and scripting languages supporting COM late binding.
With languages like C# and Java you have the added benefit of intellisense to make your productivity soar
If you notice, all of the interfaces have been prefixed with IAgVA(Vehicle Astrogator) to help find Astrogator specific functionality and all enumerations have been prefixed with AgEVA.
Consistency with STK Object Model and the previous Astrogator automation.
var leader = stk.Scenario(0).Satellite(0).GetAstrogatorDefn();
var leaderProp = leader.GetSegmentByName("Propagate");
var inTrack = leaderProp.GetResultValue("InTrack");
The new way is pretty similar(in C#).
IAgSatellite leaderSat = Application.CurrentScenario.Children["leader"] as IAgSatellite;
IAgVADriverMCS leader = leaderSat.Propagator as IAgVADriverMCS;
AgVAMCSPropagate leaderProp = leaderDriver.MainSequence["Propagate"] as AgVAMCSPropagate;
double inTrack = (double)leaderProp.GetResultValue("InTrack");
The STK Object Model uses what we call UnitPreferences that allows the user to input or output data in a particular unit type. The Astrogator Object Model uses the same UnitPreferences to make functionality consistent across the board. If you're used to coding using the STK Object Model, you'll be able to jump right in and start coding without a learning curve. Even if you aren't too familiar, we have a lot of tutorials for both the STK Object Model and Astrogator Object Model to get you up to speed fast.
To finish out, I took an excellent article “Simultaneous” propagation with Astrogator and rewrote it using C# and the new Astrogator Object Model exposed in STK 9. To run the attached project, you'll need to start up STK and load the scenario attached to the blog. Two things to note. the script in their attached zip file used meters for distance quantities so the UnitPreferences in my application had to be changed from the default kilometers to meters. The second thing to note is that the code is pretty similar and the end result looks pretty sweet.
With intellisense, great documentation and a small learning curve, you'll find youself mastering interactive orbit maneuvers in no time at all! Enjoy!
To view the project click here.