From 6de947fb1821338eafce4048f5cca231e4873919 Mon Sep 17 00:00:00 2001 From: "Casper V. Kristensen" Date: Sat, 9 Feb 2019 21:32:14 +0100 Subject: [PATCH] Allow node-execution script to execute a burn based on a vector (in addition to a node). --- img/vector_to_node.png | Bin 0 -> 93919 bytes launch.ks | 15 ++-- lib/node.ks | 88 +++++++++++++++------ lib/{equations.ks => orbital_equations.ks} | 0 maneuvers.ks => lib/orbital_maneuvers.ks | 8 +- lib/util.ks | 2 +- 6 files changed, 73 insertions(+), 40 deletions(-) create mode 100644 img/vector_to_node.png rename lib/{equations.ks => orbital_equations.ks} (100%) rename maneuvers.ks => lib/orbital_maneuvers.ks (94%) diff --git a/img/vector_to_node.png b/img/vector_to_node.png new file mode 100644 index 0000000000000000000000000000000000000000..d31720074695ea37781851707c4996f62954fc58 GIT binary patch literal 93919 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 literal 0 HcmV?d00001 diff --git a/launch.ks b/launch.ks index b25a262..067c56e 100644 --- a/launch.ks +++ b/launch.ks @@ -1,12 +1,11 @@ @LAZYGLOBAL off. -run once "lib/equations". -run once "lib/node". +run once "lib/orbital_equations". +run once "lib/orbital_maneuvers". run once "lib/rocket". run once "lib/util". run once "lib/vectors". run once "lib/warp". -run once "maneuvers". function launch { @@ -70,14 +69,14 @@ function launch { return true. // preserve trigger } - print "----------------- VERTICAL CLIMB -----------------". + print "==> VERTICAL CLIMB". print "Waiting for pitchover altitude or velocity". wait until ALTITUDE > pitchover_altitude or VELOCITY:surface:mag > pitchover_velocity. - print "------------------- PITCHOVER --------------------". + print "==> PITCHOVER". // Once a certain altitude or velocity is reached, a slight turn is made, called the pitchover maneuver lock STEERING to heading(launch_azimuth, 90-pitchover_tilt). @@ -85,7 +84,7 @@ function launch { wait until actual_prograde_pitch() > pitchover_tilt. - print "------------------ GRAVITY TURN ------------------". + print "==> GRAVITY TURN". // TODO: the angle of the launch azimuth will not account for the fact that our compass will change as we move north/south. lock STEERING to heading(launch_azimuth, 90-actual_prograde_pitch()). // Follow prograde pitch to get 0 deg angle of attack, but force compass heading at launch azimuth. @@ -94,7 +93,7 @@ function launch { lock THROTTLE TO 0. - print "------------------ CIRCULARIZE -------------------". + print "==> CIRCULARIZE". // Don't create maneuver node until we are out of the atmosphere; otherwise the apoapsis' altitude and eta will change due to drag print "Waiting for ship to leave the atmosphere". warp_for(atmosphere_exit_eta()). // we'll lose some velocity due to drag, so the warp will exit a few seconds before we actually exit the atmosphere @@ -116,7 +115,7 @@ function launch { circularize_at_apoapsis(). - print "------------ LAUNCH SEQUENCE COMPLETE ------------". + print "==> LAUNCH SEQUENCE COMPLETE". unlock_control(). } diff --git a/lib/node.ks b/lib/node.ks index 5b819d4..b069e8c 100644 --- a/lib/node.ks +++ b/lib/node.ks @@ -6,56 +6,92 @@ run once "lib/warp". function estimated_burn_duration { // - // Calculate estimated burn duration for a maneuver node. + // Calculate estimated burn duration of a vector or node. // Based on: // https://en.wikipedia.org/wiki/Tsiolkovsky_rocket_equation // https://space.stackexchange.com/questions/27375/how-do-i-calculate-a-rockets-burn-time-from-required-velocity // - parameter node is NEXTNODE. - + parameter burn. + + if burn:istype("Node") { + set burn to burn:deltav. + } + local exhaust_velocity is isp_sum() * (CONSTANT:G * KERBIN:mass). - return ((SHIP:mass * exhaust_velocity) / SHIP:maxthrust) * (1 - CONSTANT:E^(-node:deltav:mag/exhaust_velocity)). + return ((SHIP:mass * exhaust_velocity) / SHIP:maxthrust) * (1 - CONSTANT:E^(-burn:mag/exhaust_velocity)). } -function execute_node { +function vector_to_node { // - // Execute given maneuver node (the next one by default). + // Convert given vector to a maneuver node, optionally at the given time. + // See vector_to_node.png. + // Based on + // https://www.reddit.com/r/Kos/comments/701k7w/dmzmwwj/ // - parameter node is NEXTNODE. + parameter vec. + parameter time is TIME:seconds. // now + + local position_at_time is positionat(SHIP, time) - BODY:POSITION. // from the body's center + + local prograde_at_time is velocityat(SHIP, time):orbit. + local normal_at_time is vcrs(prograde_at_time, position_at_time). // vector cross product is a vector that is normal to the plane containing them (see image) + local radial_at_time is vcrs(normal_at_time, prograde_at_time). + + // vdot input vector with components at given time to get its magnitude in these directions + local vec_prograde_at_time is vdot(vec, prograde_at_time:normalized). + local vec_normal_at_time is vdot(vec, normal_at_time:normalized). + local vec_radial_at_time is vdot(vec, radial_at_time:normalized). + + return node(time, vec_radial_at_time, vec_normal_at_time, vec_prograde_at_time). +} + + +function execute_burn { + // + // Execute given burn vector or node. + // + parameter burn. // Vector or Node + + local node is burn. + if burn:istype("Vector") { + set node to vector_to_node(burn). + add node. + } + + local lock burn_duration to estimated_burn_duration(node). - local burn_duration is estimated_burn_duration(node). - - print "=== EXECUTE MANEUVER NODE ===". - print "Estimated burn duration: " + ROUND(burn_duration, 1) + "s". + print "==> EXECUTING MANEUVER NODE". + print "Estimated burn duration: " + round(burn_duration, 1) + "s". print "Aligning ship with burn vector". - SAS off. - lock STEERING to node:deltav. - wait until vang(SHIP:facing:vector, node:deltav) < 0.5. - - print "Initializing warp". - warp_for(max(0, node:eta - (burn_duration/2) - 5)). // 5s before we need to start burn - - print "Approaching". - wait until node:eta <= ceiling(burn_duration/2). // ceiling since we'd rather start the burn too soon to have time for perfecting it - + align_with(node). // parsing node instead of its burnvector allows the steering lock to dynamically update + + local warp_time is max(0, node:eta - (burn_duration/2) - 5). // 5s before we need to start burn + if warp_time { + print "Warping to maneuver node". + warp_for(warp_time). + + print "Approaching maneuver node". + wait until node:eta <= ceiling(burn_duration/2). // ceiling since we'd rather start the burn too soon to have time for perfecting it + } + print "Burn!". lock THROTTLE to 1.0. // Decrease throttle linearly when the burn duration is less than 1 second - wait until estimated_burn_duration(node) <= 1. - lock THROTTLE to max(0.01, estimated_burn_duration(node)). // ensure we always finish the burn by burning with at least 1% power at all times + wait until burn_duration <= 1. + lock THROTTLE to max(0.01, burn_duration). // ensure we always finish the burn by burning with at least 1% power at all times // The burn vector will start to drift once we have very little left to burn. Therefore, save the burn vector as it is right now, and lock steering to it, instead of the dynamic vector - local dv0 is node:deltav. + local dv0 is node:burnvector. lock STEERING to dv0. // Stop the burn once the saved vector, dv0, and current burn vector start facing opposite directions - wait until vdot(dv0, node:deltav) < 0. + wait until vdot(dv0, node:burnvector) < 0. set THROTTLE to 0.0. - print "=== MANEUVER NODE EXECUTED ===". + print "==> MANEUVER NODE EXECUTED". print round(node:deltav:mag, 3) + "m/s delta-v remaining". unlock_control(). wait 1. diff --git a/lib/equations.ks b/lib/orbital_equations.ks similarity index 100% rename from lib/equations.ks rename to lib/orbital_equations.ks diff --git a/maneuvers.ks b/lib/orbital_maneuvers.ks similarity index 94% rename from maneuvers.ks rename to lib/orbital_maneuvers.ks index 9775b40..2c41059 100644 --- a/maneuvers.ks +++ b/lib/orbital_maneuvers.ks @@ -1,12 +1,12 @@ @LAZYGLOBAL OFF. -run once "lib/equations". +run once "lib/orbital_equations". run once "lib/node". function change_orbit { // - // Change current orbit. Set parameter to -1 to maintain the current value + // Change current orbit. Set parameter to -1 to maintain the current value (TODO: all of this) // parameter inclination is ORBIT:inclination. // vertical tilt of the orbit with respect to the equator parameter eccentricity is ORBIT:eccentricity. // how circular the orbit is (e=0 circular) @@ -35,7 +35,7 @@ function circularize { set node:prograde to required_velocity - velocityat(SHIP, TIME:seconds + eta):orbit:mag. add node. - execute_node(node). + execute_burn(node). } function circularize_at_apoapsis { @@ -47,5 +47,3 @@ function circularize_at_periapsis { print "Circularizing at periapsis". return circularize(PERIAPSIS, ETA:PERIAPSIS). } - -circularize_at_periapsis(). \ No newline at end of file diff --git a/lib/util.ks b/lib/util.ks index 1e7e6c1..5ab9c35 100644 --- a/lib/util.ks +++ b/lib/util.ks @@ -15,6 +15,6 @@ function atmosphere_exit_eta { // // Return the number of seconds until the vessel exists the atmosphere. // - // the vdot gives us the magnitude of the orbital velocity vector in the UP direction because UP is a unit vector + // The vdot gives us the magnitude of the orbital velocity vector in the UP direction because UP is a unit vector return (BODY:atm:height - ALTITUDE) / vdot(velocity:orbit, UP:vector). }