beeg sana

This commit is contained in:
2026-01-10 15:59:42 -05:00
parent 50be54bb0c
commit 0f76fb50c1
6 changed files with 87 additions and 47 deletions

28
beegSana.ks Normal file
View File

@@ -0,0 +1,28 @@
run "defaults".
run "poweredLanding".
declare function Reentry{
print "Re-entry.".
lock steering to heading(90, 60, 0).
ag1 on.
rcs off.
wait until (groundSpeed < 500 and altitude < 11000).
print "Flipping.".
rcs on.
lock steering to srfRetrograde.
}
wait until (periapsis < 0 and throttle = 0).
print "Prep for re-entry".
sas off.
CORE:PART:GETMODULE("kOSProcessor"):DOEVENT("Open Terminal").
lock steering to heading(90, 60, 0).
wait until (altitude < 70000).
Reentry().
brakes on.
Descent(200, 20).
Landing(0, -20).

5
boot/beegSanaBoot.ks Normal file
View File

@@ -0,0 +1,5 @@
wait until ship:unpacked.
clearscreen.
switch to 0.
run beegSana.

7
boot/radenBoot9.ks Normal file
View File

@@ -0,0 +1,7 @@
wait until ship:unpacked.
set rotateSpeed to 100.
if ship:status = "LANDED" or ship:status = "PRELAUNCH" {
clearscreen.
switch to 0.
run radenLaunch.
}

View File

@@ -89,41 +89,19 @@ declare function CalculateSuicideBurnAltitude
parameter tgtAltitude is 0.0. parameter tgtAltitude is 0.0.
parameter drag is 0.0. parameter drag is 0.0.
local vertAcc is CalculateAverageDecceleration(localGravity). local vertAcc is CalculateAverageDecceleration(localGravity, drag).
local burnAltitude is ((vertSpeed^2) / (2 * (vertAcc))). local burnAltitude is ((vertSpeed^2) / (2 * (vertAcc))).
return burnAltitude + tgtAltitude. return burnAltitude + tgtAltitude.
} }
declare function CalculateSuicideBurnAltitudeV2
{
parameter vertSpeed.
parameter localGravity.
parameter tgtAltitude is 0.0.
local vs is vertSpeed * -1.
local a is CalculateAverageDecceleration(localGravity).
local dt is 0.05.
local result is 0.0.
local h is alt:radar.
until vs <= 0 {
set vs to vs + a * dt.
set result to result + vs * dt.
if result > h { return result. }
}
return result.
}
declare function CalculateAverageDecceleration{ declare function CalculateAverageDecceleration{
parameter localGravity. parameter localGravity.
parameter drag is 0.
local maxVertAcc is (ship:availablethrust / ship:mass) - localGravity. local maxVertAcc is (ship:availablethrust / ship:mass) - localGravity.
return maxVertAcc + localGravity. return maxVertAcc + drag.
} }
declare function GetLocalGravity{ declare function GetLocalGravity{

View File

@@ -3,10 +3,19 @@ run "library/lib_math".
run "library/lib_location_constants". run "library/lib_location_constants".
run "defaults". run "defaults".
CORE:PART:GETMODULE("kOSProcessor"):DOEVENT("Open Terminal").
function Test{
TestSetup(10000).
WaitFalling(100).
Descent().
Landing().
}
function TestSetup{ function TestSetup{
print "Launch to start.".
WaitForEngineStart().
parameter tgt is 5000. parameter tgt is 5000.
if altitude > 100 { if altitude > 100 {
return. return.
@@ -21,7 +30,8 @@ function TestSetup{
unlock throttle. unlock throttle.
} }
function Landing{ declare function Landing{
parameter altitudeOffset is 0.0.
print "Starting Landing". print "Starting Landing".
gear on. gear on.
set pad to location_constants:kerbin:launchpad:position. set pad to location_constants:kerbin:launchpad:position.
@@ -61,14 +71,14 @@ function Landing{
until landed { until landed {
set landingThrottle to hoverPid:update(time:seconds, verticalSpeed). set landingThrottle to hoverPid:update(time:seconds, verticalSpeed).
set hoverPid:setpoint to Map(alt:radar, 0, 100, -0.5, -30). set hoverPid:setpoint to Map(alt:radar + altitudeOffset, 0, 100, -0.5, -20).
wait 0.001. wait 0.001.
} }
print "Landed". print "Landed".
lock throttle to 0. lock throttle to 0.
} }
function WaitFalling{ declare function WaitFalling{
parameter targetSpeed is 100. parameter targetSpeed is 100.
sas off. sas off.
wait until altitude < 10000. wait until altitude < 10000.
@@ -84,20 +94,24 @@ function WaitFalling{
} }
function Descent { declare function Descent {
parameter margin is 100.0.
parameter speedTarget is 30.
local lock curAlt to alt:radar. local lock curAlt to alt:radar.
local lock vertSpeed to verticalSpeed. local lock vertSpeed to verticalSpeed.
local lock localGravity to GetLocalGravity(altitude). local lock localGravity to GetLocalGravity(altitude).
local lock drag to GetDragDir(localGravity, ship:up:vector). local lock drag to GetDragDir(localGravity, ship:up:vector).
local lock burnDist to CalculateSuicideBurnAltitude(vertSpeed, localGravity, 100, drag). local lock burnDist to CalculateSuicideBurnAltitude(vertSpeed, localGravity, margin, drag).
wait until burnDist >= curAlt. wait until burnDist >= curAlt.
print "Gravity " + localGravity + "| Drag " + drag.
print "Starting Burn". print "Starting Burn".
print burnDist. print burnDist.
gear on. gear on.
until abs(verticalSpeed) < 30{ until abs(verticalSpeed) < speedTarget{
lock throttle to 1. lock throttle to 1.
} }
lock throttle to 0. lock throttle to 0.
@@ -107,10 +121,3 @@ function Descent {
} }
print "Launch to start.".
WaitForEngineStart().
TestSetup(10000).
WaitFalling(100).
Descent().
Landing().

View File

@@ -9,39 +9,54 @@ clearScreen.
BRAKES on. BRAKES on.
print "Waiting for engine ignition". print "Waiting for engine ignition".
WaitForEngineStart(). WaitForEngineStart().
if not (defined rotateSpeed){
set rotateSpeed to 140.
}
print "Preparing to launch". print "Preparing to launch".
from { local c is 5.} until c = 0 step {set c to c - 1.} do { from { local c is 5.} until c = 0 step {set c to c - 1.} do {
print c. print c.
wait 1. wait 1.
} }
set runwayPitch to (90 - vectorangle(UP:FOREVECTOR, FACING:FOREVECTOR)).
clearScreen. clearScreen.
print "Launching!". print "Launching!".
// stage. // stage.
lock throttle to 1. lock throttle to 1.
lock steering to heading(90, 1). lock steering to heading(90, runwayPitch).
brakes off. brakes off.
sas off. sas off.
print "Phase: Takeoff". print "Phase: Takeoff".
print "Waiting for rotate speed: " + rotateSpeed.
wait until groundspeed > 120. wait until groundspeed > rotateSpeed.
print "Phase: Rotate". print "Phase: Rotate".
lock steering to heading(90, 4). lock steering to heading(90, runwayPitch + 4).
wait until altitude > 80. wait until altitude > 80.
print "Gear up". print "Gear up".
gear off. gear off.
wait until altitude > 150.
set accelPitch to runwayPitch + 4.
local accelPitchLoop is PIDLoop(1.0, 0.06, 0.3, runwayPitch, 15).
set accelPitchLoop:setpoint to 4.
print "Phase: Athmospheric Acceleration". print "Phase: Athmospheric Acceleration".
lock steering to heading(90, 3, 0). lock steering to heading(90, accelPitch, 0).
wait until groundspeed > athmoAccelTarget. until groundspeed > athmoAccelTarget {
set accelPitch to accelPitchLoop:update(time:seconds, verticalSpeed).
wait 0.001.
}
print "Phase: Athmospheric Climb". print "Phase: Athmospheric Climb".
lock tgtPitch to Map(groundSpeed, athmoAccelTarget, 1600, 3, 15). lock tgtPitch to Map(groundSpeed, athmoAccelTarget, 1600, 5, 15).
lock steering to heading(90, tgtPitch, 0). lock steering to heading(90, tgtPitch, 0).
until altitude > 20000 {
print tgtPitch.
}
wait until altitude > 25000. wait until altitude > 20000.
print "Phase: Mode Switch". print "Phase: Mode Switch".
ag1 on. //Switch engine mode ag1 on. //Switch engine mode