commit 8aec6aa8a48ae6b0aef7efc9ebbda03924983947 Author: kcjennin Date: Tue May 19 00:04:41 2026 -0700 Launch script works pretty well diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/boot/hellolaunch.ks b/boot/hellolaunch.ks new file mode 100644 index 0000000..68df8ac --- /dev/null +++ b/boot/hellolaunch.ks @@ -0,0 +1,97 @@ +//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.".