Fix throttling, first attempt to fix gravity turn.

This commit is contained in:
Anna Rose 2021-07-18 16:06:38 -04:00
parent ed31a1fda3
commit 5cb608ff01
3 changed files with 14 additions and 9 deletions

View File

@ -1,5 +1,5 @@
COPYPATH("0:/noop", ""). COPYPATH("0:/noop", "").
COMPILE "0:/launch" to "1:/launch". COMPILE "0:/launch" to "1:/launch".
COMPILE "0:/lib/functions" to "1:/lib/functions". COMPILE "0:/lib/guidance" to "1:/lib/guidance".
SET core:bootfilename to "noop". SET core:bootfilename to "noop".

View File

@ -1,4 +1,4 @@
run once "lib/functions". run once "lib/guidance".
local APOAPSIS_TARGET is 80000. local APOAPSIS_TARGET is 80000.
local GRAVITY_TURN_START is 5000. local GRAVITY_TURN_START is 5000.
@ -23,23 +23,27 @@ when TWR() > 1.5 then {
return false. return false.
} }
lock THROTTLE to ThrottleToTWR(1.5). local newThrot is ThrottleToTWR(1.5).
print "Setting throttle to " + newThrot.
lock THROTTLE to newThrot.
return true. return true.
} }
// Main ascent control. // Main ascent control.
lock THROTTLE to 1.0. lock THROTTLE to 1.0.
lock STEERING to UP. lock STEERING to heading(90,90,-90).
stage. stage.
wait until SHIP:ALTITUDE > 200. wait until SHIP:ALTITUDE > 200.
lock STEERING to heading(90, 85, 90). lock STEERING to heading(90, 85, -90).
wait until SHIP:ALTITUDE > GRAVITY_TURN_START. wait until SHIP:ALTITUDE > GRAVITY_TURN_START.
print "Beginning gravity turn".
until SHIP:APOAPSIS > 80000 { until SHIP:APOAPSIS > 80000 {
local angle is min(30, SHIP:PROGRADE:PITCH - 2). local angle is max(30, SHIP:PROGRADE:PITCH - 2).
lock STEERING to heading(90, angle, 90). lock STEERING to heading(90, angle, -90).
wait 0.001. wait 0.001.
} }
print "Releasing controls. Good luck, Kerman!".
set THROTTLE to 0.0. set THROTTLE to 0.0.

View File

@ -1,16 +1,17 @@
// Functions for calculating navigational and guidance values.
@lazyglobal off. @lazyglobal off.
// Returns the throttle value you should use to achieve the // Returns the throttle value you should use to achieve the
// target TWR. If TWR can't be achieved, returns 1.0. (full throttle) // target TWR. If TWR can't be achieved, returns 1.0. (full throttle)
function ThrottleToTWR { function ThrottleToTWR {
parameter twr is 1.5. parameter targetTWR is 1.5.
local m is SHIP:MASS. local m is SHIP:MASS.
local g is 9.81. local g is 9.81.
if HAS_GRAV_SENSOR = true { if HAS_GRAV_SENSOR = true {
set g to SHIP:SENSORS:GRAV:MAG. set g to SHIP:SENSORS:GRAV:MAG.
} }
return min((twr*m*g)/SHIP:AVAILABLETHRUST, 1.0). return min((targetTWR*m*g)/SHIP:AVAILABLETHRUST, 1.0).
} }
// Calculates the ship's current TWR. // Calculates the ship's current TWR.