Jump to content

[WIN/MAC/LINUX] KSP Trajectory Optimization Tool v1.6.8 [New MATLAB Version!]


Recommended Posts

KSP Trajectory Optimization Tool v1.6.8


Link to images because forum Imgur functionality is broken...

As of v1.6.8, KSPTOT requires the use of the MATLAB Compiler Runtime R2021a!  If you are upgrading from a version older than v1.6.8, 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 on Windows, do the following:

  1. Download the Windows 64-bit 2021a MATLAB Compiler Runtime (MCR).
  2. Install the MCR package on your computer. You may need to restart your PC after installing in order to use KSPTOT.
  3. Download the KSP TOT package.  (Push download button in upper right corner.)
  4. Unzip the KSP TOT package to a directory of your choosing.
  5. Copy the KSPTOTConnect folder to your KSP Gamedata folder.
  6. Copy the Ships folder to your KSP folder (if you use kOS).
  7. Run the KSPTOT application.
  8. To update from a previous version, just repeat steps 3-6. There is no need to re-download the MCR.

Mac/Linux Users: Follow these instructions instead.

  1. (Mac only): Download VirtualBox for OS X hosts. Install according to the VirtualBox instructions.  Setup and install a distribution of Linux as a virtual machine within VirtualBox.  (Ex: Ubuntu)  All instructions from here on down will reference the virtual machine and it's Linux operating system, not the Mac system.
  2. Download the Linux 64-bit 2021a MATLAB Compiler Runtime (MCR).
  3. Install the MCR package on your computer. You may need to restart your PC after installing in order to use KSPTOT.
    1. You MUST install the MCR to "/usr/local/MATLAB/R2021a/"!  The software will not work correctly if this is not done.
  4. Download the KSP TOT package(Push download button in upper right corner.)
  5. Unzip the KSP TOT package to a directory of your choosing.
  6. Set the execution bit on the run script and the executable itself.  Using the following console command:
    1. chmod +x run_KSPTrajectoryOptimizationTool.sh KSPTrajectoryOptimizationTool

  7. Copy the KSPTOTConnect folder to your KSP Gamedata folder.
  8. Copy the Ships folder to your KSP folder (if you use kOS).
  9. From within the directory where you unpacked KSPTOT, run "./run_KSPTrajectoryOptimizationTool.sh /usr/local/MATLAB/R2021a/" to launch KSPTOT.
  10. To update from a previous version, just repeat steps 4-6. There is no need to re-download the MCR.
  11. For addition detail, see here.

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! :sticktongue:)  They are merely another way for you to say "Thank You" and are completely optional and voluntary. 

Usage Instructions

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.

Launch Vehicle Designer Future Feature Ideas

These are ideas for future LVD functionality and are mostly here for my own reference:

  • Sensor models for mineral scanning and the like.
    • Done
  • Electrical system modeling, including solar panel, generator, and battery models.
    • Done
  • Simple modeling of ground vehicles and aircraft via a waypoint system.
    • Done
  • Updated steering modes which are more flexible (specify control frame, specify angle models (polynominals, linear tangent, etc)).
    • Done
  • General derivatives and integrals of quantities.
    • Implement as a store of times and values over event, then allow for requesting the derivative/integral at a particular time by querying stores values and times to compute numerically.
    • Done.
  • Linear constraints.
  • Backwards propagation. 
    • Done.
  • Drag (and lift?) as a function of some independent variable (velocity, altitude, Mach number, etc)
    • Drag done.
  • Let the user select select (or do it automatically) the reference frame for the Spacecraft state panels (Initial Spacecraft State, Final Spacecraft State, view state after event).
  • LVD geometry system:
    • Define "points" (spacecraft, celestial bodies, ground stations, fixed in reference frame, two body prop point)
    • Define "vectors" (built in e.g. position, velocity, angular momentum; fixed in coordinate system; and point to point)
    • Define coordinate systems (aligned/constrained from two vectors)
    • Define reference frame (coordinate system + point)
    • All elements done.
  • Make element set conversions vectorized.
    • Done.

Source Code

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: When I first download and try to run KSPTOT, I see the process in Task Manager but nothing happens!  What is going on?

A: Each time you download KSPTOT and run the executable for the first time, the software needs to decompress a bunch of code and store it on your computer.  KSPTOT is a large application with a lot of software within it, so this takes some time.  Please give KSPTOT 5-10 minutes to fully decompress and start up before killing it.  (In rare instances, it may take longer than this.)

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. :)

Q: I get an error about a file not being found when I attempt to run KSPTOT.  What can I do?

A: Please follow the steps at this link to see if that resolves the problem: https://www.mathworks.com/matlabcentral/answers/387408-why-do-i-get-the-error-using-load-unable-to-read-file-filename-no-such-file-or-directory-when

Q: What ports do I need open to use KSPTOTConnect or the KSPTOT Real Time System?

A: Ports 8282 though 8295 are used for KSPTOTConnect and KSPTOT RTS.  Port 8282 is used for pulling body information from KSP, for uploading maneuvers, and other one time events.  The others are used for a continuous data stream from KSP while using the RTS. 

Change Log

Version 0.1
[*]Initial public release. 
Version 0.2
[*]Added departure information screen. 
[*]Added ability to input time (UT) as a date/time by right-clicking on those text boxes 
Version 0.3
[*]Fixed bugs 
[*]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. 
 Version 0.4
[*]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. 
Version 0.5
[*]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. 
Version 0.6
[*]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. 
Version 0.7
[*]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. 
Version 0.8
[*]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. 
Version 0.9
[*]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. 
Version 0.10
[*]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. 
Version 0.11
[*]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: 
[*]Orbital Operations 
[*]ACS/Dynamics (attitude control and pointing) 
[*]Telemetry Monitor 

[*]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 

Version 0.11.1
[*]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. 
Version 0.11.2
[*]Bug fix: The remaining plot rendering issues should be resolved. 
Version 0.12 
[*]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. 
[*]And more! 

[*]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. 
Version 0.12.1
[*]Fixed issue with vectorized kepler solver; 
[*]Added lower periapse warning and low propellant warnings; 
[*]Added zoom slider to orbit display; 
[*]Added tooltips; 
[*]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. 
Version 0.12.2
[*]Added new constraints to the MA Mission Optimizer
[*]Orbital Period 
[*]Non-singular H1 
[*]Non-singular K1 
[*]Non-singular H2 
[*]Non-singular K2 

[*]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 
[*]Equinoctial 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
[*]Optimizer constraint 
[*]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 
Version 0.12.3
[*]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 

Version 1.0.0
[*][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. 

Version 1.1.0
[*][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. 

Version 1.1.1
[*]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]. 

 Version 1.1.2
[*]Fixed issue with launch windows in [B]MFMS.[/B] 

Version 1.1.3
[*]Fixed issue with editing thrusters in [B]Mission Architect.[/B] 

Version 1.1.4
[*]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. 

Version 1.1.5
[*]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. 

Version 1.1.6
[*]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. 

Version 1.1.7
[*][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 

Version 1.1.8
[*]A new aerobraking event for Mission Architect; 
[*]A huge set of new options in Mission Animator; and 
[*]Lots of little bug fixes and tweaks. 

Version 1.1.9
[*]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] 

Version 1.2.0
[*]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]. 

Version 1.2.1
[*]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. 

Version 1.3.0
[*]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! 

Version 1.3.1
[*]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. 

Version 1.3.2
[*]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. 

Version 1.3.3
[*]Fixed a bug that occurred occasionally when propagating a mission plan; 
[*]Added a "Get Orbit for Active Vessel" feature to Get Orbit context menus. 

Version 1.4.0
[*]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. 

Version 1.5.0
[*]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.

Version 1.5.1
[*] KSPTOTConnect compatibility with KSP v1.1.2
[*] Lots of bug fixes and stability work.

Version 1.5.2
[*] 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.

Version 1.5.3
[*] Resolved an issue with loading in bodies.ini files from Outer Planets and other KSP mods.

Version 1.5.4
[*] 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.

Version 1.5.5
[*] 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

Version 1.5.6
[*] 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.

Version 1.5.7
[*] 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.

Version 1.5.8
[*] [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.

Version 1.5.9
[*]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.

Version 1.5.10
[*] 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.

Version 1.6.0
 [*] 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.

Version 1.6.1
[*] Added a "normal force" model;
[*] Added the ability to select the integrator algorithm used for each event;
[*] Added new Event Actions to modify drag and lift force properties;
[*] Escape key now closes most LVD UIs;
[*] Added a dynamic pressure task to Graphical Analysis;
[*] Added ability to set the integrator step size for each event;
[*] Added "non-sequential events" that can be triggered based on a specified condition in between sequential events;
[*] Added a Thrust to Weight throttle model that holds a particular T2W ratio;
[*] Added constraints for all existing attitude angles and throttle quantities;
[*] Added Graphical Analysis tasks for tank masses, stage dry masses, engine active state, and stage active state;
[*] Added "stopwatches" that can be turned on and off during a mission to determine the amount of time between arbitrary events (includes constraints and GA tasks);
[*] Added a new LVD example that shows how to model asparagus staging while demonstrating a full trip from Kerbin to the Mun's surface and back to Kerbin;
[*] Added ability to selectively turn on and off force models for each event;
[*] Greatly sped up the time it takes to perform any action in the UI that could be undone;
[*] Added total thrust as a graphical analysis task and constraint;
[*] Many, many performance improvements to the LVD script execution engine.  Executing an arbitrary script now takes 25%-50% of the time it did in v1.6.0, on average;
[*] Many, many bug fixes!

Version 1.6.2
[*] New Linux Version of KSPTOT!
[*] Added new "two body time to impact", "impact latitude", and "impact longitude" tasks to LVD's Graphical Analysis tool.
[*] Added new "tank mass flow rate" task to LVD's Graphical Analysis tool.
[*] Added checkboxes to show SoI radii and body children on the main LVD UI.  These work identical to those in Mission Architect.
[*] Added ability to test an LVD event with all possible integrators to see which one runs the fastest.  Accessible from the LVD Edit Event dialog box.
[*] Added the ability to set the width of plotted trajectory lines in Mission Architect and Launch Vehicle Designer.
[*] Added ability, in Launch Vehicle Designer, to create "Tank to Tank" connections that allow flowing mass from one tank to another.  Useful for basic life support modeling or modeling propellant refueling.
[*] Added ability to see SoI transitions in LVD's Graphical Analysis tool.
[*] Added ability to define fluid types and assign those types to tanks.  Now tanks that hold xenon or monopropellant will not have their mass accounted for as "Liquid Fuel/Ox."
[*] Added a new LVD Event Action: "Reset Extremum Value."  Allows for an extremum to forget it's value in the middle of a mission so that it can be reused accurately later on in that same flight.
[*] Reworked the Mission Architect Insert/Set State user interface to be less tall and wider (fits on lower resolution monitors better).
[*] Many bug fixes and LVD script execution performance enhancements.

Version 1.6.4
[*] LVD: Added tooltip to edit constraints dialog box listbox.
[*] LVD: Added drag coefficient GA task
[*] LVD: Performance enhancements to cross product and the deep copy stage state functions
[*] LVD: Fix bug that was causing improper handling of non-sequential events in the sim driver
[*] LVD: Added radius beyond SoI radius validator.
[*] LVD: Option to set event specific initial step size for integrator, and then optimize that step size via context menu.
[*] LVD: When holddowns are enabled, integrate in the body-fixed frame with zeros for the pos/vel rates. (Performance enhancement)
[*] LVD: Added event termination condition direction option.
[*] Flyby Porckchop Plot: Resolved "not enough inputs" bug
[*] MA/LVD: All NEW MA and LVD cases will use spline interpolation for their atmospheric table interpolations.
[*] MA: Resolved an issue with atmo data being overwritten in MA when any undo/redo state is created.
[*] LVD: T2W is now computed at true altitude and not sea-level.
[*] MA/LVD: Update to temperature model.  All missing terms have been added now.
[*] MA: Updates to soi transition to eliminate a case where the soi max search UT was infinite when the go to tru DT was 0. Has been fixed to just assume that no time is passing.
[*] Resolved potential issue where atmo curves for bodies would not load correctly when loading a new bodies.ini file if the order of bodies in the old bodies.ini was different than in the new bodies.ini file. Clearing a persistent var in processINIBodyInfo does the trick.

Version 1.6.5
[*]MA/LVD: Added option to auto-propagate (or not) the mission script when changes are made to it.  Useful when your script takes forever to propagate and you have lots of changes to make. 
[*]MA: Improved robustness of "coast to function value".
[*]MA/LVD: Editing mission notes prompts user to save file (asterisk in window title). 
[*]LVD: Overhaul of optimization: 
[**]Added new optimizer: NOMAD 
[**]Added new option for computing gradients of objective function (a custom finite difference scheme) 
[**]Added a new UI for selecting optimization algorithm. 
[**]Added many new options for FMINCON and Pattern Search algorithms (including two new UIs for them). 
[**]Removed all the old optimization options (they are incorporated to the new options now). 
[*]LVD/MA: New mission plans now use the celestial body data that's currently loaded in the main KSPTOT GUI and not the data from the previous mission plan. 
[*]LVD: Added a new impulsive delta-v event action. 
[*]LVD: Added a new event number and total effective specific impulse (Isp) tasks to Graphical Analysis. 
[*]LVD: Objective functions are now "composites" of a number of sub-functions.  Those sub-functions mirror what is available for use as a constraint. 
[*]LVD: Added a constraint (and therefore also an objective sub-function) for the amount of delta-v expended during an event.  Listed under "event delta-v expended" or something to that effect. 
[*]LVD: In the initial state dialog box and the set kinematic state action dialog box, state representation and reference frame are now select-able in more combinations than before, and adding new reference frames and state representations is much, much easier going forward. 
[*]LVD: New "set kinematic state" action.  Use this to set the time, position, velocity, and stage states of the spacecraft arbitrarily (or optimize them), or inherit them from the final state of a previous event. 
[*]LVD: New time, position, and continuity constraints for use with the set kinematic state action. 
[*]LVD: FMINCON options now allow constraint, optimality, and step tolerances to go to 0. 
[*]LVD: Objective functions are now "composites" of different functions.  The values of these functions are added together in a fashion defined by the user. 
[*]LVD: New plotting methods for events (applies to both the orbit display in the main LVD UI and graphical analysis plots). 
[*]LVD: Minor performance enhancements to calculating atmospheric temperature.
[*]LVD: Resolves an issue with the true anomaly event termination condition where the directional termination was reversed from expected behavior. 
[*]LVD: Added a pop out orbit display button to the main LVD UI. 
[*]LVD: Added the ability to compute the gradient sparsity to the custom finite differences gradient method, which can improve optimization speed and accuracy in some situations. 
[*]LVD: Added IPOPT to optimizer list. 
[*]MA: Resolved issue with orbital decay on coast that was breaking it. 
[*]MA: Resolved two issues with MA drag coefficient calculator that would slow down the calculations in some instances. 
[*]MA: Marker type for mission animator added. 
[*]Fix to SFS file read.  Bug was causing some vessels to not get found in the file. 
[*]LVD: Addition of a new propagator type, "Two Body Motion."  This change also includes a number of backend reworks to incorporate a new way to propagate spacecraft orbits and a generic interface for adding new propagator types in the future.  
[*]LVD: Changed drag model such that drag coefficient is now entered as set of points which are interpolated over.  Drag coefficient data may be imported from a CSV file. 
[*]LVD: Added a new, fifth order fixed step integrator, ODE5.  See below for more information. 
[*]LVD: Added drag area to graphical analysis outputs. 
[*]LVD: Added Cntrl-F shortcut to remove or re-added event from optimization. 
[*]MA: Resolved issue with plotting periapsis crossings. 

Version 1.6.6
[*] MA: Resolved issue where Ground Targets UI would not open.
[*] LVD: Adjust variables UI is now not modal. 
[*] LVD: Graphical analysis now has an "event termination" time indicator line option for plotting.
[*] LVD: Resolved bug when adding a Set Drag Aero Properties action to an event that caused an error to be thrown (and no action to be added to the event).
[*] LVD/MA: Fixed issue with eclipse calculations being wrong;
[*] LVD: Implemented plugin system.
[*] Performance improvement when looking up celestial body data by body ID number.
[*] LVD: Creation of new view settings/profile system that greatly expands what can be viewed and how.
[*] LVD: Addition of two-body rotating frame math under the hood, for use with the state representation code.
[*] LVD: Resolved an issue with the Adjust Variables dialog box that could cause errors to be thrown under certain circumstances.
[*] LVD: Added thrust continuity options to the various thrust profiles. 
[*] LVD: Added ground objects, which allow users to model stations and vehicles that primarily exist on or move relative to the surface of a celestial body. 
[**] The view settings also allow rendering these ground objects in the display window, and ground track and line of sight can also be viewed. 
[**] Graphical analysis tasks allow you to plot ground object quantities over time.
[*] MA/LVD: Added the ability to change the renderer between OpenGL and Painters.
[*] LVD: New derivative and integral calculations for all quantities.  Can be plotted in Graphical Analysis and used as constraints and objective functions.
[*] All numeric textboxes in KSPTOT now support more complex math functionality, including exponents, square roots, trig functions, and logs. 
[*] LVD: Creation of an electrical power system (EPS) modeling engine that helps track power generation, storage, and usage onboard a spacecraft.
[*] LVD: Initial State steering model variables and throttle model variables will now show up as "initial state" and not "event 0" in various places.
[*] MA/LVD: Graphical Analysis now has an altitude independent variable option.
[*] LVD: Graphical Analysis can now plot data using event colors. 
[*] MA/LVD: Fix for mismatched matrix dimension error in SoI search functionality.
[*] LVD: New Steering Mode: Attitude Interpolation.  Specify (and/or optimize) your initial and final states and interpolate between them over time.
[*] LVD: Fixed a few minor bugs with GA and the ODE5 integrator.
[*] MFMS: Resolved an issue with wrong powered flyby burn delta-v output being displayed on the user interface.
[*] VST: Added an example file for the Vehicle Sizing Tool.

Version 1.6.7
[*] LVD: Implementation of alternators and electric engines.
[*] LVD: Fix for broken plot background color option.
[*] LVD: GA now respects event plotting setting when plotting data.
[*] LVD: Implementation of alternators and electric engines.
[*] LVD: Fix for broken plot background color option.
[*] LVD: GA now respects event plotting setting when plotting data.
[*] MA/LVD: Added option to set number of parallel workers for optimization.
[*] MA: Fixed bug with having more than one variable item in a variable (initial state).
[*] MA: LWA can now import target orbit data from KSP.
[*] MA: Added functionality to set launch site from ground target in Set State (estimate launch).
[*] LVD: Fixed bug with power sources (wrong matrix size stuff).
[*] MA: Resolved issue that causes error if an event does not have any states associated with it.
[*] LVD: Added ability to set positive output step sizes for all active integrators on events.
[*] LVD: Boosted performance when looking for downward SoI transitions.
[*] LVD: Can now create event continuity constraints via a context menu accessed by right clicking on the sequential events listbox.
[*] LVD: Drawing plots should be faster when plotting other celestial bodies.  The slow multiprocessing stuff from a previous pre-release is gone here.
[*] LVD: Added a feature to output the wall clock run time for each event to the ksptot.log file upon propagation.  See Settings menu.
[*] LVD: Fixed bug with the time slider sucking up a bunch of CPU time after sliding it around a bunch.
[*] The missing parentID lines of the SolarSystemBodies.ini file have been added.
[*] LVD: Added a linear tangent steering model to the available options in LVD.  This is a great way to get an optimal ascent from the surface of a body to space, as the linear tangent steering law is actually derived directly from optimal control theory.  As of now, only "pitch" type angles can use this steering.
[*] MA/LVD: Added a flight path angle graphical analysis task and constraint.
[*] LVD: Fixed bug with Adjust Variable dialog getting a weird axes in the background sometimes.
[*] LVD: Optimization variables are now sorted by event number before optimization so they appear in order in the optimization UI.
[*] LVD: Having the Update View Limits option checked in the View Settings now retains the existing view direction, it just updates the axis limits.
[*] LVD: Added ability to display a semi-transparent atmosphere overlay in the View Settings.
[*] MA/LVD: Added a new astro calculator to find radius/velocity/FPA from sma/ecc/true anomaly.
[*] MA: Mission Animator UT time entry field now has a context menu for entering time as date/time. It also attempts string evaluation.
[*] LVD: Added angle equations to steering and throttle UIs.
[*] LVD: Users can now set the type of throttle model and steering model in the initial state, as well as their corresponding parameters.
[*] Celestial bodies can now display a surface texture instead of the color gradient used previously.
[*] MA/LVD: Added flight path angle graphical analysis tasks and constraints.
[*] MA: Mission Animator time slider step size is now fixed to warp rate.
[*] LVD: Steering model UIs now display proper angle names and not just "alpha", "beta", and "gamma."
[*] LVD: The main LVD window is now resizable.  There is a minimum size limit equal to the current window size, but no limit on the maximum.
[*] LVD: Resolved TwoBodyPropagator error.
[*] The issue with radio button strings overrunning their bounds in the main KSPTOT UI on Linux has been resolved.
[*] LVD: Added a new toolbar button to toggle the camera toolbar on and off.  The camera toolbar can be used to move the physical scene camera around, which often makes for a better viewing experience. 
[*] LVD: Fixed bugs regarding vessel orbit import from KSP and SFS files in initial state and set kinematic state UIs.
[*] MA: Fixed bug with propagating to node calculations.
[*] LVD: Engines now model thrust and isp as a function of pressure through the use of curves and not the hard-coded vacuum and sea level pressure points.
[*] LVD: Engine data can now be imported from KSP engine config files.  Right click in the edit engine dialog box on the thrust and Isp buttons.
[*] LVD: Upload impulsive delta-v maneuver from "Add Impulsive Delta-V" event action is now available.  Right click on an event in the sequential events list with an "Add Impulsive Delta-V" action and click on the upload maneuver menu item.
[*] MA: Resolved issue with computing position wrt Sun of other spacecraft.
[*] LVD: True anomaly termination condition should now work properly.
[*] LVD: Event actions with variables now correctly remove those variables when the action is deleted.
[*] LVD: Fixed bug where attitudes would not display in backwards prop segments.
[*] LVD: Added option to FMINCON otimizer to automatically find optimal step size.
[*] LVD: Removing an event now removes the variables associated with that event's termination condition and actions.
[*] LVD: Resolved issue with typo in 2BImpactPointLat name.
[*] LVD: Resolved issue with empty globals in 2BodyImpactPt calls to findSoITransitions.
[*] LVD: Fixed issue with finding down SoI transitions not working if eccentricity >= 1.
[*] MA/LVD: Fixed bug with chunked state log generation skipping last state log entry if there's only one event in SoI.

Version 1.6.8
[*] LVD: The function to export a kOS CSV file has been updated to allow users to select the event(s) they want to export.
[*] LVD: Introduction of the geometry system.  Points, vectors, planes, angles, coordinate systems, and reference frames are now all user definable and can be integrated with views, optimization, and Graphical Analysis.
[*] LVD: The "launch vehicle" menu is now called "scenario," and the "edit launch vehicle" menu beneath it is now called "edit vehicle configuration."
[*] LVD: Added three new constraints: ground object elevation, azimuth, and range.
[*] MA: Mission Animator now properly rotates central celestial bodies.
[*] LVD: Added a new vector, vector projected onto a plane, to the geometry system.
[*] LVD: A few bug fixes and performance improvements.
[*] LVD: T2W throttle model now checks minimum throttle T2W as well as maximum.
[*] LVD: Sim Driver now warns if integrator output event index (ie) is empty.
[*] LVD: When editing non-seq events, the event UI now greys out any non-relevant widgets.
[*] LVD: Added a flight path angle event termination condition.
[*] LVD: Added a new "vector magnitude" constraint type.
[*] LVD: Added a new "angle magnitude" constraint type.
[*] Upgrade MATLAB version to R2021a.
[*] LVD: Incorporation of surrogate optimizer as an optimization method.
[*] LVD: New optimizer output for NOMAD and PatternSearch optimizers.
[*] LVD: Different steering models can be selected for each Euler angle now using the Selectable Model steering mode.
[*] LVD: All constraints now support the ability to evaluate themselves relative to the value of the same quantity at the end of another event.  This is in addition to evaluating them relative to fixed bounds as well.
[*] Fixed an issue with importing the UT from KSPTOTConnect into the main KSPTOT user interface (the porkchop plot).
[*] LVD: Bug fixes to the 3rd body gravity model.
[*] LVD: Bug fixes to optimizing Cartesian elements.
[*] LVD: Graphical Analysis is now using the App Designer framework and sports a new look.
[*] LVD: All fluid types are now their own GA tasks.
[*] Main KSPTOT user interface window is now ported over to App Designer framework.
[*] LVD: Constraints and objective functions now are aware of and respect user selected reference frames when evaluating values.
[*] LVD: Added halo orbit examples.  The L2 halo orbit example is a full mission from low Kerbin orbit to the halo orbit around the Mun!
[*] LVD: Added third body gravity validator that checks to see if third body gravity sources are active with no force model or if the 3rd body gravity force model is active with no bodies.
[*] LVD: Extrema, Calculus Calculation objects, ground objects, and geometry objects now respect reference frames when computing their values.
[*] LVD: View Settings dialog now moved over to App Designer framework and sports a new look!
[*] LVD: Added Halo Orbit Constructor tool (Tools -> Halo Orbit Constructor menu)
[*] LVD: Performance improvements to frame conversions.
[*] LVD: GA task list area now has a search box.
[*] LVD: Formal continuity constraints are replaced with state comparison constraints for position, velocity, and time.
[*] LVD: Event termination conditions now have ref frame awareness.
[*] LVD: Halo Orbit Constructor now shows arrival/departure transfer orbits too.
[*] LVD: Event actions can now be executed before or after propagation on events.
[*] LVD: Constraints can now be evaluated at either the initial state or final state of an event.  Same goes for the state comparison constraints and the node of the comparison event.
[*] Converted a whole bunch of the standalone analysis tools (MFMS, RMS, OTBOC, etc) over to the App Designer framework.
[*] Celestial bodies can now be propagated using numerical integration in addition to two body propagation.
[*] LVD: Added an Open Recent Mission item to File menu
[*] LVD: Migrated main UI and numerous other UIs to App Designer framework.  There are still a number of LVD UIs that still need to be migrated, but this is a start.
[*] LVD: Plotting state logs should now be a bit faster due to updated frame rotation behavior.
[*] Added UI progress bars when opening all tools from main KSPTOT UI.
[*] LVD: Major change to the Set Kinematic State action and the associated GUI.  You can now set the states of the individual vehicle components, including stages, engines, tanks (and their associated tank masses!), electrical powers sources, sinks, and storage (including battery state of charge).
[*] Astrodynamics Tools UI migrated to App Designer framework
[*] LVD: Edit Event UI migrated to App Designer framework.
[*] LVD: Edit Event UI now has buttons to cycle back and forth through the events list.
[*] LVD: Edit Event Termination Condition UI migrated to App Designer framework.
[*] LVD: Non Sequential Event UI migrated to App Designer framework.
[*] LVD: Plugins can now be used as objective functions, constraints, and graphical analysis output.
[*] LVD: All UIs should now render centered on the screen.
[*] LVD: Double clicking an available task in GA now adds it to the list of tasks.
[*] LVD: Outputting the propagation time to console now includes a breakdown of time needed for propagation and actions.
[*] LVD: Missing LVD cases don't show up in the recent cases list (File menu) anymore.
[*] Numerous bug fixes and performance enhancements, especially in LVD.



KSP Trajectory Optimization Tool is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 United States License.

Edited by Arrowstar
KSP TOT v1.6.8 release
Link to comment
Share on other sites

Hey, you're back. Didn't notice the recent activity in your old thread, whoops.

For those of us who have Matlab, could you put up your source on Github or similar? Besides the needing the MCR deployment issue, I'm glad you switched to a language I can read.

So if you're going for a higher-featured version of Alexmun's Javascript porkchop plotter, you may have noticed he has a 2-burn transfer mode using an ecliptic-projection initial ejection burn and a mid-course plane change, that actually ends up noticeably more efficient in some cases (take a look at the first Dres transfer for example).

And if you don't have access to Mac or Linux machines with Matlab on them, I could possibly help out there.

Edited by tavert
Link to comment
Share on other sites

Ah, source code and licensing, two things I forgot about. Whoops! I will package source with my application executable (would rather not put it up on Github) tonight. I'll also get a license together tonight and package that in as well. Thanks for the reminder. :)

Yes, testing on Linux and Mac would be appreciated as I have no access to those platforms. However, my plan is still to only formally support Windows for major issues because I have no means of verifying the code on any other platform, and debugging on an OS you don't have is a pain. :)

I know the MCR is big, but once you install it, you never have to do so again. That's why I package the program separately, so you don't have to keep downloading to get updates. :)

Have you had a chance to try the application yet? I'd like to nail down my existing functionality before I move on to other methods. :)

Link to comment
Share on other sites

I'm a little low on hard drive space to install MCR just for this, so haven't tried running it yet. I'd rather run it inside Matlab so I can profile, debug, maybe use it programmatically, so if you put up m files I'll probably look at it that way.

Link to comment
Share on other sites

I've updated the application to version 0.2. (The URL location of the KSP TOT package remains the same, however.) This update is primarily focused on providing additional information for analyzing departure orbits from a particular planet. I've provided a new dialog box that is used for this purpose:


This is accessed by computing a porkchop plot and then tapping the "compute departure orbit" information. Enter the information in the box that comes up and away you go. Protip: in this dialog box there is a button labeled "Select Departure/Arrival Date." If you tap this and then click on the porkchop plot you previously generated, it will fill in the departure/arrival times with the point you clicked on the plot (so aim for somewhere blue!).

As usual, feedback and comments are always welcome and requested. Please let me know what you think!

Edited by Arrowstar
Link to comment
Share on other sites

I took a little time tonight to work on two aspects of the code that needed attention. First, I added context menus to the time entry fields on both the main GUI and the departure calculation GUI. If you right click those fields, you'll be presented with an option to enter date/times as year/day/hour/minute/second combinations exactly as they are shown in KSP. This should make working with those fields much easier.

Second, I did some validation of the calculations. I must say, I am pleasantly surprised by just how close I got. A quick screenshot of my results:


The main thing to note is that by entering the burn values into MechJeb's node editor, I was able to get the targeted intercept with Duna. I had to eyeball the true anomaly of the burn, of course, and use MechJeb to adjust it until I was close enough. That didn't pose much of a problem, though, and was quite easy. I did notice that the flight time was a bit different from what I predicted, but I put that down to my orbit and departure time not being exactly entered into KSP TOT. It was within a few days, which is "close enough" in my book.

I'll probably try a trip to Eeloo tomorrow as another form of validation. Since it's inclined, I expect it will make a more interesting challenge.

Thoughts? :)

Link to comment
Share on other sites

I've completed another update to the code and updated the ZIP archive containing the relevant files in the first post. Changes includes:

  • inclusion of basic computational options, accessible from Edit->Options,
  • fixed 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.

My test with Eeloo yesterday went well. I've noticed that occasionally to get an intercept you need to adjust the departure time by +/- a few fractions of a second. The smaller the SOI you're aiming for (and Eeloo's is small), the more likely it is you'll need to adjust the departure time. This is to account for the fact that the patched conics assumption assumes that the SOIs of the body you're leaving and arriving at are very small (essentially 0 volume), whereas in reality they do have some size. Also, you never truly depart at the exact moment you planned to, so error creeps in there as well.

Last major item of business is input checking. Right now you can enter anything into any GUI box and it'll try to work with it. This obviously is not good. I'll fix this up tomorrow most likely.

Really now, the functionality is all there and working as far as I can tell. What I really need are testers and feedback. Anyone game? I can't offer much except my appreciation and thanks in the program's future README, but any help would be appreciated. :)

Edited by Arrowstar
Link to comment
Share on other sites

Hi there!

You can use the tool now, it's ready to go. :) I'm going to make some updates today w.r.t. input error checking and a Secret Feature I've thought about adding since I started using the tool myself. Should make it even more useful to use. :)

I guess I'm a bit confused: there is a standalone executable (no need to run the MATLAB .m files by themselves). Unless you're talking about needing to grab and install the MCR package? In that case, no, sadly, the MCR must be installed separately. It's a large package, unfortunately, but you only have to install it once. I don't want to package them together because it will make updating to a new version of KSP TOT more painful (having to re-download the MCR each time would suck). That's why I leave it as two separate packages.

Do you have any suggestions on how I could simplify the install process for users?

Link to comment
Share on other sites

Hmmm, it seems I should hold off on commenting until I have a better understanding of what's going on. As it stands this looks like a wonderful tool, and I'd like to congratulate you and thank you for giving us the chance to use it.

As for suggestions... is there a way to have the program automatically download the needed files on first run?

I imagine most people who come across this are going to be trying to find a tool that simplifies their playing experience. While giving them a strong planning tool is great, many may not see past the hurdle of downloading multiple files as it feels like making things more complicated instead (I know I was putting off downloading it for this very reason). Would your program need everything found in the MCR package? Maybe it could contain just the files it needs? As it stands I get the impression that I need to install this big bulky complex thing, to be able to use this little, simple tool that would make my life easier.

I'll go ahead and go through the installations and try this out before I say anything else.

Edit one: Just downloading the two files heightens my impressions. While your package downloaded in under 5 seconds, I still have 26 minutes left on MCR, no doubt with a lengthy install process in store when it's done. It makes me wonder just how much of this download your program will actually use, and how much will be wasted space? I know that I'll probably never use the compiler aspects of the file I'm downloading.

Edited by aquilux
Link to comment
Share on other sites

Thanks for the feedback.

So here's the thing: I didn't come up with or put together the MCR. The nice folks over at The MathWorks developed it as a way for people like me (who write awesome MATLAB code) to distribute products to people without MATLAB. I don't have any control over what goes into the MCR, sadly. It's large size is an outstanding issue that people have complained about to The MathWorks developers.

I wish I could have my application download the file at first run. However, since the application requires the MCR to run, having it try to download and run the MCR would be a bit of a catch-22. :)

That said, you are correct in noting that most of the features in the MCR are features that my application doesn't use. (In fact, all I really need is access to the core MATLAB runtime evnviroment plus the optimization toolbox.) This is something we MATLAB developers have complained about, but like I said, there's not much I can do about it. Some type of runtime library is needed to execute MATLAB code, and unless someone comes up with a solution to customize the MCR package at compile time, we're stuck with the all-inclusive solution we've got now. I wish I could do something about it. :(

I would urge you (and everyone else) to not give up on this useful little application just because of file size. I realize it's big, but if you're interested in working with the most accurate and detailed maneuver planning software on the KSP market, stick with it and you won't be disappointed. :)

Link to comment
Share on other sites

Hi The Lone Wolfling,

And that's perfectly fine. I realize that it's a bit big and not everyone has the bandwidth and time to download the MCR. For those people, there are a plethora of other tools out there that offer approximations to what my code can do. No worries. :)

Link to comment
Share on other sites

I've updated the application 0.4. As the change log in the OP indicates, the following has been added:

  • 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.

The second point is pretty big. What this means is that all you have to do is enter the departure time you want, right click the arrival time box, select the optimization option, and wait a few seconds. It's pretty handy. I've checked the results against the porkchop plots and they look pretty good, minor variance in optimizer results aside. It's a feature I wanted myself and really like now that I have it.

To demonstrate:

Right click on the arrival time box, select optimize option.


Wait a bit...


Voila! The best time is computed and input into the box. That's all there is to it. :)


As always, comments, suggestions, and bug report welcome.

Link to comment
Share on other sites

Can it be used to plan gravitty-assisted voyager like missions? Like Kerbin -> Eve -> Duna etc flybys?

Yes that is a planned feature. I have the math already worked out, just need to implement. It's probably a few releases off yet. Give me a week or two. :)

Link to comment
Share on other sites

Yesterday I put together a new feature in the Departure Information window: a map of your orbital trajectory during transfer orbit from one body to another.


It does two things: first, it shows you that the trajectory you're on actually does what you want it to (namely, finds the target body); and second, it can be used while playing the game to verify you're on the right path.

I realize at the moment it's a bit sparse. I could use some suggestions for additional information to annotate the map with. Anyone have any thoughts?

Link to comment
Share on other sites

I could use some suggestions for additional information to annotate the map with. Anyone have any thoughts?

Apoapsis, periapsis, ascending and descending nodes (All for the transfer orbit). Possibly also something showing where the target is on the initial burn. And maybe a "side-on" view, where the origin's orbit (Kerbin in this case) shows up as a horizontal line, and you can see the transfer orbit and the target's orbit.

Also, I finally downloaded the runtime, and this tool looks great!

Another feature request: could you add a way to search for the best departure time given a target arrival time? And/or a way to find the earliest arrival time possible given a certain amount of delta-v? And/or a way to find the best global delta-v. Also, it would be nice if the tooltip pre-populated the departure burn parameters.

One final request for now: would it be possible to either define a custom color gradient for the porkchop plot, and/or compress the low end? Currently the center of the porkchop plots are one big blob, even when there's a significant difference (.99 - 1.9km/s for departure delta-v to Duna, for example.)

Edited by The Lone Wolfling
Link to comment
Share on other sites

Apoapsis, periapsis, ascending and descending nodes (All for the transfer orbit). Possibly also something showing where the target is on the initial burn. And maybe a "side-on" view, where the origin's orbit (Kerbin in this case) shows up as a horizontal line, and you can see the transfer orbit and the target's orbit.

Sounds good, thanks for the suggestions. I can probably add the apses and the nodes. The location of the target at the burn time is also very doable. I shouldn't need to show another view, since the transfer orbit map is actually 3D. I just didn't show that. :)

Also, I finally downloaded the runtime, and this tool looks great!

Thanks! Glad you took the jump and downloaded it. It is a fun little tool, yep. :)

Another feature request: could you add a way to search for the best departure time given a target arrival time?

Certainly. I'll add this to the feature list of 0.5. This isn't something I'd usually look for because I usually pick my departure and go from there. But this could be useful too. Great suggestion!

And/or a way to find the earliest arrival time possible given a certain amount of delta-v?

Also possible and I can see the utility of this. Sounds good! Added to 0.5 feature list.

And/or a way to find the best global delta-v.

This is actually the point of the porkchop plot, so I would suggest looking at that. :)

Also, it would be nice if the tooltip pre-populated the departure burn parameters.

Good suggestion. I'll do this tonight. EDIT: Nevermind, finished it. If you have more than one data tip on the plot, it will take the last tooltip you created. Coming in v0.5.

One final request for now: would it be possible to either define a custom color gradient for the porkchop plot, and/or compress the low end? Currently the center of the porkchop plots are one big blob, even when there's a significant difference (.99 - 1.9km/s for departure delta-v to Duna, for example.)

This is a bit trickier, but I'll see what I can do. I'm not sure how capable MATLAB is in this regard. I'll investigate.

Thanks for the great suggestions! :)

Edited by Arrowstar
Link to comment
Share on other sites

This is a pretty cool tool, I can't wait to try it out! :)

Would it be possible to get some measurement of the sensitivity of the transfer orbit with respect to errors in the departure hyperbola? Such as, say, how sensitive the parameters for that orbit and for the intercept with the target are to changes in the argument of periapsis, departure time, eccentricity, inclination, closest approach, etc. This would be very useful for launching large, low-TWR vehicles to other planets and trying to figure out how much piloting errors could interfere with getting a proper transfer orbit.

I'd also suggest adding Ascending and Descending Nodes, argument of periapsis, etc. to the target orbits (using Kerbin's orbit as a datum plane). Perhaps you could make the parts of the orbit above the datum plane solid lines and below that plane dashed lines for added clarity?

Link to comment
Share on other sites

This is actually the point of the porkchop plot, so I would suggest looking at that. :)

I am aware of this.

However, currently there is no way to automatically select the best global trajectory, and trying to select it manually by trial and error gets tedious, especially given the gradient issues.

Link to comment
Share on other sites

This is a pretty cool tool, I can't wait to try it out! :)

Would it be possible to get some measurement of the sensitivity of the transfer orbit with respect to errors in the departure hyperbola? Such as, say, how sensitive the parameters for that orbit and for the intercept with the target are to changes in the argument of periapsis, departure time, eccentricity, inclination, closest approach, etc. This would be very useful for launching large, low-TWR vehicles to other planets and trying to figure out how much piloting errors could interfere with getting a proper transfer orbit.

I'd also suggest adding Ascending and Descending Nodes, argument of periapsis, etc. to the target orbits (using Kerbin's orbit as a datum plane). Perhaps you could make the parts of the orbit above the datum plane solid lines and below that plane dashed lines for added clarity?

Thanks! Please let me know what you like and dislike so I can make improvements as necessary. :)

It might be possible for me to perform some sort of sensitivity analysis. To be honest, though, I guess I don't see the purpose. True, it would show you when your "long" burn might significantly change your answer, but this is KSP... aren't we all just going to go for it anyway? :P

I've added the apses to the orbit transfer map tonight. I'll have to think about the nodes, because you need to pick the correct plane for them to make sense. There's a fair bit of thought, design, and math that needs to go into plotting those. Honestly, they will probably come about later, if only because they're a very small feature that requires a lot of work.

Thanks for the suggestions! I'd be happy to hear more if/when you have them. :)

I am aware of this.

However, currently there is no way to automatically select the best global trajectory, and trying to select it manually by trial and error gets tedious, especially given the gradient issues.

Indeed. I apologize, I wasn't intending to come across as cheeky. It just struck me that what you were asking for is exactly what the porkchop plot is for in the first place. :)

In any event, I think you're right and some sort of indication of an optimized departure/arrival date/time is a good idea. Tonight I wrote the code to actually perform the optimization. It's just a matter of how to let the user call that. Right now I have it tied to the porkchop plot generator method: it generates the plot, then finds the optimal point within the plot. (Or, really, within 1 synodic period of the best point in the porkchop plot.) Do you have any suggestions on how I might present this "optimized" information to the user? I'm not sure I can use the data cursor thing I've got showing the best point computed for the porkchop plot, but I'll investigate anyway. Assuming that's a no-go, any thoughts? I'm thinking I either write it to the text box below the porkchop plot or bring up a pop-up box with the times in it. Would either of those be acceptable?

Time markers, as seen here.

Thanks for the suggestion! I'll consider it, though I have to admit, the plot is getting pretty cluttered with just the orbits and transfer orbit periapse/apoapse. We'll see. :)

Some updates:

I implemented the following requested features tonight:

  • Find optimal departure for given arrival;
  • Add transfer orbit periapse & apoapse to the orbit plot; and
  • Find optimal arrival/departure on a generated porkchop plot (partial: result of optimization run needs to be displayed to user still).

Tomorrow's agenda is the following request:

  • Find earliest arrival for provided delta-v. Btw, I'm assuming that the delta-v provided is for the full round trip: departing one place and arriving at another. If I just use the departure dv, that could make things a bit optimistic in some cases. Do you guys have any thoughts on this? Which delta-v (the departure + arrival delta-v or just the departure delta-v) would be more intuitive for you?

I'm also going to rewrite the Lambert solver at some point using the code I gave to R4m0n for MechJeb (yep, that's my Lambert solver) as a base. The current solver I have now is fine, but it seems to die at odd times and I'm sick of troubleshooting it. :)

Thanks for the great suggestions/ideas, guys. Keep them coming! If I have time tomorrow night, I'll put out the v0.5 (pre-)release for people to play with. :)

Link to comment
Share on other sites

Do you guys have any thoughts on this? Which delta-v (the departure + arrival delta-v or just the departure delta-v) would be more intuitive for you?

Allow either via a toggle setting. For destinations with atmospheres, departure only makes the most sense, but for destinations without, you care about the total.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Create New...