98 lines
2.5 KiB
Plaintext
98 lines
2.5 KiB
Plaintext
//hellolaunch
|
|
set TARGET_ALTITUDE to 80000.
|
|
set ETA_TARGET to 60.
|
|
|
|
//First, we'll clear the terminal screen to make it look nice
|
|
wait until ship:unpacked.
|
|
clearscreen.
|
|
|
|
core:part:getmodule("kOSProcessor"):doevent("Open Terminal").
|
|
|
|
lock throttle to 1.0.
|
|
|
|
//This is our countdown loop, which cycles from 10 to 0
|
|
print "Counting down:".
|
|
from {local countdown is 5.} until countdown = 0 step {set countdown to countdown - 1.} do {
|
|
print "..." + countdown.
|
|
wait 1. // pauses the script here for 1 second.
|
|
}
|
|
|
|
when maxThrust = 0 then {
|
|
print "Staging".
|
|
stage.
|
|
preserve.
|
|
}.
|
|
|
|
// GRAVITY TURN
|
|
|
|
// pitch to 80 degrees over the first 100 m/s
|
|
set tarSteer to heading(90, 90).
|
|
lock steering to tarSteer.
|
|
until ship:velocity:surface:mag >= 100 {
|
|
set tarSteer to heading(90, 90 - (ship:velocity:surface:mag / 10)).
|
|
wait 0.
|
|
}
|
|
|
|
print "Finished initial pitch".
|
|
|
|
// actual gravity turn
|
|
lock steering to ship:srfprograde.
|
|
// lock steering to heading(90, max(90 - vang(ship:up:vector, ship:srfprograde:vector), 10)).
|
|
// wait until eta:apoapsis > 45.
|
|
|
|
// // burn to target apoapsis
|
|
// clearscreen.
|
|
// set circ_pid to pidloop(1/30, 0, 0, 0, 1).
|
|
// set circ_pid:setpoint to ETA_TARGET.
|
|
|
|
// set gravThrottle to 1.0.
|
|
// lock throttle to gravThrottle.
|
|
// until apoapsis >= TARGET_ALTITUDE {
|
|
// set gravThrottle to circ_pid:update(time:seconds, eta:apoapsis).
|
|
// print "Throttle: " + round(100 * gravThrottle, 0) + "%" at (0, 0).
|
|
// print "ETA: " + round(eta:apoapsis, 0) at (0, 1).
|
|
// wait 0.
|
|
// }
|
|
|
|
// clearscreen.
|
|
|
|
wait until ship:apoapsis >= TARGET_ALTITUDE.
|
|
print "80km apoapsis reached".
|
|
lock throttle to 0.
|
|
lock steering to ship:prograde.
|
|
|
|
wait until ship:altitude >= 70000.
|
|
|
|
// try to get apoapsis closer to target
|
|
if ship:apoapsis < TARGET_ALTITUDE and eta:apoapsis > 30 {
|
|
lock throttle to 1.
|
|
wait until ship:apoapsis >= TARGET_ALTITUDE.
|
|
lock throttle to 0.
|
|
}
|
|
|
|
wait until eta:apoapsis < 30.
|
|
|
|
// CIRCULARIZATION CALCS
|
|
set circThrottle to 0.
|
|
lock throttle to circThrottle.
|
|
set throttlePID to pidLoop(0.25, 0, 0, 0, 1).
|
|
set throttlePID:setpoint to 15.
|
|
|
|
set circPitch to 0.
|
|
lock steering to heading(90, circPitch).
|
|
set pitchPID to pidLoop(1, 0, 0, -10, 10).
|
|
set pitchPID:setpoint to 15.
|
|
|
|
until apoapsis - periapsis < 100 or periapsis > TARGET_ALTITUDE {
|
|
set circThrottle to max(0.1, throttlePID:update(time:seconds, eta:apoapsis)).
|
|
set circPitch to pitchPID:update(time:seconds, eta:apoapsis).
|
|
wait 0.
|
|
}
|
|
|
|
unlock steering.
|
|
unlock throttle.
|
|
wait 1.
|
|
|
|
set ship:control:pilotmainthrottle to 0.
|
|
print "Circularized.".
|