Jump to content

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


Recommended Posts

Great, let me know how it works! Actually, if you wouldn't mind, could you post the contents of bodies.ini file you create here along with the name or names of the mods(s) you use in KSP that change the Kerbol system? I'd like to see how it performs on something other than stock KSP and RSS. :)

Link to comment
Share on other sites

[Sun]
epoch = 0.000000
sma = 0.000000
ecc = 0.000000
inc = 0.000000
raan = 0.000000
arg = 0.000000
mean = 0.000000
gm = 84958194620.955994
radius = 584227.280000
atmoHgt = 700000.000000
rotperiod = 262906.828000
rotini = 0.000000
bodycolor = gray
canBeCentral = 1
canBeArriveDepart = 0
parent =
parentID = -1
name = Sun
id = 0

[Kerbin]
epoch = 0.000000
sma = 87038977.638400
ecc = 0.000000
inc = 0.000000
raan = 0.000000
arg = 0.000000
mean = 179.908754
gm = 144742.211207
radius = 3840.000000
atmoHgt = 91.182367
rotperiod = 86400.000000
rotini = 90.000000
bodycolor = gray
canBeCentral = 1
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Kerbin
id = 1

[Mun]
epoch = 0.000000
sma = 76800.000000
ecc = 0.000000
inc = 0.000000
raan = 0.000000
arg = 0.000000
mean = 97.402828
gm = 2672.262033
radius = 1280.000000
atmoHgt = 0.000000
rotperiod = 348298.525539
rotini = 230.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Kerbin
parentID = 1
name = Mun
id = 2

[Minmus]
epoch = 0.000000
sma = 300800.000000
ecc = 0.000000
inc = 6.000000
raan = 78.000000
arg = 38.000000
mean = 51.566200
gm = 72.445504
radius = 384.000000
atmoHgt = 0.000000
rotperiod = 80399.005000
rotini = 230.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Kerbin
parentID = 1
name = Minmus
id = 3

[Moho]
epoch = 0.000000
sma = 33684085.145600
ecc = 0.200000
inc = 7.000000
raan = 70.000000
arg = 15.000000
mean = 179.908754
gm = 6916.266164
radius = 1600.000000
atmoHgt = 14.000000
rotperiod = 440000.000000
rotini = 190.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Moho
id = 4

[Eve]
epoch = 0.000000
sma = 62929181.081600
ecc = 0.010000
inc = 2.100000
raan = 15.000000
arg = 0.000000
mean = 179.908754
gm = 335386.876645
radius = 4480.000000
atmoHgt = 127.655320
rotperiod = 113490.088000
rotini = 0.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Eve
id = 5

[Duna]
epoch = 0.000000
sma = 132647393.689600
ecc = 0.051000
inc = 0.060000
raan = 135.500000
arg = 0.000000
mean = 179.908754
gm = 12338.878090
radius = 2048.000000
atmoHgt = 54.709422
rotperiod = 102385.826000
rotini = 90.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Duna
id = 6

[Ike]
epoch = 0.000000
sma = 20480.000000
ecc = 0.030000
inc = 0.200000
raan = 0.000000
arg = 0.000000
mean = 97.402828
gm = 762.368202
radius = 832.000000
atmoHgt = 0.000000
rotperiod = 160886.087811
rotini = 0.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 0
parent = Duna
parentID = 6
name = Ike
id = 7

[Jool]
epoch = 0.000000
sma = 440150786.048000
ecc = 0.050000
inc = 1.304000
raan = 52.000000
arg = 0.000000
mean = 5.729578
gm = 21053297.415325
radius = 38400.000000
atmoHgt = 182.364750
rotperiod = 75894.664000
rotini = 0.000000
bodycolor = gray
canBeCentral = 1
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Jool
id = 8

[Laythe]
epoch = 0.000000
sma = 173977.600000
ecc = 0.000000
inc = 0.000000
raan = 0.000000
arg = 0.000000
mean = 179.908754
gm = 80432.969269
radius = 3200.000000
atmoHgt = 72.945898
rotperiod = 99181.755357
rotini = 90.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Jool
parentID = 8
name = Laythe
id = 9

[Vall]
epoch = 0.000000
sma = 276172.800000
ecc = 0.000000
inc = 0.000000
raan = 0.000000
arg = 0.000000
mean = 51.566200
gm = 8521.045112
radius = 1920.000000
atmoHgt = 0.000000
rotperiod = 198702.481320
rotini = 0.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Jool
parentID = 8
name = Vall
id = 10

[Bop]
epoch = 0.000000
sma = 822400.000000
ecc = 0.235000
inc = 15.000000
raan = 10.000000
arg = 25.000000
mean = 51.566200
gm = 101.991904
radius = 416.000000
atmoHgt = 0.000000
rotperiod = 1021276.658277
rotini = 230.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Jool
parentID = 8
name = Bop
id = 11

[Tylo]
epoch = 0.000000
sma = 438400.000000
ecc = 0.000000
inc = 0.025000
raan = 0.000000
arg = 0.000000
mean = 179.908754
gm = 115823.211921
radius = 3840.000000
atmoHgt = 0.000000
rotperiod = 396400.576796
rotini = 0.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Jool
parentID = 8
name = Tylo
id = 12

[Gilly]
epoch = 0.000000
sma = 201600.000000
ecc = 0.550000
inc = 12.000000
raan = 80.000000
arg = 10.000000
mean = 51.566200
gm = 0.339403
radius = 83.200000
atmoHgt = 0.000000
rotperiod = 67236.895000
rotini = 5.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 0
parent = Eve
parentID = 5
name = Gilly
id = 13

[Pol]
epoch = 0.000000
sma = 1151296.000000
ecc = 0.170850
inc = 4.250000
raan = 2.000000
arg = 15.000000
mean = 51.566200
gm = 29.596661
radius = 281.600000
atmoHgt = 0.000000
rotperiod = 1691609.026567
rotini = 25.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Jool
parentID = 8
name = Pol
id = 14

[Dres]
epoch = 0.000000
sma = 261371828.499200
ecc = 0.145000
inc = 5.000000
raan = 280.000000
arg = 90.000000
mean = 179.908754
gm = 882.022247
radius = 883.200000
atmoHgt = 14.000000
rotperiod = 74619.032000
rotini = 25.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Dres
id = 15

[Eeloo]
epoch = 0.000000
sma = 576760448.000000
ecc = 0.260000
inc = 6.150000
raan = 50.000000
arg = 260.000000
mean = 179.908754
gm = 3054.588295
radius = 1344.000000
atmoHgt = 60.000000
rotperiod = 55799.642000
rotini = 25.000000
bodycolor = gray
canBeCentral = 0
canBeArriveDepart = 1
parent = Sun
parentID = 0
name = Eeloo
id = 16

There ya go! I'm using Regex's 6.4X RSS.

Also, if you don't mind me asking, what's the recommended method for planning missions to satellites(moons, stations) with KSPTOT? I'm looking to get DV and travel time.

Thanks for the info!

Edited by dlrk
Link to comment
Share on other sites

Thanks! Could you edit your post and put the bodies file contents in CODE tags? That will save some vertical screen space. :)

The recommended procedure for going to satellites/moons is as I described above:

Your best bet for finding a good initial guess for burns is to use the Rendezvous Maneuver Sequencer. It's in the Tools -> Maneuver Planning menu. Basically, treat the Kerbin Orbit -> Minmus mission as a rendezvous between two spacecraft and not a transfer from one planet to another. It works, promise! :) Let me know if you need any help using it. :)

Let me know if that helps or you'd like some more clarification. :)

Link to comment
Share on other sites

I am just starting to read this whole thread, so I apologize if this has been mentioned before (or if there is already a convention I am not aware of), but would it be possible to add some kind of indication to the departure orbit/flyby orbit graphs that let us see at a glance where the maneuver should be executed.

A vector pointing towards the central body or a shading of the planet drawn on the graph so the day/night sides are obvious would be nice...

Link to comment
Share on other sites

Believe it or not, the information you need is already in there. :) Everywhere that I specify maneuver delta-v vectors, I also specify the maneuver true anomaly. The true anomaly is the angle from periapse to the spacecraft position in orbit. True anomaly of zero means burn at periapse, true anomaly of 90 degrees means burn half way between periapse and apoapsis (ascending), true anomaly of 180 degrees means burn at apoapsis, etc.

I think most applications also show maneuvers with a red line along the burn vector at the point in the orbit where the burn takes place. Maybe look for that too. :)

Does that help? :)

Link to comment
Share on other sites

I think most applications also show maneuvers with a red line along the burn vector at the point in the orbit where the burn takes place. Maybe look for that too.

It sometimes appears on the far side of the planet and people may not know how to rotate the view to see it?

Link to comment
Share on other sites

I agree the rotate button is kinda far away under the menus. However, that's where matlab puts it sadly. Once you learn though it's not too bad. It is, however, just a matter of getting to that point. And that's why I need to write documentation!:)

Link to comment
Share on other sites

Alright I played around with the Rendezvous Maneuver Sequencer and I'm not sure if what I'm doing is correct. First, I left the initial orbit state values mostly alone, as a 100km parking orbit is good. I took notice of the warning about 0 inc/ecc so I made them 0.01 as I know I can get those values in the game. Now, I'm sending a SCANSat probe so for best results on the instruments I initially need an orbit 273.963km above Minmus with 44.41 degrees inclination. I used the drop-down to get Minmus details in the final orbit box and added the desired altitude to the 47,000km orbital altitude of Minmus as well as the radius, so 47,000 + 60 + 273.963 = 47333.963km. I made the ecc of the final orbit 0.01 and then placed the UT from my save file into the Initial Epoch (didn't change any of the Epoch values in the orbital boxes).


---------------------------------------------
Semi-major Axis = 57009.812 km
Eccentricity = 0.98796
Inclination = 2.282 deg
Right Ascension of AN = 233.353 deg
Argument of Periapse = 193.240 deg
---------------------
Departure True Anomaly = 346.559 deg
Arrival True Anomaly = 190.486 deg

Transfer Orbit Injection Burn
(Relative to initial orbit)
---------------------------------------------
Total Delta-V = 0.98123 km/s
Prograde Delta-V = 889.54579 m/s
Orbit Normal Delta-V = -125.93240 m/s
Radial Delta-V = -394.54381 m/s
---------------------
Burn True Anomaly = 53.15262 deg
Burn Time Past Peri. = 284.14476 sec
Burn Time Before Peri. = 1673.98368 sec
Initial Orbit Period = 1958.12844 sec
Burn UT = 21794253.63778 sec

Final Orbit Injection Burn
(Relative to transfer orbit)
---------------------------------------------
Total Delta-V = 0.37665 km/s
Prograde Delta-V = -263.78724 m/s
Orbit Normal Delta-V = -196.13650 m/s
Radial Delta-V = 183.89011 m/s
---------------------
Burn True Anomaly = 165.95529 deg
Burn Time Past Peri. = 53749.14637 sec
Burn Time Before Peri. = 1385442.14342 sec
Initial Orbit Period = 1439191.28979 sec
Burn UT = 23134547.39139 sec
Transfer Orbit about Kerbin

I looked up the other values like RAAN and Mean Anom, Arg Peri, etc - but I don't really understand how to apply any changes to them to maybe allow for the sequencer to generate a better result.

Link to comment
Share on other sites

Welp, time to launch a new probe and get my friends to roleplay Mission Control...

Hey, sounds good! Please feel free to post some screenshots of your mission, both from the pilot's chair and from the mission control folks. And if you run into any issues, do let me know. :)

Link to comment
Share on other sites

Alright I played around with the Rendezvous Maneuver Sequencer and I'm not sure if what I'm doing is correct. First, I left the initial orbit state values mostly alone, as a 100km parking orbit is good. I took notice of the warning about 0 inc/ecc so I made them 0.01 as I know I can get those values in the game. Now, I'm sending a SCANSat probe so for best results on the instruments I initially need an orbit 273.963km above Minmus with 44.41 degrees inclination. I used the drop-down to get Minmus details in the final orbit box and added the desired altitude to the 47,000km orbital altitude of Minmus as well as the radius, so 47,000 + 60 + 273.963 = 47333.963km. I made the ecc of the final orbit 0.01 and then placed the UT from my save file into the Initial Epoch (didn't change any of the Epoch values in the orbital boxes).


---------------------------------------------
Semi-major Axis = 57009.812 km
Eccentricity = 0.98796
Inclination = 2.282 deg
Right Ascension of AN = 233.353 deg
Argument of Periapse = 193.240 deg
---------------------
Departure True Anomaly = 346.559 deg
Arrival True Anomaly = 190.486 deg

Transfer Orbit Injection Burn
(Relative to initial orbit)
---------------------------------------------
Total Delta-V = 0.98123 km/s
Prograde Delta-V = 889.54579 m/s
Orbit Normal Delta-V = -125.93240 m/s
Radial Delta-V = -394.54381 m/s
---------------------
Burn True Anomaly = 53.15262 deg
Burn Time Past Peri. = 284.14476 sec
Burn Time Before Peri. = 1673.98368 sec
Initial Orbit Period = 1958.12844 sec
Burn UT = 21794253.63778 sec

Final Orbit Injection Burn
(Relative to transfer orbit)
---------------------------------------------
Total Delta-V = 0.37665 km/s
Prograde Delta-V = -263.78724 m/s
Orbit Normal Delta-V = -196.13650 m/s
Radial Delta-V = 183.89011 m/s
---------------------
Burn True Anomaly = 165.95529 deg
Burn Time Past Peri. = 53749.14637 sec
Burn Time Before Peri. = 1385442.14342 sec
Initial Orbit Period = 1439191.28979 sec
Burn UT = 23134547.39139 sec
Transfer Orbit about Kerbin

I looked up the other values like RAAN and Mean Anom, Arg Peri, etc - but I don't really understand how to apply any changes to them to maybe allow for the sequencer to generate a better result.

Ah, okay, sorry for the lack of clarify on my part. Don't edit the Minmus orbit. What you're going to do is use RMS to get the burn sequence to go to Minmus as if Minmus was a small spacecraft to rendezvous with. You'll get two burns out of RMS as you did above. Take the UT of the first burn along with it's prograde/normal/radial components and throw it into Mission Architect. Do the same with the second burn, but make the coast a coast to Minmus periapsis. Your MA mission script should look like this:

Initial State - Same initial orbit as used in RMS

Coast to UT of Burn 1

Burn 1

Coast to Minmus periapsis

Burn 2

Coast to periapsis

Okay, now, your burn plan you got out of RMS should get your really close to Minmus. You then optimize the Burn delta-v vectors (don't optimize the coast UTs) to achieve the desired orbit around Minmus. Add in some constraints for SMA, eccentricity, inclination, and the like, and use the "minimize eccentricity" objective function to start (switch to others if it doesn't work well).

I'll see if I can't provide an example in a few minutes that you can follow along with. :)

Link to comment
Share on other sites

Right, okay, take a look at my MA mission plan here:

Kerbin to Minmus

Frankly, going to Minmus is pretty easy for MA to figure out, so if you even just give it a somewhat close guess for the first burn, it'll figure out the encounter on its own.

Let me know if you have any questions! (And give that link some time to upload if it doesn't work immediately, it's on my dropbox...)

Link to comment
Share on other sites

I may have detected a minor issue. KSPTOT MCC RealTime System should let the user choose any vessel, from the selection dropdown where all vessels in KSP are listed (and, BTW, really everything orbiting in game is listed, including debris and asteroids). But, after a vessel is selected and data is fetched (from KSPTOT Connect), it shows that data is actually about the loaded vessel that KSP is flying. So, the selection dropdown in the MCC has no effect.

Link to comment
Share on other sites

Thanks for the report! I will investigate this weekend. Btw, were you doing anything unusual with KSP TOT when you noticed it?

Probably something unusual, yes. Apart from using my so-heavily modded game install (so any kind of conflicts may emerge due to other mods), I had an asteroid orbiting Kerbin under control in the flight window while I opened the MCC and tried to retrieve orbital data for a probe I wanted to send to Moho (had the solution with a direct transfer, the intention was to use the orbital data for the inital orbit while computing the departure burn). Probably we should not be able to "fly" asteroids. In case the above is not clear, that asteroid was a captured one (was detached after being redirected); normal asteroids aren't "flyable".

Tried the MCC feature with a normal ship, even not the one I want to retrieve data about, and all data is retrieved as it should. So, probably just a warning "don't fly asteroids" would be enough :).

Anyway, while trying to isolate this issue, I found something else. This time with an almost clean KSP install, so quite difficult mods have any influence.

1) Again using orbital data in MCC from one ship while flying another in KSP. Orbital data is retrieved fine, but then when I want to upload the maneuver found by KSPTOT back to KSP, it is uploaded with the vessel being flown, not the one the data retrieved was about (of course I notice there is no way to select a specific vessel while uploading a maneuver to KSP, so probably this is just another thing to warn the users about, and nothing more).

2) A word from you about how to set-up the upload maneuver correctly may be a blessing. The "Upload Maneuver to KSP" window has the option to select the Time Type (UT or Time past Periapsis). It defaults to UT. I found the uploaded maneuvers being wildly wrong in KSP if that option is "UT", but closer if "Time past Periapsis" (afterwards, noticed the DV Maneuver Information panel in the Departure Burn window actually uses "Time past Periapsis"). Still, the uploaded maneuver in KSP is not exactly right (KSP does not show a rendezvous), so I may be missing something else.

Link to comment
Share on other sites

Hi! I found a rather severe Bug in KSPTOTConnect, probably with the maneuver node uploader tool.

I used KSPTOT to calculate a departure burn, and uploaded it as a maneuver node using the KSPTot plugin. I then left the ship to do other things. When I came back to it, it "changed".

This is how my ship looked before the upload: VIYCSlL.png

This is how my ship looks now: ID0H8VC.png

As you can see, "things" are missing.

This happend with another ship as well, where I uploaded a maneuver.

In case you need the persistent.sfs files:

-before: https://dl.dropboxusercontent.com/u/1414175/persistent-before.sfs

-after: https://dl.dropboxusercontent.com/u/1414175/persistent-after.sfs

The ships in question are called

- "Moho Science Vessel"

- "IF 2 (Eve) Ship"

Link to comment
Share on other sites

Hi! I found a rather severe Bug in KSPTOTConnect, probably with the maneuver node uploader tool.

I used KSPTOT to calculate a departure burn, and uploaded it as a maneuver node using the KSPTot plugin. I then left the ship to do other things. When I came back to it, it "changed".

...

As you can see, "things" are missing.

Arrowstar, unfortunately I have to confirm the above. I also found ships that had a maneuver uploaded from KSPTOT horribly broken (would say, "krakenized"). Was still investigating if this other issue may have been tied to other things, but till now the only commonality found is to have had the uploaded maneuver.

Link to comment
Share on other sites

Arrowstar, unfortunately I have to confirm the above. I also found ships that had a maneuver uploaded from KSPTOT horribly broken (would say, "krakenized"). Was still investigating if this other issue may have been tied to other things, but till now the only commonality found is to have had the uploaded maneuver.

Same with me. I find upload maneuver nodes annoying as heck. Only MechJeb has been able to run one anywhere close to the numbers from KSPTOT. It screws around with ships and nodes.

Link to comment
Share on other sites

Arrowstar, unfortunately I have to confirm the above. I also found ships that had a maneuver uploaded from KSPTOT horribly broken (would say, "krakenized"). Was still investigating if this other issue may have been tied to other things, but till now the only commonality found is to have had the uploaded maneuver.

By the way, were you able to recover your ship? I found the first in a recent backup, but the second one was not launched yet. Any Idea how I could bring it back?

Link to comment
Share on other sites

By the way, were you able to recover your ship? I found the first in a recent backup, but the second one was not launched yet. Any Idea how I could bring it back?

After the ship is "broken" ? First time I had that issue (still unknown the cause), was with my main game. Had to reload from a quicksave done before uploading the maneuver. Then I used KSPTOT Connect with a test game, so nothing really troubling if I was losing a ship (apart having to launch another to keep testing).

So far, no way I know to recover a savegame, but I have yet to find what is actually wrong with the uploaded data. I guess could be something simple enough that could be corrected by manually editing the savegame.

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.

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