Jump to content

RemoteTech users, do you use Signal Delay?


CoriW

Recommended Posts

Hello,

(Before I say this I'm just going to clarify that I feel that "cheating" is a completely relative term, as it is a single player game. Your only "cheating" if you feel like you're "cheating".)

Originally I didn't get RemoteTech for a long time because I didn't want to have to deal with the Signal Delay but I felt that turning it off was cheating because it was intended to be played with Signal Delay, but I also didn't want to use MechJeb because at the time I felt like using an autopilot was cheating as well. After a long time I found out about kOS and that seemed to be the perfect solution, even though it was technically an autopilot, I felt that because it was me that was programming the autopilot that it wasn't so much cheating as it was programming my missions in advance.

So at that point I finally went ahead and installed RemoteTech + kOS. Initially I spent several days writing and tuning a launch to orbit + circularize script which was extremely versatile in that it could be used to launch to orbit on any body (both atmospheric or non-atmospheric) as all of the coding was ambiguous to planet. After that I started working on some landing scripts (both an atmospheric and non-atmospheric one) and everything was going really well.

Then after awhile KSP 1.1.3 got released and initially I waited a little bit for some mods to update before I did a completely fresh install of KSP. During the process of this fresh install I accidentally deleted my only copy of all of my scripts. (ALWAYS BACKUP YOUR SCRIPTS) Needless to say that this was incredibly de-moralizing. After I had realized that I accidentally deleted all my scripts I initially started to attempt to re-write them, but with all of the time and effort I had put into them originally I was finding myself just not wanting to script at all as my previous enthusiasm towards it had been replaced by anger at myself for doing something so stupid.

So due to that whole situation, I've found myself heavily re-considering the use of kOS alongside RemoteTech. To be honest, thinking back on when I was working on the scripts.. "Kerbal Space Program" for me had kind of turned into "Scripting Space Program" as I spent maybe 95% of my time writing and testing scripts and only about 5% of my time actually playing the game. It was almost getting tedious near the end there and I'm not sure if I even want to keep playing if all it is going to be is scripting / testing and not actually progressing in any meaningful way otherwise.

With all of that being said I find myself exactly where I was in the beginning, debating on whether or not to turn off RemoteTech Signal Delay, as that is what caused me to begin using kOS in the first place.

 

So my question to all of you is this; Do you use RemoteTech Signal Delay and do you enjoy it? If you do, do you use MechJeb, kOS, or neither?

Link to comment
Share on other sites

4 minutes ago, diomedea said:

I do use MJ. Used kOS too.

So based on what you've said there I'm assuming that you primarily use MechJeb for autonomous control then? I've never really looked into how MechJeb interacts with RemoteTech when Signal Delay is involved. Could you please explain how they interact? Or at least a summary? MechJeb is the other option I've been considering for if I ultimately decide not to disable Signal Delay.

Link to comment
Share on other sites

2 minutes ago, CoriW said:

So based on what you've said there I'm assuming that you primarily use MechJeb for autonomous control then? I've never really looked into how MechJeb interacts with RemoteTech when Signal Delay is involved. Could you please explain how they interact? Or at least a summary? MechJeb is the other option I've been considering for if I ultimately decide not to disable Signal Delay.

About how MJ interacts with RT, I have never checked  (you may have to ask the authors for details). But MJ allows to plan a maneuver way before its execution, and when time comes to execute it, does reliably without need for further communications (so, signal delay has no effect because the time to execute was determined already). In a way, MJ acts as a powerful navigation computer with the vessel, so it can also autocorrect based on the current position of the vessel, without link to a remote station. I should actually check if still stands in the latest RT/MJ versions, that a player can't issue orders to MJ unless there is a link with the vessel.

Link to comment
Share on other sites

1 minute ago, diomedea said:

About how MJ interacts with RT, I have never checked  (you may have to ask the authors for details). But MJ allows to plan a maneuver way before its execution, and when time comes to execute it, does reliably without need for further communications (so, signal delay has no effect because the time to execute was determined already). In a way, MJ acts as a powerful navigation computer with the vessel, so it can also autocorrect based on the current position of the vessel, without link to a remote station. I should actually check if still stands in the latest RT/MJ versions, that a player can't issue orders to MJ unless there is a link with the vessel.

Alright, so if I understand that correctly. You can tell MechJeb to do something when you have a connection and even if the probe loses connection, it'll still execute the command because you sent the command when it had a connection? If that's how it works then that is perfect. I was a bit worried about how it interacted with RT as I wasn't sure if it was designed with RT in mind.

Link to comment
Share on other sites

I'm ok using MJ or flight computer to manage signal delay... except that since 1.05 the PID controller on both of them do not work very well, constantly overcorrecting and messing up burns on my rockets.  I'm using RO so I don't have masses of reaction wheels to correct for this either..  

Given that, I just turn off signal delay and play as my own flight computer, it's not like I'm doing anything different when I do the manuever node burn myself.  Caveat - I haven't tested either in 2-3 weeks, so they may have gotten fixed.

Link to comment
Share on other sites

17 minutes ago, CoriW said:

Alright, so if I understand that correctly. You can tell MechJeb to do something when you have a connection and even if the probe loses connection, it'll still execute the command because you sent the command when it had a connection? If that's how it works then that is perfect. I was a bit worried about how it interacted with RT as I wasn't sure if it was designed with RT in mind.

Mechjeb will stop working if you lose connection (that is, won't execute burns) and it ignores signal delay.

I'm perfectly ok with it not working out of range, because it's so powerful, the way I look at it, it's using the processing power of the supercomputers at KSC to do things. Besides, that's what Flight Computer is for.

Link to comment
Share on other sites

If the world worked like RemoteTech simulates (with signal delay), unmanned space exploration would not have happened. I don't play with signal delay, because in real life, computers on the spacecraft execute the burns, and RT's flight computer isn't powerful enough to replicate the capabilities of real-life unmanned probes. Therefore, I am the probe's flight computer, and the probe's flight computer doesn't suffer from signal delay.

Link to comment
Share on other sites

4 minutes ago, severedsolo said:

Mechjeb will stop working if you lose connection (that is, won't execute burns) and it ignores signal delay.

I'm perfectly ok with it not working out of range, because it's so powerful, the way I look at it, it's using the processing power of the supercomputers at KSC to do things. Besides, that's what Flight Computer is for.

The problem with the flight computer in RT is that it's too simple.. You should be able to have a spacecraft run a complex program autonomously even when there is no signal or a Signal Delay. That's exactly why I used kOS, is because I could program the probe to do something complex and all I would have to make sure that I had a signal for was to tell it to run the program, once the program was running it didn't matter if there was a delay or no connection as the probe was running off the onboard computer. Look at NASA's Curiosity Rover landing for example, that was an incredibly complex landing and it was all run autonomously by a computer that was onboard the spacecraft. That is in my opinion how it should work because that's how it works in real life. We don't run programs on probes by constantly having computers at home figure out calculations and send stuff to them, if anything we just send them basic commands to start up programs that are already being stored on the spacecraft. Or if any of the programs onboard the spacecraft need to be modified I'm sure NASA has a way of sending new programming to the spacecraft as well.

With RemoteTech it seems to me that there are only two options.

  1. Have a program such as MechJeb or something that has been pre-programmed with kOS and stored on the spacecraft which can run the spacecraft autonomously in real time while there is Signal Delay or no signal at all.
  2. Disable the Signal Delay and you yourself become the "onboard computer" which can control the spacecraft in real time.

Honestly from a realism point of view I would prefer the first option as the second option would mean that the spacecraft basically has a sentient AI controlling it autonomously.. Which just couldn't happen with current technology. However on the flip side is it really fun to sit there and have a bunch of programming flying your spacecraft for you or does it become too realistic in that you just send a command every now and then while the spacecraft basically flies itself. That is the question I'm personally trying to answer for myself as I enjoy realism, but when realism stops being fun it causes me to start losing interest.

Link to comment
Share on other sites

i dont use signal delay and most of the streamers and you tubers i watch who might have used it in the past are not using it any more cuz its just a hassle to deal with. i have no scrupples disabling it. i have no idea how to write scripts and i really have no interest in learning, just want to fly me some rockets.

Link to comment
Share on other sites

Sometimes.  Depends on what I want to do.

12 minutes ago, EliasDanger said:

i dont use signal delay and most of the streamers and you tubers i watch who might have used it in the past are not using it any more cuz its just a hassle to deal with. i have no scrupples disabling it. i have no idea how to write scripts and i really have no interest in learning, just want to fly me some rockets.

You don't have to write scripts at all to use signal delay.  You do however have to know how to use the flight computer to send commands, which can simply be "perform this maneuver node I just created".  You just have to program it to perform before it leaves communications range.

The two things you can't do easily are unmanned ascent and landing on a atmosphere-less body and unmanned ascent and on an atmosphere body.  You can still land on the atmosphere body provided you don't care where, you just have to deploy chutes.

Link to comment
Share on other sites

I have RT on my RO game and while there's signal delay for turning things like RCS on and off and activating experiments but flight controls don't have a delay. I tried signal delay with everything a while back but with ullage it's hard to get it timed perfectly so I feel comfortable enough without the signal delay for flight. That said I have run into problems where my maneuver is coming up and I forgot to turn on RCS before hand to deal with the ullage before firing the engine so it definitely requires some forethought. Also in RO there's lots of engines that don't throttle. I can only imagine trying to land a probe on the moon by turning the engine on and off and have a signal delay.
But for a regular game I would probably have it on all the time and use the flight computer to do all the maneuvers. But if I wanted to land on a planet I'd either learn KOS or something similar or just disable it for landing. I just think of it like the Curiosity rover. It landed autonomously from a sky crane on Mars. We definitely have computers smart enough to perform the maneuvers themselves. when you disable the delay for landing you're pretty much just becoming the program it would use for landing.

Edited by archenemy_6
Link to comment
Share on other sites

Still a noob to KOS (and scripting in general), what are some good places to start learning scripting (so far I can (kind of, if 'ignore max temp is on) go into a 100km orbit).

 

Could you see what I could improve?

Spoiler

CLEARSCREEN.

LOCK THROTTLE TO 1.0.  

PRINT "Counting down:".
FROM {local countdown is 10.} UNTIL countdown = 0 STEP {

SET countdown to countdown - 1.} DO {
    PRINT "..." + countdown.
    WAIT 1.
}

WHEN MAXTHRUST = 0 THEN {
    PRINT "Staging".
    STAGE.
    Preserve.
      }.

SET MYSTEER TO HEADING(90,90).
LOCK STEERING TO MYSTEER. 
UNTIL SHIP:APOAPSIS > 100000 { 

    IF SHIP:VELOCITY:SURFACE:MAG < 100 {
        SET MYSTEER TO HEADING(90,90).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 100 AND SHIP:VELOCITY:SURFACE:MAG < 200 {
        SET MYSTEER TO HEADING(90,80).
        PRINT "Pitching to 80 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

   
    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 200 AND SHIP:VELOCITY:SURFACE:MAG < 300 {
        SET MYSTEER TO HEADING(90,70).
        PRINT "Pitching to 70 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 300 AND SHIP:VELOCITY:SURFACE:MAG < 400 {
        SET MYSTEER TO HEADING(90,60).
        PRINT "Pitching to 60 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 400 AND SHIP:VELOCITY:SURFACE:MAG < 500 {
        SET MYSTEER TO HEADING(90,50).
        PRINT "Pitching to 50 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 500 AND SHIP:VELOCITY:SURFACE:MAG < 600 {
        SET MYSTEER TO HEADING(90,40).
        PRINT "Pitching to 40 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 600 AND SHIP:VELOCITY:SURFACE:MAG < 700 {
        SET MYSTEER TO HEADING(90,30).
        PRINT "Pitching to 30 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 700 AND SHIP:VELOCITY:SURFACE:MAG < 800 {
        SET MYSTEER TO HEADING(90,11).
        PRINT "Pitching to 20 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 800 {
        SET MYSTEER TO HEADING(90,10).
        PRINT "Pitching to 10 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    }.

}.

PRINT "100km apoapsis reached, cutting throttle".

SET SHIP:CONTROL:PILOTMAINTHROTTLE TO 0.

global throt is 0.
lock throttle to throt.
lock steering to prograde.
until periapsis >= 100000 {
IF eta:apoapsis < 30 AND throt <1 {
SET throt to 1.}
If eta:apoapsis >50 and throt >0 {
Set throt to 0. }
IF eta:apoapsis >1000 and throt <1 {
Set throt to 1. }
}
unlock steering.
unlock throttle.

Print "check".

 

Edited by ToukieToucan
Link to comment
Share on other sites

I don't use Signal Delay because I didn't feel like learning how to use kOS. From what I've read in this thread apparently the RT flight computer is enough to do stuff like capture burns and atmospheric landings, so I might have to try it and Mechjeb for landings.

Link to comment
Share on other sites

 

 

I have time delay on, 

For landing, I use landertrons (page 10) and mechjeb translation control to keep the descent to < 50ms, If I'm being very paranoid, I cover the craft in Roverdudes airbags and bounce to a landing.  

More complex manoeuvres are planned with mechjeb and then executed with the flight computer.

 

 

Link to comment
Share on other sites

21 hours ago, ToukieToucan said:

Still a noob to KOS (and scripting in general), what are some good places to start learning scripting (so far I can (kind of, if 'ignore max temp is on) go into a 100km orbit).

 

Could you see what I could improve?

  Hide contents

CLEARSCREEN.

LOCK THROTTLE TO 1.0.  

PRINT "Counting down:".
FROM {local countdown is 10.} UNTIL countdown = 0 STEP {

SET countdown to countdown - 1.} DO {
    PRINT "..." + countdown.
    WAIT 1.
}

WHEN MAXTHRUST = 0 THEN {
    PRINT "Staging".
    STAGE.
    Preserve.
      }.

SET MYSTEER TO HEADING(90,90).
LOCK STEERING TO MYSTEER. 
UNTIL SHIP:APOAPSIS > 100000 { 

    IF SHIP:VELOCITY:SURFACE:MAG < 100 {
        SET MYSTEER TO HEADING(90,90).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 100 AND SHIP:VELOCITY:SURFACE:MAG < 200 {
        SET MYSTEER TO HEADING(90,80).
        PRINT "Pitching to 80 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

   
    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 200 AND SHIP:VELOCITY:SURFACE:MAG < 300 {
        SET MYSTEER TO HEADING(90,70).
        PRINT "Pitching to 70 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 300 AND SHIP:VELOCITY:SURFACE:MAG < 400 {
        SET MYSTEER TO HEADING(90,60).
        PRINT "Pitching to 60 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 400 AND SHIP:VELOCITY:SURFACE:MAG < 500 {
        SET MYSTEER TO HEADING(90,50).
        PRINT "Pitching to 50 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 500 AND SHIP:VELOCITY:SURFACE:MAG < 600 {
        SET MYSTEER TO HEADING(90,40).
        PRINT "Pitching to 40 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 600 AND SHIP:VELOCITY:SURFACE:MAG < 700 {
        SET MYSTEER TO HEADING(90,30).
        PRINT "Pitching to 30 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 700 AND SHIP:VELOCITY:SURFACE:MAG < 800 {
        SET MYSTEER TO HEADING(90,11).
        PRINT "Pitching to 20 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    } ELSE IF SHIP:VELOCITY:SURFACE:MAG >= 800 {
        SET MYSTEER TO HEADING(90,10).
        PRINT "Pitching to 10 degrees" AT(0,15).
        PRINT ROUND(SHIP:APOAPSIS,0) AT (0,16).

    }.

}.

PRINT "100km apoapsis reached, cutting throttle".

SET SHIP:CONTROL:PILOTMAINTHROTTLE TO 0.

global throt is 0.
lock throttle to throt.
lock steering to prograde.
until periapsis >= 100000 {
IF eta:apoapsis < 30 AND throt <1 {
SET throt to 1.}
If eta:apoapsis >50 and throt >0 {
Set throt to 0. }
IF eta:apoapsis >1000 and throt <1 {
Set throt to 1. }
}
unlock steering.
unlock throttle.

Print "check".

 

The problem I've found with tying pitch to speed is that your pitch will vary dramatically per rocket and the higher your TWR the sooner it will pitch over. If you pitch over too quickly you'll end up with a lot of atmospheric resistance, so what I found worked better is tying pitch to altitude instead and so I put together a handy little script that'll execute a fairly smooth pitch maneuver, regardless of TWR. This script is fairly customizable too in that you can tell it what altitude you want your final orbit (orbitAlt), what heading you want to launch at (compass) and when you want the pitch maneuver to end. (pitchEnd, I'll note this is the altitude at which the rocket's pitch will be at 0 degrees)

CLEARSCREEN.

PARAMETER orbitAlt.
PARAMETER compass.
PARAMETER pitchEnd.

SET currPitch TO 0.

LOCK STEERING TO R(0,0,-90) + HEADING(compass,90 - currPitch).
LOCK THROTTLE TO 1.0.

WAIT UNTIL SHIP:VELOCITY:SURFACE:MAG > 100.

UNTIL SHIP:APOAPSIS > orbitAlt {
	
	IF SHIP:ALTITUDE <= pitchEnd AND SHIP:ALTITUDE > (pitchEnd / 90) * currPitch AND currPitch < 90 {
		SET currPitch TO currPitch + 1.
	}
	
	PRINT "PITCH PROGRAM " + (90 - currPitch) AT (30,0).
	PRINT "STEER ERROR: " + ROUND(steeringmanager:angleerror,3) AT (30,1).
	
	WAIT 0.
}

LOCK THROTTLE TO 0.

Keep in mind if you're going to use this script or a variation of it, that I'm only showing you my basic pitch maneuver script and have removed the atmospheric compensation, circulatization, and staging portions of the script. Oh and also if you don't know how to run a script with parameters, you'd type in something like this (without quotes, of course) "RUN FILENAME(orbitAlt,compass,pitchEnd)." (example: "RUN LAUNCH(100000,90,40000).")

Anyways, hope you can learn something from that. Good luck with your future scripting endeavors. *tips hat*

Edited by CoriW
Link to comment
Share on other sites

I use both RemoteTech with signal delay and Mechjeb. I use MJ to land probes still keeping the connection active (most of my probes are carried by a spacecraft that keeps orbiting the body and working as relay for the probe). I also find the signal delay a must, an example: you need to gather science in a specific point of your orbit around a body, but on that point there is no connection because there is the body you are orbiting between you and Mission Control. Let's say the signal delay is 5 min.. you can tell the spacecraft to do science 5 minutes before you reach that point and if 5 minutes are not enough you can add further delay to the command. 

Besides that I like the signal delay because it's like real space exploration and well who doesn't like that here ;)? 

 

Link to comment
Share on other sites

7 hours ago, ToukieToucan said:

Those parameters are pretty neato, they can be custom names, right? 

@CoriW

Yeah, you can set them to whatever you want, a parameter is just a variable that allows you to set it through the command you use to run the script. I'll also note that you can also set parameters to default to a value if not entered in the run command like so..

PARAMETER pitchEnd IS 40000.

So by having the parameter setup like that, you could still enter your own value for pitchEnd in the run command, but if you left it blank it'd default to 40000. One thing I will note about setting parameters to have default values is that if you're using both required and optional parameters, the required ones have to come first. For example.

PARAMETER orbitAlt.
PARAMETER compass IS 90.
PARAMETER pitchEnd IS 40000.

So with the above you could run the command "RUN LAUNCH(100000)." and it would default the "compass" parameter to 90 and the "pitchEnd" parameter to 40000. If you were to use the command "RUN LAUNCH(100000,45)." then it would override the default for compass to be 45 and let pitchEnd default to 40000. Make sense?

EDIT: This page outlines how parameters work: https://ksp-kos.github.io/KOS/language/variables.html

Edited by CoriW
Link to comment
Share on other sites

6 hours ago, CoriW said:

PARAMETER orbitAlt.
PARAMETER compass = 90.
PARAMETER pitchEnd = 40000.

 

Minor syntax nitpick.  These have to be done with the keyword "is" rather than "=", which was done just to make them consistent with how the existing "LOCAL FOO IS VALUE." syntax works.

 

Link to comment
Share on other sites

Just now, Steven Mading said:

Minor syntax nitpick.  These have to be done with the keyword "is" rather than "=", which was done just to make them consistent with how the existing "LOCAL FOO IS VALUE." syntax works.

 

Oh woops my bad, I'm too used to other programming languages. I'll correct that in the post. Thanks.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...