260 likes | 550 Views
ORBITAL. Orbital Simulation and Telemetric Data Collection Software. Developed By: Aaron M. Rosenfeld. Specifications. ORBITAL accurately simulates space flight of one spacecraft around a single planet.
E N D
ORBITAL Orbital Simulation and Telemetric Data Collection Software Developed By: Aaron M. Rosenfeld
Specifications • ORBITAL accurately simulates space flight of one spacecraft around a single planet. • Displays a 2D view port of space which can be centered on different objects or be freely moved. • Collects telemetry data which can be displayed as graphs in real time or post-simulation.
Autonomous Guidance • ORBITAL currently supports only orbit-stabilization guidance. It can autonomously maintain LEO (Low Earth Orbit) and GEO (Geosynchronous Earth Orbit). • In the future, ORBITAL will be able to complete more advanced orbital maneuvers such as Hohmann transfer orbits, direct transfer orbits, and “sling-shot” orbits around a planet.
Firing System • To accurately portray real-world manual guidance systems, a simple firing system was used. • User selects a length of time to fire the engine (currently only max thrust). • User can manually ignite the engine or set a pre-defined position to do so. These positions can be an angle with respect to the planet, a distance threshold, or at an apogee or perigee.
Firing System Example • The following demonstrates a very basic course correction to take a spacecraft from LEO to an orbit of just under 8,000 km. • The firing system was set to fire at full thrust for 100 seconds at the next occurring apogee.
Firing System Example 2 • This example shows how one can use ORBITAL’s firing system to cause a spacecraft to re-enter the Earth’s atmosphere. • Only one burn was used here in a retrograde orientation (the spacecraft is facing the opposite direction of travel) which slows the spacecraft, allowing it to descend.
Geosynchronous Orbit Stabilization • The following is a demonstration of the Geosynchronous Orbit Stabilization system (GeoSync) included with ORBITAL. • No manual course corrections were made and time acceleration error was negligible (under .4%).
To Do • For Users • Add UI for intitial settings. • User-defined spacecraft setting such as weight, fuel, etc. • User-defined planet specifics such as radius, mass, etc. • Make orbital maneuvers (LEO, GEO) buttons configure burn(s) to get the spacecraft into that orbit. • Allow more than one planet. This will require a complete re-working of the software's computational methodology so it may not be soon. • Add units for user-defined graphs. • For Developers • Complete re-orgazination of RenderFrame class structure. File is horribly messy. • Create 'System' class for ship/planet. • Create 'UI' class for all UI elements and functionality. • Create 'InputController' class to handle all user input via mouse, keyboard, etc. • Find a better method of UIElement.Button invocation and boolean checking (Pointers?). • Possibly create a math class of some sort to deal with all the distance, drag, and trajectory calculations.
Time Acceleration Computations • If time is accelerated, acceleration, velocity, and position cannot be computed at every single moment in time. • Cannot simply evaluate these vectors at the few moments the time acceleration allows. Error would be too great. • Utilized a method called “Dynamic State Vector Propagation” developed by Martin Schwieger, PhD. • Assumes a quadratic interpolation of vectors between all known times. • Integration of the acceleration vectors between tn and tn+1 gives us an estimated velocity which is then used to determine position. • Error low enough to allow up to 1.0 x 103 time acceleration in LEO which is does not actually have a quadratic interpolation. • Proof will be available on the ORBITAL website very soon.
Technical Data • Full program is about 3,000 lines of code. • Completely coded in C# .NET with no “unsafe” code blocks (i.e. no direct memory management). • Extensive use of delegates to pass data between forms without needing pointers and unsafe code. • Client was originally a stand alone render screen that has just recently been added to the new full MDI system. • Full optimization benchmark completed.
Technical Data (con’t.) • Telemetry Data • All telemetry data is stored even if it is not being used in a real-time graph. • Allows for later retrieval or mid-simulation display. • All data stored in packets (struct ShipDataPacket) that allow for very quick extraction of data. • Future • Allow for statistical analysis of graphs (regression, min, max, mean, standard deviation, etc) • Allow users to add markers to the graphs (horizontal or vertical reference lines).
Optimization Findings • After benchmarking the following changes were made: • All foreach loops were changed to forloops which resulted in a Log(N) decrease in runtime. • All non-inherited classes were changed to sealed improving runtime by allowing all virtual methods to be treated as finally declared. • String modification in frequent methods were concatenation with the StringBuilder class instead of + contamination, decreasing runtime by a factor of 14. • The repaint method was changed from a self-invoke to a System.Threading.Timer invoked event relieving nearly 32% of processor usage.
Contact • Aaron Rosenfeld • E-Mail: aaron.rosenfeld@drexel.edu