Jump to content

Finding the best ascent path for rockets


Recommended Posts

The following experiment was conducted using the Kerbal Science school of hard knocks with this two stage stock part rocket to determine the most efficient way to reach Duna orbit.

cbVMQBX.jpg

1. Straight up dawn launch to Duna orbit

2. Launch to 100+k orbit, do an escape burn, do the Duna intercept burn. (Most people use this method to achieve interplanetary intercept.)

3. Launch to 100+k orbit, then do an escape to direct Duna intercept.

The rocket used has a stock capsule, parachute, decoupler, FL-T800 fuel can, LV-N engine, decoupler. Booster stage is a single Orange fuel can and Skipper engine. Ox Stat solar panels were added to keep the capsule battery charged.

The results.

1. A straight up burn to Duna intercept left 162 units of fuel left in the FL-T800 fuel can.

2. From the 100+K orbit, it took about 913 delta V to Kerbal escape, then another 892 delta V to reach Duna intercept for a total of 1,805 delta V. That left 154 units of fuel in the FL-T800 fuel can.

3. From the 100+K orbit to direct Duna intercept only took 1165 delta V leaving 215 units of fuel in the FL-T800 fuel can, a savings of 640 delta V or 61 units of fuel for this design.

And, a bit of a surprise that a straight up launch happened to be slightly more efficient then the three step orbit, escape, Duna burn.

Most efficient launch to the other planets, go to orbit, wait for an intercept, and launch in a single burn to intercept from orbit.

Link to comment
Share on other sites

The results.

1. A straight up burn to Duna intercept left 162 units of fuel left in the FL-T800 fuel can.

2. From the 100+K orbit, it took about 913 delta V to Kerbal escape, then another 892 delta V to reach Duna intercept for a total of 1,805 delta V. That left 154 units of fuel in the FL-T800 fuel can.

3. From the 100+K orbit to direct Duna intercept only took 1165 delta V leaving 215 units of fuel in the FL-T800 fuel can, a savings of 640 delta V or 61 units of fuel for this design.

And, a bit of a surprise that a straight up launch happened to be slightly more efficient then the three step orbit, escape, Duna burn.

Most efficient launch to the other planets, go to orbit, wait for an intercept, and launch in a single burn to intercept from orbit.

In order to keep the delta V requirements low, you might want to keept the orbit around Kerbin as low as possible.

I tested your rocket with PSOPT and after some parameter-adjustments it came to an ideal ascent profile to a 100km Orbit.

Following this ascent profile, it should be possible to get into orbit with a final mass of ideally 7.098 ton.

I tried to mimic this ascent profile in KSP with your rocket and got a final mass of 6.962 tons in a 100x100km orbit, meaning a vacuum Delta-V of 4793 m/s. This should be about 150 dV more than you had left in your second scenario.

Javascript is disabled. View full album

used parameters: https://github.com/mhoram-kerbin/ksp-launch-optimizer/tree/da4e2aea5683ebad7ffdfe53eca3c94112076286

Note to self: output the terminal velocity in the graphs.

Edited by mhoram
Link to comment
Share on other sites

I had a look at the Launch Efficiency Exercise from 0.21.1 and since as far as I am aware the ship should behave in the same way, my result should be comparable.

I came to an ascent path that leaves theoretically 8.28 lit of fuel in the tank. It is at least not far from the the top entries. (Parameters)

Javascript is disabled. View full album
For handling the atmosphere cutoff you could either try a sigmoidal function (arctan, or tanh, or erf, or a logistic function - watch out for overflow though) to smooth out the small discontinuity in pressure, or make 2 assumptions: that the last staging event happens before the craft leaves the atmosphere, and the craft only leaves the atmosphere once (doesn't reach apoapsis then start falling back into the atmosphere before it gets into orbit, might happen for low TWR).

Do you have by any chance the specification for such a craft that leaves the atmosphere twice? I would like to test how it behaves in PSOPT.

Edited by mhoram
Link to comment
Share on other sites

If you don't mind a hell lot of engines and stages, I can give you my entry in the Payload Fraction Challenge. I needed to dip back to the atmosphere with it and am also curious what the optimizer will do with it. Would be fun if it skipped the last weak stage completely...

Edit: [craft file] Don't forget great deal of fuel is payload not even accessible to engines.

Payload: 99.97 t

Stage 0: 1 x X200-32 + 4 x LV-N

Stage 1: 2 x X200-32 + 2 x Radial Decoupler + 10 x Aerospike

Stage 2: 2 x X200-32 + 2 x Radial Decoupler + 10 x Aerospike

Stage 3: 2 x X200-32 + 2 x Radial Decoupler + 10 x Aerospike

Stage 4: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Stage 5: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Stage 6: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Stage 7: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Stage 8: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Stage 9: 2 x X200-32 + 2 x Radial Decoupler + 4 x Aerospike

Pure asparagus (lower stages feed higher stages)

Each engine has also cubic octagonal strut on it but I think these don't count.

Edited by Kasuha
Link to comment
Share on other sites

If you don't mind a hell lot of engines and stages, I can give you my entry in the Payload Fraction Challenge. I needed to dip back to the atmosphere with it and am also curious what the optimizer will do with it. Would be fun if it skipped the last weak stage completely...

That's why I wrote a tool that calculates the ISP of such ships automatically.

I still have to get rid of the 0-mass parts.

And 9 stages is interesting, I have to extend my system to handle that many stages - currently it is hardcoded limited to 2 and I have no experience whether PSOPT can handle 9 phases - so your rocket is a good test subject.

Although from the TWL-distribution I have a feeling that it should be possible to bring it into orbit without a dip into the atmosphere. The last stage is certainly necessary - it may be weak, but provides about 1000 dV.

Link to comment
Share on other sites

  • 2 weeks later...
If you don't mind a hell lot of engines and stages, I can give you my entry in the Payload Fraction Challenge. I needed to dip back to the atmosphere with it and am also curious what the optimizer will do with it. Would be fun if it skipped the last weak stage completely...

Finally I managed to adopt my implementation to handle an arbitrary number of stages.

So I threw your rocket in with the following stage configuration:


St Mass Fuel Thr ISP_0 ISP_V Drag
10 532488 32000 9690 380.8 395.0 0.2
9 490434 32000 8990 380.2 395.4 0.2
8 448380 32000 8290 379.6 395.9 0.2
7 406326 32000 7590 378.9 396.4 0.2
6 364272 32000 6890 377.9 397.1 0.2
5 322218 32000 6190 376.8 398.0 0.2
4 280164 32000 5490 375.5 398.9 0.2
3 229100 32000 3740 369.9 403.3 0.2
2 178036 32000 1990 355.3 415.7 0.2
1 126972 16000 240 220.0 800.0 0.2

and came up with the following launch trajectory

Javascript is disabled. View full album

Noteweorthy are:

- The ship ascends to an altitude of ~95 km before going down to 75km

- The apoapsis at the end is noticeably higher than 75km

- Beginning at an altitude of about 10-15km the Angle of attack increases steadily

- Ascent takes about 11 minutes

- Final Mass: ~1136 ton

- Thrust is nearly always at foll throttle

- PSOPT can handle that many stages

- Ascent without dipping into the atmosphere is possible

Link to comment
Share on other sites

Very interesting, thank you for the info.

The fact that it goes at full throttle probably means it could use a few more engines to be more effective. Well, it was just a guesswork after all.

113.6 t at the end with 99.9 tons of payload, four LV-N, quadcoupler and X200-32 means it had about 2,5 tons of fuel left at the end, i.e. 225 units of fuel and 275 units of oxidizer. That's quite a lot more than I had when I got it into orbit :)

At least it was the first ship where the optimizer had to close the orbit from above, if I'm not wrong.

Link to comment
Share on other sites

I'm struggling to understand what those plots mean. Kasuha's ship you'd to vertical ascent for nearly 100s, then pitch over to 40 degrees over the next 50s, dropping a little bit slower than the prograde marker (so AoA increases), then even out at 30 degrees until 300s, then slowly tilt up again. Is that right? And full throttle all the way until the final setting of the orbit.

What's gVel?

On the third plot, what are x/y/z and sum? Maybe if you excluded them it would be easier to read Pe/Ap?

In practice with low-TWR planes I'm finding that I do best with the following strategy: as soon as you run low on air, point prograde until apoapsis; then start to pitch up, roughly equal to the pitch that would avoid changing the Ap. I thought this was an improvement because it meant you could push up periapsis more quickly on your way to the apoapsis, and thus had less negative vertical speed to fight after apoapsis, but you're showing that rockets do better by maintaining a high AoA. So maybe it's just helping for jets because intakes get more air at lower AoA.

Link to comment
Share on other sites

I know that the graphs are a bit technical ... still trying to figure out what are the important aspects to include.

So far, the first graph "control" shows the highlights:

- red line: thrust in % of full throttle

- green line: pitch in degrees

You figured out the graph quite right, but the orientation should be lower than the prograde marker in the first ~120 sec.

gVel is the pitch of the velocity-vector relative to the earth-rotation (aka surface-prograde ... should find a better name than GroundVelocity).

For the simulation I use a 3D-coordinate-system with the x-coordinate pointing to the Kerbal Space Port at latitude -0.00169 rad and longitude 0, y-coordinate pointing to the east of Kerbal Space Port and z pointing to the north.

In the third plot these coordinates show up and sum is the distance to the planets center.

I don't want to extrapolate from a single low-thrust rocket that high AoA is the way to go, but this is at least a small indicator. So if you want to know about your other low-thrust rockets, feel free to send me .craft files or the stage-information like in my previous post.

And I can calculate these results only for rockets, but not for planes with air-intakes. And one thing as a sidenote, the ascents are uptimized to minimize fuel usage - hm... what would the graphs look like if they were optimized for duration?

Link to comment
Share on other sites

what would the graphs look like if they were optimized for duration?

In Kasuha's particular case, his rocket was at full throttle for almost the entire flight, his TWR was low so he needed extra hang time to reach orbital speed. It's interesting that the result you're showing achieves some of that hang time by overshooting the apoapsis, instead of relying on higher angle of attack and a slower but monotonic climb (which would've been my intuition-based guess as to the best trajectory in this situation).

I'd have to find in the code exactly where you're using the specific impulse data, but judging by that input table it looks like you might get slightly incorrect behavior at atmospheric pressure between 0 and 1. Let's take an example of 2 engines, with thrust1, ispvac1, ispatm1, and thrust2, ispvac2, ispatm2.

isp1 = ispvac1 + p*(ispatm1 - ispvac1)

isp2 = ispvac2 + p*(ispatm2 - ispvac2)

isp_combined = (thrust1 + thrust2) / (thrust1/isp1 + thrust2/isp2)

This is not the same as taking ispvac_combined + p*(ispatm_combined - ispvac_combined), except at p = 0 or p = 1. So you can't enter things just in terms of combined Isp at vacuum and atmospheric conditions, you need the thrust and Isp curve of each engine type.

And if you're inputting thrusts as kN, may as well input stage and fuel masses in tonnes, for consistency with every other mass measurement in KSP.

Link to comment
Share on other sites

It's interesting that the result you're showing achieves some of that hang time by overshooting the apoapsis, instead of relying on higher angle of attack and a slower but monotonic climb (which would've been my intuition-based guess as to the best trajectory in this situation).

The reason is simple. The last stage has so little thrust that even at maximum horizontal speed given by previous stages it cannot hold against gravity even with 90 degree pitch.

Link to comment
Share on other sites

The reason is simple. The last stage has so little thrust that even at maximum horizontal speed given by previous stages it cannot hold against gravity even with 90 degree pitch.

Oh. Hah, there you go then, that makes sense. Didn't look at the numbers carefully enough to see that.

Link to comment
Share on other sites

I'd have to find in the code exactly where you're using the specific impulse data, but judging by that input table it looks like you might get slightly incorrect behavior at atmospheric pressure between 0 and 1. Let's take an example of 2 engines, with thrust1, ispvac1, ispatm1, and thrust2, ispvac2, ispatm2.

isp1 = ispvac1 + p*(ispatm1 - ispvac1)

isp2 = ispvac2 + p*(ispatm2 - ispvac2)

isp_combined = (thrust1 + thrust2) / (thrust1/isp1 + thrust2/isp2)

This is not the same as taking ispvac_combined + p*(ispatm_combined - ispvac_combined), except at p = 0 or p = 1. So you can't enter things just in terms of combined Isp at vacuum and atmospheric conditions, you need the thrust and Isp curve of each engine type.

And if you're inputting thrusts as kN, may as well input stage and fuel masses in tonnes, for consistency with every other mass measurement in KSP.

Kudos for noticing this detail.

In my first Perl-ascent-optimizer I implemented all the details, but with PSOPT i tried at first a "lighter" approach. For Kasuhas ship this results in an error in ISP of less than 4% during stage "1" with 4 LV-N and 10 Aerospikes, less than 3% during stage "2" and less than 2% during the other stages. And the error is in the ships favour, so the ship has in KSP a higher effective ISP value than the one my simulation uses.

Since i feel in the meantime more comfortable with PSOPT, i will extend it to handle multiple enginetypes correctly.

Good idea to make the inferface more consistent

Edited by mhoram
Link to comment
Share on other sites

113.6 t at the end

I implemented the necessary steps to account for correct ISP calculation and the result was that the ascent profile is very similar in comparison with the previous graph.

Top altitude is 2-3 km lower and the final mass is as expected a little bit higher: 114.4 t with a bit shorter duration of 10:30 minutes.

Tavert, by the way I have seen on the PSOPT user group that someone wrote an installer.

Link to comment
Share on other sites

For your info, this links to my first implementation in Psopt. The one I am currenty doing my calculations with, that supports more than 2 stages, is not yet on Github. I want to make some changes, before I share it.

Link to comment
Share on other sites

  • 1 month later...
Have you tested this against existing launchers?

Indeed I did some tests in the game.

For one I posted the result in this post and also did manual ascents with two other crafts that I did not publish. The results were quite near to the psopt-predictions.

---

Edit 2014-05-08: Since I don't want to necro this thread I post this info as an edit, since it should be available as a reference.

I made the source code to my multiple-stage implementation now available: http://forum.kerbalspaceprogram.com/threads/79165-Aptor-An-Autopilot-System-based-on-Psopt

It has some kinks that I was unable to solve (like how to select the best parameters manually?), but nontheless I think it is more appropriate to share it.

Edited by mhoram
Link to comment
Share on other sites

  • 3 months later...

After having lots of problems with finding the answer, I decided to go a bit more serious on the matter and flew a couple of real world spacecrafts in Orbiter also studying their accurate historic ascent profile.

This is what I got in general.

The launch vehicle performs vertical ascent to a few hundred metres.

The liftoff from the pad is only about twelve to fifteen metres per second of acceleration but it is rapidly increasing especially after the pitchover.

Pitchover is not as careful as we are used to it is usually about ten or even fifteen degrees but is performed at quite a small airspeed.

The rocket goes supersonic at about six or seven kilometres of altitude above the sea level.

Very little or no pitch inputs are done until completely out of the dense atmosphere.

After getting into space the rocket continues to gradually pitch down below the prograde to restrict the increase of the apoapsis altitude in such way that it will be at the desired altitude at the time the rocket will be there and the vertical speed reaches zero. The periapsis should already have sufficient altitude at this time and so the burn is continued prograde for a short time to circularize if required.

Then you have a stable parking orbit with no coasting and shutting your engines down.

Thank you!

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

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