KSP Trajectory Optimization Tool v1.6.0
As of v1.5.9, KSPTOT requires the use of the MATLAB Compiler Runtime R2017b! If you are upgrading from a version older than v1.5.9, please download the new MCR below!
The KSP Trajectory Optimization Tool (KSP TOT) is a piece of MATLAB-based software I've written to help plan and execute space missions. It's functions are many:
Using a Lambert solver, generate "porkchop plots" that assist with determining proper departure and arrival times of interplanetary transfer orbits.
Using the data in (1), determine an optimal hyperbolic departure orbit and compute the burn magnitude and direction (that is, the delta-v vector) as well as the burn location in the initial orbit about the departure planet.
Compute optimal planetary flybys to cheaply get to those hard-to-reach destinations (Moho, Eeloo, etc).
Generate delta-v optimal rendevzous maneuvers to another spacecraft.
Find the optimal two-burn orbit change maneuvers to adjust your orbit cheaply!
Fully sequence a mission from start to finish, including coasts, burns, aerobraking, and more.
This thread is a continuation of a related thread over in the add-on dev forum.
Download & Installation Instructions
To install and run KSP TOT, do the following:
Download the Windows 64-bit 2017b MATLAB Compiler Runtime (MCR).
Install the MCR package on your computer. You may need to restart your PC after installing in order to use KSPTOT.
Download the KSP TOT package. (Push download button in upper right corner.)
Unzip the KSP TOT package to a directory of your choosing.
Copy the KSPTOTConnect folder to your KSP Gamedata folder.
Run the KSPTOT application.
To update from a previous version, just repeat steps 3-5. There is no need to re-download the MCR.
Mac Users: Follow these instructions instead. (Current Mac Version: KSP TOT v1.1.7)
Download the Mac 64-bit 2013a MATLAB Compiler Runtime (MCR).
Install the MCR package on your computer. You may need to restart your PC after installing in order to use KSPTOT.
Download the KSP TOT package. (Push download button in upper right corner.)
Unzip the KSP TOT package to a directory of your choosing.
Copy the KSPTOTConnect folder to your KSP Gamedata folder.
Run the KSPTOT application.
To update from a previous version, just repeat steps 3-6. There is no need to re-download the MCR.
Bk2w is building and maintaining the Mac versions. If you have technical issues with installing or running the application, please see him for questions.
Buy Me a Coffee
KSP Trajectory Optimization Tool has always been free, is free today, and will always be free to download and use. It is one of my most enjoyable hobbies and I consider it my gift to the KSP Community and developers for providing me with many hours of enjoyment. Over the years, though, a number of individuals have asked about donations as a way to say "thank you" for the hundreds (or even thousands) of hours that have gone into the development of KSPTOT. For those who wish to do so, I have a Ko-Fi account that makes just that possible.
To use, just click the "Buy Me a Coffee" button. You'll be taken to a page where you can enter an amount (in units of $3), a message, and make it public or private.
As a disclaimer, such donations don't imply any agreement for me to provide you with goods or services. (You already have the software! ) They are merely another way for you to say "Thank You" and are completely optional and voluntary.
NOTE: I've put together a tutorial on how to use KSP TOT for a basic Kerbin-Duna flight. See this post here for the tutorial.
Running on Linux
It has been suggested that it is possible to run the Windows version of KSPTOT on Linux using WINE. Here are the steps. I have not tried them personally, so you follow them at your own risk.
Source code for KSPTOT itself is available on Github at the following location: KSPTOT Github
Found a Bug or Issue?
Please file a bug report here.
Q: I don't have MATLAB! Can I still use KSP TOT?
A: Yes! MATLAB is not required to use KSP TOT, only the MATLAB Compiler Runtime, which is freely available at the link I provide above in the download instructions.
Q: I use Real Solar System / Kopernicus / Outer Planets Mod /etc. Can I use KSP TOT with it?
A: Yes! To do so, you'll need to create a bodies.ini file with the information of the new planets included. Simply install the KSPTOTConnect plugin into your KSP / Gamedata folder, start KSP, get into the flight scene (where you can see your spacecraft in space, for example), and then open KSP TOT. Use the File -> Create New Bodies File From KSP and follow the instructions. Then load the file you create with File -> Load Bodies From File. All done! While you'll only need to create the bodies file once, you have to load it each time KSP TOT starts to use it.
Q: Do I really have to enter dates and times in seconds? That sounds awful.
A: Nope! Right click on any time field, select "Enter UT as Date/Time", and fill in the year/day/hour/minute/second in the box that comes up. That's all there is to it!
Q: I'm having problems running KSP TOT. The program doesn't run and just turns into a temp file when I double click it. What is going on?
A: Check to see if your anti-virus software is interfering. Provide an exception for the KSP TOT executable if you need to. Avast has been known to cause problems.
Q: I can't get the KSP TOT real time system or maneuver node upload to connect. What can I do?
A: Check the following conditions: KSP must be running in a windowed mode, you must be in the flight scene (not tracking station or space center scene, but the scene where you can fly your vessel), and you must have a firewall exception for KSP. If these are all true and you're still having problems, let me know.
Q: Mission Architect is hard! How do I use it?
A: First, check out the PDF tutorial packaged with the KSP TOT download. If you still have questions after (or while) going through that, please post the questions in this thread and I'll get back to you as soon as I can.
[*]Initial public release.
[*]Added departure information screen.
[*]Added ability to input time (UT) as a date/time by right-clicking on those text boxes
[*]Included basic computational options, accessible from Edit->Options,
[*]Dixed a bug where datatips on the main porkchop plot would not always display estimated delta-v,
[*]Added a custom display for datatips on the porkchop plot,
[*]Added time past periapse to the burn information on the departure display GUI.
[*]Fixed bug where departure calculation window would not refocus after selecting departure/arrival times from porkchop plot.
[*]In departure calculation input GUI, added ability to right-click on arrival time input and select option to optimize that time based on what's in the departure time box.
[*]Added application-wide input checking.
[*]Added ability to optimize departure for given arrival date in Departure Calc window.
[*]Added ability to find earliest arrival date based on maximum allowable delta-v.
[*]When generating a porkchop plot, data cursor now appears at the optimal location.
[*]Apse markers have been added to the transfer orbit display in the departure information window.
[*]A "global optimum" method has been written and runs after generating a porkchop plot, but it currently doesn't output anything anywhere. I'm still working on what to do with it.
[*]Added new bodies to the application's database. Corrected existing information where needed.
[*]Lots and lots of bug fixes.
[*]Lone Wolfling's "minimize arrival time" with variable departure time optimizer;
[*]The ability to input arithmetic statements (2+2 for example) into numeric text boxes and have them evaluate (so if you enter 2+2, the box changes to read 4)
[*]"Optimize Departure for Input Arrival" now uses the input departure time as a lower bound. Useful for when you're in the middle of a game and you clearly can't go back in time to find that "better" solution.
[*]Some bug fixes and tweaks under the hood.
[*]A[B] Flyby Maneuver Sequencer[/B](FMS)that is capable of searching for optimal flybys (gravity assist maneuvers) around planets. Spending too much fuel on that trip to Moho? Try a flyby around Eve first!
[*]Optimal launch/arrival date is now the default setting in the Compute Departure GUI.
[*]"Time To Periapse" is now shown alongside "Time After Periapse" in the DV Maneuver Information boxes in the Departure Information GUI and the FMS GUI. Useful for using maneuver node editors mostly.
[*]Some minor visual changes/tweaks to the plots.
[*]Some bug fixes and a code reoganization on the back-end.
[*]A[B] two-burn optimal orbit change planner[/B]. This allows you to change your current orbit from any one given orbit to another with two engine firings. Very useful for adjusting your inbound hyperbolic orbit to set up that ideal Kethane scanning orbit.
[*]The ability to port in orbits from SFS files. Right click an orbit panel, hit the appropriate menu item, select the SFS file, and go! Eliminates the need to hand-enter orbits from MechJeb displays or whatnot.
[*]The addition of the orbital period to some output data.
[*]The Compute Departure Burn GUI now accepts hyperbolic orbits. (I've left the wording on Elliptical in there for now until I'm satisfied that it works just as well with hyperbolic as well as elliptical orbits.)
[*]Various minor bug fixes and tweaks.
[*]Changes to the departure calculation code and the flyby maneuver sequencer in order to[B] better determine burn times and true anomalies[/B] when provided with an orbit epoch and mean anomaly at that epoch.
[*]Right-clicking on the porkchop plot will now bring up a context menu that will allow you to recenter the plot on a particular point on the graph.
[*]A few minor bug fixes and tweaks.
[*]New application: [B]Maneuver Execution Assistant[/B]. This helps pilots properly time the start of burns to center the delta-v across the maneuver node.
[*]New application: [B]Rendezvous Maneuver Sequencer[/B]. Useful for meeting up with other craft in orbit, as well as moons.
[*]KSP TOT can now[B] ingest custom celestial bodies files [/B]and parse them. Useful for doing stuff in other solar systems you define.
[*]Added some tooltips to input fields.
[*]Bug fix: Fixed issue where GUI elements could become distorted and/or shift position
[*]Bug fix: Fixed issue with code that converts r/v vectors to keplerian elements: now handles 0 eccentricity and inclination much better
[*]Bug fix: Code now remembers where last opened SFS file was retrieved from.
[*]Bug fix: Optimization runs now include some scaling of constrains and the objective function.
[*]Lots of backend changes to support the above.
[*]New application: [B]KSPTOT Mission Control Center. [/B]Connects to KSPTOT using the new KSPTOT Connect plugin (see below). Offers users on different PCs the ability to act as mission controllers by providing console screens with subsystem data on them.
[*]Console pages available in the MCC:
[*]ACS/Dynamics (attitude control and pointing)
[*]New plugin: [B]KSPTOT Connect[/B]. Allows users to connect KSPTOT to KSP (running on the same PC) to perform various tasks:
[*]Grab the orbit and game UT from straight from KSP!
[*]Upload maneuver nodes from the various applications!
[*]Place in your GameData directory in your KSP directory.
[*]A handful of minor fixes on the KSP TOT side.
[*]Importing orbits from SFS now works for 0.23.
[*]Some other fixes
[*]Bug fix: Plots in the flyby maneuver sequencer should render correctly now. Before, an error was thrown fairly consistently.
[*]Bug fix: Plotting in the Compute Departure window has been corrected. Before only the red dv vector was shown.
[*]Bug fix: Uploading a maneuver to a ship in KSP is now restricted to localhost.
[*]Bug fix: The remaining plot rendering issues should be resolved.
[*]New Application: [B]KSP TOT Mission Architect[/B]
[*]Allows for the planning of complete missions from Kerbin injection orbit to anywhere in the solar system.
[*]Plan ballistic trajectories, gravity assist maneuvers, injection orbits and more using the same basic orbital mechanics and patched conics system that KSP uses! No more infinitesimal sphere of influence approximations to ruin your burn planning.
[*]Tracks spacecraft mass and fuel usage so you ensure you always have enough fuel to return to Kerbin.
[*]Built in mission optimizer can goal seek to target celestial bodies, minimize fuel usage, or hit inclination/eccentricity targets -- all optimally.
[*]Full orbit visualization means that you'll know precisely where you're going and how you're going to get there.
[*]Mission state log provides the complete spacecraft state at effectively any point along the mission, from initial get-go to the final injection burn.
[*]Improvements to the astrodynamics code:
[*]Orbit propagation code has been vectorized to allow for faster execution.
[*]Orbit RV/Keplerian conversion has been vectorized for MUCH faster execution. Code is also far more robust!
[*]Improvements/fixes to the rendezvous application.
[*]Other minor fixes/improvements too small to note here.
[*]Fixed issue with vectorized kepler solver;
[*]Added lower periapse warning and low propellant warnings;
[*]Added zoom slider to orbit display;
[*]Updated colormaps for bodies in bodies.ini:
[*]Added an unsaved work check upon closing MA;
[*]Fixed bug with the Advance Script To Selected Event function;
[*]Added scroll bar to Alerts/Warnings box;
[*]Fixed rare display issue with Mission Optimizer;
[*]Numeric constraints may now have an associated reference body;
[*]Active constraint listbox tooltip now displays information on active constraints;
[*]Arrow buttons on orbit visualization now wrap;
[*]Fixed bug that occured when mission had more than 11 events;
[*]Fixed bug that could cause infinite propagator recursion when going to true anomaly of 0.
[*]Added new constraints to the MA Mission Optimizer
[*]Added Mission Architect Celestial Body Catalog that displays celestial body information
[*]Added ability to plot state and state-derived quantities using MATLAB plotting capabilities
[*]Classical (Keplerian) orbit elements
[*]Vector (position/velocity) elements
[*]Spacecraft masses (propellants, dry, total)
[*]Spacecraft eclipse state
[*]Other spacecraft state and state-derived values
[*]Generates CSV output on command
[*]Shows orbital events such as DV maneuvers and apse crossings on the plots
[*]Numerous graphical plotting options
[*]Colors, grids, line width, sub-plots, etc
[*]Initial implementation of body rotation code
[*]MA now computes longitude and latitude
[*]Graphical analysis variable
[*]State readout output
[*]Added "Other Spacecraft" and "Ground Stations"
[*]User can define a spacecraft in orbit or a ground station on a body surface
[*]Can be used for optimization ("minimize distance to s/c")
[*]Can be used for plotting in Graphical Analysis
[*]Added burn UT to Rendezvous Maneuver Sequencer
[*]Improved MA SoI transition robustness for elliptical orbits
[*]Increased optimizer speed for missions with many events
[*]Fixed bug with retrieving orbit from KSPTOTConnect
[*]Fixed issue with Rendezvous Maneuver Sequencer when trying to compute manenuvers between orbits with similar geometry
[*]Fixed issue that could cause script execution to slow with many events
[*]Fixed issue with MA mission plan file sizes being >10 MB
[*]Fixed issue that caused saving and opening of MA mission plans to be slow
[*]Two new constraints in Mission Architect:
[*]Altitude of periapsis
[*]Altitude of apoapsis
[*]Bug fix to graphical analysis' text output when mission plan had not yet been saved
[*]Major change to MA constraint system (now possible to change assigned event after creating constraint)
[*]Bug fixes to KSPTOT main functionality, flyby maneuver sequencer, and in other places
[*]Bug fixes to Mission Architect
[*][B]New Application: Multi-Flyby Maneuver Sequencer[/B]. Replacing the Flyby Maneuver Sequencer, this application is capable of generating flyby trajectories around an arbitrary number of celestial bodies. It's also 100x times faster than FMS and tends to generate solutions which are more balanced and achievable. Really, try it out, it's a real work of art and arguably the best set of code I've ever written.
[*][B]Mission Architect[/B] has received a number of upgrades:
[*]GUI now actively indicates when no errors are present in the execution of the missions script.
[*]It is not possible to generate orbit constraints based on the current state of the mission and its associated events. See "Script" menu.
[*]Two new script execution settings (see "Script" menu):
[*]Strict SoI Search is an attempt to speed up the execution time of long missions by restructuring the way high->low SoI transitions are found. It can, in some cases, speed up execution and optimization by a factor of 2x.
[*]Parallel Script Optimization allows users to take advantage of MATLAB's sophisticated parallel computing abilities to speed up the optimization of the mission script in most cases.
[*]Both of these options default to "off" but are available in the "Script" menu.
[*]A number of improvements to SoI search in general that increase its robustness.
[*]Many, many bug fixes and improvements.
[*]A number of other minor fixes and improvements to various other elements of KSP TOT.
[*][B]New Application: Flyby Porkchop Plotter. [/B]Generates a delta-v contour map for an arbitrary flyby mission sequencer in a similar manner to that of the porkchop plot featured on main GUI. Inspired by diomedea, this application is great for getting the big picture and finding flybys through a more "brute-force" technique.
[*]Updates to the [B]Multi-Flyby Maneuver Sequencer[/B][B]:[/B]
[*]Now accepts a minimum of two waypoints (previously, three) and computes the optimal ballastic trajectory between them. This is basically a way to find optimal, no flyby trajectories using a genetic algorithm.
[*]GUI now allows users to specify bound on flight time for each waypoint leg. Previously only the launch window could be specified.
[*]Bug fixes and some other minor tweaks to the underlying algorithm.
[*]A new[B] splash screen[/B] now appears when loading the application. Features a new KSP TOT logo inspired by the Voyager I and II missions.
[*]Also fixed the issue where the main GUI would half load, displaying filler/placeholder information for a moment before loading the full GUI.
[*]A new [B]Help -> About[/B] menu in the main GUI with application development credits.
[*]Fixed a regression in [B]Mission Architect[/B] that made it hard to find SoI transitions in some cases.
[*]Fixed a bug in [B]Multi-Flyby Maneuver Sequencer[/B] such that the wrong burn true anomaly was being displayed at flyby periapses.
[*]Added the ability to import masses of the active spacecraft in KSP straight into [B]Mission Architect[/B] by right-clicking the mass panel in the Insert State dialog box. Must have KSPTOTConnect plugin installed in KSP and KSP must be running in the flight scene for this to work.
[*]Added ability to tap Enter/Return on keyboard to save and close the Insert State/Coast/DV_Maneuver/Mass_Dump dialog boxes in [B]Mission Architect[/B].
[*]Fixed issue with launch windows in [B]MFMS.[/B]
[*]Fixed issue with editing thrusters in [B]Mission Architect.[/B]
[*]The pork chop plot now requests an increase in the maximum delta-v to plot if the minimum delta-v in the data points computed is greater than that value.
[*][B]Added the ability to generate bodies.ini files from KSP! [/B] In the File menu of the main GUI, select "Create Bodies File From KSP."
[*]Added a note in the generic time entry dialog box clarifying that those times are Earth times, not Kerbin times.
[*]Added a new constraint to [B]Mission Architect[/B]: Universal Time constraint. Restricts event end times to the universal times specified by the user.
[*]Vessels no longer have parts disappear upon loading a save when using the KSP TOT MCC suite.
[*]Asteroids are no longer selectable from the MCC Vessel Selection dialog box.
[*]Thanks to bk2w, I now have a vectorized version of the porkchop plot code implemented. Based on his trials, it runs something like 280x faster than before. Needless to say, this is a great improvement! Thank you to bk2w!
[*]Implemented an "orbit clipboard" across the whole KSP TOT application, including Mission Architect, Multi-Flyby Manuever Sequencer, etc. Right click on any orbit entry panel to get a menu for copy/pasting an orbit to the KSP TOT orbit clipboard. You can also right click on any orbit state log panel in Mission Architect to copy the orbit from what you're seeing. This works on the main GUI and in the State Log window, too!
[*]Added Mean Anomaly to the Mission Architect state log tooltips.
[*]Fixed a bug with using the Mission Architect State Log with only one event in the mission script.
[*]In the Mission Architect Insert Coast dialog box, when inserting a Go To UT coast, you can now right click the UT value, min UT value, and max UT value boxes to enter a UT as a Date/Time string, as you can everywhere else in the GUI.
[*]One or two other minor things I found along the way.
[*][B]Major improvements to the KSPTOTConnect netcode courtesy of RadarManFromTheMoon[/B]. These improvements significantly increase the robustness and speed of KSP TOT Connect, making it much more enjoyable to use. Thanks, RadarManFromTheMoon!
[*][B]New Mission Architect Tool: Mission Animator[/B]. Mission Animator is a multi-purpose visualizer and animation creation tool for Mission Architect.
[*]Three new objective functions in Mission Architect: maximize inclination, maximize eccentricity, and "satisfy constraints".
[*]2x speed up of Mission Architect script execution when using Strict SoI Search
[*][B]Time may now be specified in Earth units or Kerbin units.[/B] NOTE: Kerbin units are HIGHLY experimental. Report any issues with KSP TOT while using Kerbin units immediately.
[*]Bug fixed with MA Graphical Analysis tool when plotting against MET.
[*]New "Distance Traveled" option in MA Graphical Analysis.
[*]Fixed two bugs with Maneuver Exec Assistant
[*]A new aerobraking event for Mission Architect;
[*]A huge set of new options in Mission Animator; and
[*]Lots of little bug fixes and tweaks.
[*]New Features for [B]Mission Architect[/B];
[*]A new finite duration burn model that takes into account the duration of a burn, and thrust and Isp of the engine;
[*]Aerobraking updated to include both stock and NEAR/FAR models;
[*]A new launch window analysis tool;
[*]A new delta-v budget tool;
[*]Improvements to mission optimizer behavior;
[*]Improvements to undo/redo functionality (was causing some slow-downs after many actions);
[*]Bug fixes and other minor improvements;
[*]Compiled [B]KSPTOTConnect [/B]against KSP v0.90;
[*]Added a search window length input to [B]Rendezvous Maneuver Sequencer[/B];
[*]Some minor fixes to the [B]KSPTOT Real Time System (RTS).[/B]
[*]Upgraded [B]MATLAB Compiler Runtime to version R2014b x64[/B].
[*]Added a search parameter slider to [B]Rendezvous Maneuver Sequencer[/B] that allows the user to adjust the way the optimizer works.
[*]Added ability to split impulsive DV maneuvers in [B]Mission Architect.[/B]
[*]Changed aerobraking models away from the impulsive approximation and replaced those with numerical integration that should be much more accurate.
[*]Added a function to [B]Mission Architect Graphical Analysis[/B] that allows the user to draw lines at specified points on the plots
[*]Lots of other bug fixes and minor tweaks to [B]Mission Architect[/B].
[*]Fixes an issue with the rotation rate of Kerbin in the bodies.ini file.
[*]Fixes an issue with the way spacecraft are displayed in the Mission Animator.
[*]Fixes an issue with lat/long calculations.
[*]Added the ability to specify the line style of Other Spacecraft orbits in [B]Mission Architect[/B] when rendering.
[*]Added ability to plot the orbits of Other Spacecraft in the main [B]Mission Architect[/B] render window.
[*]Added option to replace small children bodies with circular markers in main [B]Mission Architect[/B] render window to improve their visibility.
[*]Added ability to open MATLAB FIG files right from [B]Mission Architect[/B]'s file menu.
[*]Added ability to close most [B]Mission Architect[/B] windows using the Esc key (will not save any input, is equivalent to hitting the X in the window corner).
[*]Updated [B]KSPTOTConnect [/B]plugin for [B]KSP v1.0[/B]!
[*]Removed previous stock drag model from [B]Mission Architect[/B]'s aerobraking event code.
[*]Many, many bug fixes and other small improvements/enhancements. Thanks to Gaiiden for his help in identifying many of these!
[*]Resolved an issue with axis scale in Mission Animator cutting off orbits;
[*]Resolved a few issues with KSPTOTConnect plugin that prevented a bodies.ini file from being generated correctly;
[*]Updated bodies.ini file to use GM values and atmospheric values from KSP v1.0.x;
[*]Resolved an issue with the Keplierian -> Vector elements conversion subroutine that caused an issue when eccentricity was 0.0 and inclination was greater than 0.0.
[*]One or two other minor bug fixes and tweaks.
[*]10x decrease in run time on the Kepler solver. This is due to eliminating the use of fzero() for both elliptical and hyperbolic cases. Should reduce total run time by 15-20%.
[*]Eliminated a findObj() call that should reduce total runtime by 5%-10%.
[*]Enabled strict SoI search by default, which should reduce total run time by 10%-20%. (I've also seen it do nothing, though, so it's very situation dependent.)
[*]Added a selective SoI search feature which can be used to further reduce run time as requested by the user.
[*]A few other bug fixes and tweaks.
[*]Fixed a bug that occurred occasionally when propagating a mission plan;
[*]Added a "Get Orbit for Active Vessel" feature to Get Orbit context menus.
[*]Added a [B]Communications Network Analysis tool[/B] to Mission Architect. This feature allows you to assess communication node visibility, total comm path distance, and network node utilization.
[*]Added a [B]ground station elevation angle[/B] task to Mission Architect's Graphical Analysis tool. This is useful for assessing when comm spacecraft go below or rise above the horizon (and therefore become useful).
[*]Added a series of [B]astrodynamics calculators[/B] to Mission Architect's suite of tools.
[*]One or two minor bug fixes here and there.
[*]Added a Mission Notes section under the Edit menu, let's you record text or whatever you want and store it for later.
[*]Added a Staging event to the Events menu. This is basically a Mass-only Set State: you tell it what your post staging dry mass, fuel/ox mass, etc masses are and it sets them for you. Useful for when you're dropping partially used stages, and very complementary to the existing MASS_DUMP event.
[*]Added commentary to the bodies.ini file.
[*]Added the KSP v1.0 atmospheric model to KSP TOT Mission Architect.
[*]Some performance optimizations related to the redo/undo menu and its backend data.
[*]Four new DV maneuver types, all of which use spherical coordinates. Spherical coordinates use an azimuth (angle in a plane) and elevation (angle out of the plane) and DV magnitude to define the maneuver. There are inertial and orbit impulse maneuver types as well as inertial and orbit finite burn duration maneuver types. The best use for these new types to allow you to specify the min and maximum delta-v magnitude for the optimizer.
[*]Resolved an issue where the GUI would rapidly slow down after running the optimizer multiple times. This issue was around since v1.0.0 but was exasperated by v1.4.0. The actual root cause of the issue is probably a bug in MATLAB's memory management, but I actually like the fix better than the old way I was doing things, so I'm going to keep it permanent.
[*]Resolved an issue where variables not marked for optimization in a burn (or any multi-variable event) would get changed by the optimizer.
[*]"Re-optimize Mission" in the Mission Architect Optimization menu now actually serves a purpose and is useful. Before it would just run the exact same case again, providing the same answer you already got. Now it runs the current script with the same optimization settings/constraints/objective/etc, which was its original purpose.
[*]Some other minor speed improvements here and there.
[*]Other minor fixes and optimizations.
[*] KSPTOTConnect compatibility with KSP v1.1.2
[*] Lots of bug fixes and stability work.
[*] Resolved an issue with Mission Architect erroring when creating a constraint.
[*] Added EXPERIMENTAL support for bodies.ini files that include spaces and special characters in body names.
[*] Resolved an issue with loading in bodies.ini files from Outer Planets and other KSP mods.
[*] KSPTOT now runs on a new MATLAB Compiler Runtime, R2015b x64! This requires an install of this runtime to use KSPTOT. Please see the OP or this link to download the new MCR.
[*] Bug fixes for the Mission Architect Comm. Network Analysis Tool's pathfinding algorithm;
[*] A bug fix in the Multi-Flyby Maneuver Sequencer's use of the compiled Lambert solver when using Kerbin time;
[*] Fixes to a bug in Mission Architect orbit angle constraints (RAAN, argument, etc).
[*] Additions of new constraints in Mission Architect: prograde/normal/radial distance from Other Spacecraft, and Relative Velocity to Other Spacecraft
[*] Addition of new Mission Architect Graphical Analysis tasks: prograde/normal/radial distance from Other Spacecraft, and Relative Velocity to Other Spacecraft
[*] A few other minor tweaks here and there.
[*] Fixed issue with starting parallel pool in Mission Architect (matlabpool -> parpool)
[*] Added ability to remove mass at a constant rate from spacecraft during coasts
[*] Added ability to rename propellant types
[*] Mass dump GUI now shows fuel type being dumped for delta-v dump
[*] DV maneuvers now have a line color for plotting similar to coasts
[*] Added ability to run multiple MFMS runs in sequence in a hands-off manner
[*] Added ability to save the text output from MFMS runs to file without manual copy/paste
[*] Added function to Mission Architect to create a "trajectory map" similar to what MFMS outputs (Tools -> Create Trajectory Map)
[*] Replaced the previous end-of-optimization prompt with a scorecard that allows the user to choose between the final optimization result, the optimization iteration with the best objective function value, or the optimization iteration with the best constraint value.
[*] Added "Copy Orbit After Selected Event" item to MA script context menu
[*] Lists of celestrial bodies which contain the full body list are now arranged in a hierarchical order with appropriate indenting
[*] Fixed bug with MFMS in which the waypoint panel header did not update when the central body is changed
[*] Fixed bug with other spacecraft and ground targets related to their body. May need to recreate these items if you're on a v1.5.5 pre-release.
[*] Added initial orbit epoch and mean anomaly to the Multi-Flyby Maneuver Sequencer input
[*] Fixed a bug with the algorithm that adjusts departure time to account for mean anomaly and epoch in the "Compute Departure" tool.
[*] Fixed a bug with MFMS "Get Orbit from SFS File" functionality
[*] Added hyperbolic velocity unit vector constraints to Mission Architect
[*] Added hyperbolic velocity unit vector component tasks to Mission Architect Graphical Analysis
[*] Added ability in Mission Architect for impulsive maneuvers to be split by burn duration as well as delta-v
[*] Fixed bugs in Mission Architect's Convert Impulsive Maneuver and Split Impulsive Maneuver functions
[*] Added solar beta angle task to Mission Architect Graphical Analysis
[*] Fixed bug with computing event duration in Mission Architect
[*] Added stock comm max range model (sqrt(r1*r2)) to Mission Architect comm network analysis tool.
[*] Resolved issue with Mission Architect where trying to open up two sessions of MA would kill the first session without any prompting.
[*] Resolved issue with Mission Architect where the number of revolutions in a coast would be computed incorrectly when opening the Edit Coast dialog box.
[*] KSPTOTConnect updated for KSP v1.2.
[*] KSPTOT Real Time System now uses skin temperature in the thermal console screen.
[*] Open Mission Plan and New Mission Plan menu items in Mission Architect no longer prompt about unsaved work if the mission plan is fulled saved with no outstanding changes.
[*] Fixed: Issue with missing matlabrc file.
[*] Fixed: "Other Spacecraft window stays open on loading new project"
[*] Fixed: "Enabling script->parallel throws error"
[*] Fixed: "Copy/Paste orbit data does not include orbiting body"
[*] Fixed: "Mission Architect optimization window no longer forces itself to front"while optimizing.
[*] Fixed: "f(x) going from positive to negative messes up the middle chart in the Mission Optimizer window"
[*] Implemented: "Notify user of successful tabular text output when using a saved mission file"
[*] Fixed: "KSP TOT still expects anomalies in the range of [0, 360]" KSPTOT no longer returns anomalies outside of [0, 360]
[*] Updated: "bodies.ini GM/Atmosphere/Rotational periods"
[*] Fixed: "No trajectory plotted through Kerbin SOI for asteroid coming from sun orbit"
[*] Updated: Mission Architect SoI search mode no longer starts out "strict"
[*] Fixed: "Mun SOI intercept not found on trajectory that passes through Mun’s SOI"
[*] Fixed: "KSPTOT will get orbit info, but will not read maneuver nodes"
[*] Implemented: "Other Spacecraft dialog has disabled input if no vessels listed until Add Spacecraft button is clicked"
[*] Implemented: "In the execution assistant, add ability to right-click and read next maneuver node from KSP"
[*] Implemented: "In the Orb Ops console, display the maneuver node's True Anomaly, to match what the execution assistant wants"
[*] Implemented: "MA save dialog notes if save file is dirty or not"
[*] Fixed: Resolved issue where pasting an orbit into the MA Other Spacecraft window would not apply that orbit to the selected spacecraft.
[*] Mission Architect: New experimental N-body coast event. This event models N-body gravity for selected bodies. Allows for basic Principia compatibility.
[*] Mission Architect: New event "Docking" that models the user spacecraft being docked to another spacecraft by propagating the user spacecraft along the same orbit as the other spacecraft.
[*] Mission Architect: New event "Landing" that fixes your spacecraft relative to the rotating surface of the current central body. Can be used to model landings on the surface.
[*] Mission Architect: New initial state type "Estimate Launch." Allows for users to model a launch into a circular parking orbit at a desired altitude. Useful for determining initial orbits when that information is otherwise hard to guess or not available.
[*] Mission Architect: Initial state parameters may now be optimized like burn and coast parameters.
[*] Mission Architect: Relative in-track, cross-track, and radial positions of other spacecraft are now represented more correctly in Graphical Analysis.
[*] Mission Architect: Major update to the optimizer contraint system that allows for nearly all Graphical Analysis tasks to be used as constraints.
[*] A number of bug fixes in Mission Architect and the KSPTOTConnect plugin.
[*] [Implemented] MFMS now allows for multiple revolutions around the central body for each leg of the tour.
[*] [Implemented] RSS-like propagation of celestial bodies is now usable throughout the application. The code will handle SoI transitions correctly in Mission Architect.
[*] [Implemented] KSPTOT main UI options are now stored in the appOptions file and persist through sessions.
[*] [Implemented] Minor quality of life improvements in Mission Architect.
[*] [Fix] Resolved issues with the way SoI transitions are computed that could cause an SoI transition to be missed.
[*] [Fix] Fixed rare bug with loading mission plans in Mission Architect.
[*] [Fix] Numerous bugs contained in the Compute Departure function.
[*] [Fix] Resolved many other issues with Mission Architect.
[*]Update KSPTOT to use MATLAB Compiler Runtime version R2017b.
[*]Resolved issue with KSPTOT RTS.
[*]Added minimum periapsis radius constraint for MFMS.
[*]Fixed issue with KSPTOT Mission Architech drag calculations.
[*]The Mission Architect optimization algorithm is now select-able from the Script -> Execution Options menu.
[*]Mission Architect aerobraking events can now select a color to use for drawing on the UI.
[*]Added the MATLAB version the application is running on to various splash screens and informational texts.
[*]Mission Architect orbit display clipping parameter updated to "rectangle"; should help with some funny clipping issues that existed previously.
[*]"Central Body ID" constraint should now be smooth instead of discrete. This should help with using this constraint during optimization.
[*]New "Eve Aerobraking" MA example
[*]Added a total mission duration constraint in MFMS.
[*]Increased the fidelity of the Mission Architect SoI search routine with the addition of another algorithm.
[*]Added an error message to MA when the optimizer hits a NaN for a control variable.
[*]Messages are written to MA output when you change optimizer algorithm.
[*] Corrected an issue with the SFS import function
[*] Added the ability to set the line style of coasts and finite DV maneuvers.
[*] Added the line style updates to five Mission Architect events.
[*] Updated the drag coefficient calculator to use orbital energy instead of SMA to solve on.
[*] In Mission Architect, after running the optimizer, any constraints that are active or violated after optimization will show a warning message with information about the constraint values and bounds.
[*] Resolved issue with the MA Delta-V dialog box not updating until another event is processed.
[*] Resolved an issue with the main MA UI not refreshing after optimization.
[*] Added a warning to MA if the user tries to close the application while the software is processing data (either because the UI is running the mission script or the orbit display is updating).
[*] Corrected a bug in the SoI transition code.
[*] Importing orbits from KSPTOT Connect into RMS and OTBOC tools now automatically sets the central body correctly.
[*] Fixed a bug with the context menu in OTBOC tool.
[*] Added SoI search tolerance menu option to Mission Architect;
[*] Added ability to perturb Mission Architect optimization variables by a percentage amount via menu;
[*] Fixed bug with Mission Architect optimization constraint analysis warning text;
[*] Added warning dialog to MFMS is the user attempts to close the UI while MFMS is running.
[*] Mission Architect: Two new graphical analysis tasks and constraints, the hyperbolic excess velocity vector right ascension and declination angles.
[*] Mission Architect: The Optimizer observation window is now more useful. The top plot showing variable values has been changed such that it plots from lower bound to upper bound of every value. This means that extra large variable values (like times) will not completely wash out the plot anymore.
[*] MFMS: The number of decimal places in the output window has increased to 4 for each united value.
[*] Mission Architect: Tweaks to the options fed into the fmincon optimizer algorithm.
[*] Mission Architect: Included a new example case file: Kerbin-Eve-Jool-Eeloo mission.
[*] An error message when the MFMS optimizer returns abnormally, with a particular suggestion to check the waypoint flight time and maximum mission duration constraints.
[*] Update to the SoI transition search code that should now precisely find the SoI boundary for downwards transitions.
[*] Fixed a bug with the optimizer constraint warning message units.
[*] NEW TOOL: Launch Vehicle Designer! Launch Vehicle Designer (LVD) is a new analysis tool within KSPTOT. It's purpose is to provide an intuitive way to perform simple-to-complex analysis of launch vehicles and their trajectories. It can model staging, atmospheric forces, variable engine thrust and Isp, a number of steering laws, SoI transitions, and a whole host of other activities that one normally carries out in KSP. Also, because of the general nature of the tool, an analyst could actually use LVD for a full end-to-end mission design, from launch, to in space maneuvers, to landing, to splashdown back at Kerbin.
[*] Bug Fix: Fixed a bug with Mission Architect's Launch Window Analysis tool.
[*] New Feature: Mission Architect can now more intelligently look for SoI transitions using the "Num. SoI Search Attempts" function.
[*] New Feature: Mission Architect supports the Orbit Decay mod. MA can now model semi-analytic orbit decay due to atmospheric drag effects.
KSP Trajectory Optimization Tool is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.