feat: overhaul lander suicide burn, add transfer GUI, improve ascent fairing logic
- lander.ks: Replace fixed suicide burn with dynamic throttle control using vertical fraction, gateRatio, and finalPhase logic; simplify post-land sequence to SAS stabilityassist - transfer.ks: Replace hardcoded Mun target with GUI popup menu populated from body:orbitingchildren - ascent.ks: Change fairing jettison trigger from dynamic pressure to altitude > atm height; guard antenna extension with hasmodule check - basic.ks: Append stayRunner invocation at end of script - boot/boot.ks: Remove commented RT connection block; add newline before runPath - boot/testing.ks: Switch to volume 0 and use relative paths for transfer and doManeuver scripts - boot/heloBoot.ks: Delete unused boot file
This commit is contained in:
+40
-43
@@ -1,3 +1,5 @@
|
||||
run once maneuver.
|
||||
|
||||
function groundSlope {
|
||||
parameter xOffset is 0, yOffset is 0.
|
||||
local east is vCrs(north:vector, up:vector).
|
||||
@@ -30,60 +32,55 @@ function groundSlope {
|
||||
return slope.
|
||||
}
|
||||
|
||||
wait until not hasNode.
|
||||
lock h to ship:bounds:bottomaltradar.
|
||||
lock velVec to ship:velocity:surface.
|
||||
lock speed to velVec:mag.
|
||||
lock vSpeed to ship:verticalspeed.
|
||||
lock g to body:mu / ((body:radius + ship:altitude)^2).
|
||||
lock maxA to ship:maxthrust / ship:mass.
|
||||
lock vertFrac to max(abs(vSpeed) / max(speed, 0.001), 0.05).
|
||||
|
||||
set margin to 30. // safety buffer, meters
|
||||
set gateRatio to 0.9. // start burn when required decel hits this fraction of max
|
||||
set targetV to -3. // final drift speed, m/s
|
||||
set burning to false.
|
||||
set finalPhase to false.
|
||||
|
||||
lock maxDecel to max(maxA * vertFrac - g, 0.01).
|
||||
lock requiredDecel to vSpeed^2 / (2 * max(h - margin, 0.1)).
|
||||
lock neededA to (requiredDecel / vertFrac) + g.
|
||||
lock hoverA to g / vertFrac. // accel needed to hold current vertical speed constant
|
||||
|
||||
// Suicide burn calcs
|
||||
set tval to 0.
|
||||
lock throttle to tval.
|
||||
lock steering to ship:srfretrograde.
|
||||
lock steering to srfretrograde.
|
||||
|
||||
lock h to ship:bounds:bottomaltradar.
|
||||
lock v0 to ship:verticalspeed.
|
||||
lock g to (body:mu / ((body:radius + ship:altitude)^2)).
|
||||
lock a to ship:maxthrust / ship:mass.
|
||||
lock d to (v0^2) / (2 * (a - g)).
|
||||
|
||||
|
||||
// wait for burn
|
||||
until h <= (1.1 * d) {
|
||||
clearscreen.
|
||||
print "Altitude AGL : " + round(h) at (4, 0).
|
||||
print "Vertical Speed : " + round(v0, 1) at (4, 1).
|
||||
print "Gravity : " + round(g, 2) at (4, 2).
|
||||
print "Acceleration : " + round(a, 2) at (4, 3).
|
||||
print "Distance : " + round(d, 2) at (4, 4).
|
||||
wait 0.
|
||||
}
|
||||
unlock d.
|
||||
unlock a.
|
||||
|
||||
set tval to 1.
|
||||
|
||||
set steeringLocked to false.
|
||||
until h < 1 {
|
||||
if v0 > -4 {
|
||||
// equalize acceleration to stop downward velocity
|
||||
set tval to max(0.001, ship:mass * g / ship:maxThrust).
|
||||
if not burning and requiredDecel >= gateRatio * maxDecel {
|
||||
set burning to true.
|
||||
}
|
||||
else if v0 > -6 and not steeringLocked {
|
||||
// slow enough that we just want to kill vertical velocity
|
||||
lock steering to up.
|
||||
set steeringLocked to true.
|
||||
|
||||
if burning and not finalPhase and vSpeed >= targetV {
|
||||
set finalPhase to true.
|
||||
}
|
||||
|
||||
if finalPhase {
|
||||
set tval to max(0, min(1, hoverA / maxA)).
|
||||
} else if burning {
|
||||
set tval to max(0, min(1, neededA / maxA)).
|
||||
}
|
||||
|
||||
clearscreen.
|
||||
print "Altitude AGL : " + round(h) at (4, 0).
|
||||
print "Vertical Speed : " + round(v0, 1) at (4, 1).
|
||||
print "Gravity : " + round(g, 2) at (4, 2).
|
||||
print "Throttle : " + 100 * round(tval, 3) at (4, 3).
|
||||
print "Alt AGL : " + round(h, 1) at (4, 0).
|
||||
print "VSpeed : " + round(vSpeed, 1) at (4, 1).
|
||||
print "Burning : " + burning at (4, 2).
|
||||
print "Final phase : " + finalPhase at (4, 3).
|
||||
print "Throttle : " + round(tval * 100) at (4, 4).
|
||||
wait 0.
|
||||
}
|
||||
|
||||
lock throttle to 0.
|
||||
unlock throttle.
|
||||
clearscreen.
|
||||
print "Holding position".
|
||||
lock steering to lookDirUp(groundSlope(), ship:facing:upvector).
|
||||
wait until ship:angularvel:mag < 0.1.
|
||||
wait 5.
|
||||
print "Stable".
|
||||
unlock steering.
|
||||
sas on.
|
||||
set sasMode to "STABILITYASSIST".
|
||||
Reference in New Issue
Block a user