rhoark
Members-
Posts
526 -
Joined
-
Last visited
Content Type
Profiles
Forums
Developer Articles
KSP2 Release Notes
Everything posted by rhoark
-
With RT in upheaval, I simulate the effect by interacting with unmanned vessels only through kOS.
-
I tried set target to "Mun". and it said, "Vessel not found". Is this supposed to work?
-
Is the CALL function how we're going to get science data?
-
Thinking about how many antennas I'd have to festoon an eeloo mission with, I think multiplying comm distance according to number of antennas is not the right strategy. Best case: communications pass through a sequence of relays, a la remotetech. Selection of antennae imported from RT and/or AIES have ranges varying from 16's to low orbit up to 2.5m dishes that reach anywhere. Good enough: communicotron 16 works within minmus distance, and 88-88 anywhere in the solar system.
-
Conducting an entire mission in first-person mode
rhoark replied to Masked Turk's topic in KSP1 Discussion
I played for awhile IVA-only, using Kerbal Engineer. Deployed a few RemoteTech satellites, built a 4-part station, and a Mun landing. -
Mothership designs?
rhoark replied to Bunny Commander's topic in KSP1 Gameplay Questions and Tutorials
Keep in mind <1 TWR is fine for orbital maneuvers, and reducing engine weight saves fuel weight too. I keep Kerbin reentry vehicles at a space station, so I don't need to haul them on interplanetary trips (that aren't bound for Eve or Laythe). Landers not also having to be reentry vehicles loosens design constraints and saves weight. (moreso since I play with FAR and Deadly Reentry, but there are benefits to vanilla also - for instance if your command module doesn't have to be cone-shaped with a drogue on top, it can have a clampotron sr and push fuel in front.) -
I just got my launch program in a state I'm reasonably happy with. It controls pitch and throttle with a PID watching eta:apoapsis, and stages based on discontinuities in acceleration. set targetapo to 90000. set atmo_top to 68000. set limitG to 1.5. mode_pad on. mode_stage off. mode_launch off. mode_limitG off. mode_turn off. mode_coast off. mode_raise_ap off. mode_raise_pe off. mode_finish off. set roll to 0-90. set yaw to 0. set pitch to 0. set pitchmaxlimit to 0.1. set tlimit to 1. set Pthrottle to 0.01. set Dthrottle to 0. set errorT to 0. set errorTD to 0. set bstartalt to 1000. set bendalt to 9000. set bendpitch to (0-bendalt)/atmo_top. set P to 0.01. set I to 0.001. set D to 0.1. set error to 0. set errorprev to 0. set errorI to 0. set errorD to 0. set scalarvelocity to 0. set prevV to 0. set accel to 0. set prevAccel to 0. set jerk to 0. set prev_throttle to 1. set prev_epsilon to 0. print "Liftoff". set clock to 0. lock steering to up. sas on. lock throttle to 1. stage. mode_pad off. mode_launch on. mode_limitG on. wait until missiontime > 0. until mode_finish { set deltatime to missiontime - clock. set clock to missiontime. set prevV to scalarvelocity. set prevAccel to accel. set scalarvelocity to (surfacespeed^2 + verticalspeed^2)^(0.5). set accel to (scalarvelocity - prevV) / deltatime. set jerk to (accel - prevAccel) / deltatime. set pitchlimit to (0-1) * (altitude/atmo_top). if pitchlimit < (0-1) { set pitchlimit to (0-1). }. if mode_launch { mode_stage on. if altitude > bstartalt { print "Static turn". mode_launch off. mode_turn on. sas off. }. }. if mode_stage { set accel_theoretical to ((maxthrust/mass)*throttle). set epsilon to accel_theoretical - accel. set throttlechange to accel * (throttle - prev_throttle). if (missiontime > 10) and (throttle > 0) and (throttlechange > -3) and (epsilon - prev_epsilon > 2.5) { print "Staging". stage. }. set prev_epsilon to epsilon. set prev_throttle to throttle. }. if mode_turn { set pitch to bendpitch * ((altitude-bstartalt)/(bendalt-bstartalt)). lock steering to up + r(yaw, 90*pitch, roll). if altitude > bendalt { print "Dynamic turn". mode_turn off. mode_coast on. mode_raise_ap on. mode_limitG off. lock throttle to 1. set startapo to apoapsis. set starteta to eta:apoapsis. }. }. if mode_limitG { set errorTprev to errorT. set errorT to (limitG*9.8) - (tlimit*accel). set errorTD to (errorT - errorTprev) / deltatime. set tlimit to tlimit + (Pthrottle*errorT) + (Dthrottle * errorTD). if tlimit > 1 { set tlimit to 1. }. lock throttle to tlimit. }. if mode_raise_ap { set etamargin to 15. set minthrust to 0.5. set tfudge to 0.1. if apoapsis > targetapo { print "Circularizing". mode_raise_ap off. mode_raise_pe on. }. }. if mode_raise_pe { set etamargin to 10. set minthrust to 0. set pitchmaxlimit to -1. set tfudge to 0. set I to 0. if periapsis > targetapo { mode_raise_pe off. mode_coast off. mode_finish on. }. }. if mode_coast { set targeteta to ((targetapo-apoapsis)/(targetapo-startapo)) * starteta. if targeteta < etamargin { set targeteta to etamargin. }. set eta to eta:apoapsis. if eta:periapsis < eta:apoapsis { set eta to 0. }. set errorprev to error. set error to targeteta - eta. set errorD to (error - errorprev) / deltatime. set errorI to errorI + (error * deltatime). if errorI > error { set errorI to error. }. set adjustment to (P*error) + (I*errorI) + (D*errorD). if (adjustment < 0) or (tlimit = 1) { set pitch to pitch + adjustment. if pitch < pitchlimit { set pitch to pitchlimit. }. if pitch > pitchmaxlimit { set pitch to pitchmaxlimit. }. lock steering to up + r(yaw, 90*pitch, roll). }. if (pitch - pitchlimit < .03) or (adjustment > 0) { set tlimit to tlimit + adjustment. }. if (pitchlimit > 0-1) { set tlimit to tlimit + tfudge. }. if tlimit < minthrust { set tlimit to minthrust. }. if tlimit > 1 { set tlimit to 1. }. set tfinal to tlimit. lock throttle to tfinal. }. }.
-
Hoping somebody puts together a nice black sans-serif version.
-
Is there a way to invoke RCS translation?
-
With FAR, rockets will tumble if bottom-heavy. Nothing to do with kOS.
-
You can. The IF condition is the thing you want to respond to, and the UNTIL condition is for when you're done caring about the IF condition. until stage:liquidfuel < 50 { if alt:radar < 200 { lock throttle to 1. }. if alt:radar > 1000 { lock throttle to 0.}. }.
-
I've been thinking on this, and concluded an IF inside an UNTIL will typically be the right approach for responding to a recurring situation. The use case for WHEN seems to be when a set of events might happen once each in arbitrary order, which is fairly niche. Accessing the elements of a vector will also be essential for calculating the magnitude. Edit: It's revealed in the 0.4 video (and apparently nowhere else) you can do X:pitch, X:roll, and X:yaw on R() structures. No word on V().
-
Unit of Measurement of 2HOT Thermometer
rhoark replied to Qwertyest's topic in KSP1 Gameplay Questions and Tutorials
I'd go with "degrees Kerman". -
How exactly does WHEN work? Polling or interrupt? Fire once or repeatedly? Does it expire when exiting a curly brace scope? This caused KSP to freeze completely: lock steering to up + r(0,-90,-90). when eta:apoapsis < 15 then lock throttle to 1. when (eta:periapsis < 30) OR ((eta:apoapsis > 30) AND (eta:apoapsis < eta:periapsis)) then lock throttle to 0. wait until periapsis > 70000.
-
Some things that seem to be needed, unless I'm just overlooking them: Unpacking vectors distance and relative velocity to target square root function
-
TT NeverUnload - Vessel Unloading Preventer
rhoark replied to TouhouTorpedo's topic in KSP1 Mod Releases
I could launch a dozen kOS missions and not have to alarm clock manuever nodes? THIS CHANGES EVERYTHING! -
A FAR SSTO without SABREs is a different ball game. This is the only one I've managed, and it was accidental (I was testing how much wings would affect dV requirements, and the answer was A LOT)
-
What's the thing in the middle of the screenshot of the mini-station that looks like an electric razor head?
-
I have Deadly Reentry installed, and regardless of conditions (even stationary), the kOS part ticks up about one degree a second until it explodes.
-
New revolutionary use for otherwise ''useless'' action groups
rhoark replied to ThatDebri's topic in KSP1 Discussion
Landing legs are on the gear group, but they start out of sync with the gear mode. (Gears start deployed, legs stowed). Pressing 'g' a few times makes it figure things out. -
Based on my observation of the new SAS behavior, its indeed not PID - it's just P. And the P factor is fairly small. When off course it will continue to apply the same (right direction but too small) control input indefinitely.
-
In the past I've bootstrapped deployment with manned flights or did an L shaped burn as described above. I'm taking a break from RT now until RemoteTech 2 is ready, but when it is I'll start with a flower petal arrangement - hit an apoapsis around 1Mm and raise periapsis just above the minimum before going out of contact. That way the sats spend most of their time "hovering" near apoapsis. Three or four of those can make a near-Kerbin mesh, then I'll have 2 keosync dish hubs antipodally for trans-Munar links.