Nivekk / KOS

Fully programmable autopilot mod for KSP.
Other
80 stars 30 forks source link

Prograde angles wrong below 70,000M on Kerbin. #292

Open unixunion opened 10 years ago

unixunion commented 10 years ago

Hi, Im not sure if this is a bug or not, but when running the following code you will see that the difference between the steering angles and prograde angles below 70,000M is incorrect. Output example is below.

lock steering to UP + R(0,0,180).
lock throttle to 1.
stage.
wait 1.

set x to 1.

until 0 {
    print "altitude: " + floor(altitude) + " prograde:yaw: " + round(prograde:yaw,1) + " steering:yaw: " + round(steering:yaw,1).
    log "altitude: " + floor(altitude) +  " prograde:yaw: " + round(prograde:yaw,1) + " steering:yaw: " + round(steering:yaw,1) to mylog.
    wait 0.5.
}
altitude: 98 prograde:yaw: 83.2 steering:yaw: 166.2
altitude: 131 prograde:yaw: 89.6 steering:yaw: 166.2
altitude: 185 prograde:yaw: 95.3 steering:yaw: 166.2
altitude: 259 prograde:yaw: 100.2 steering:yaw: 166.2
altitude: 348 prograde:yaw: 104 steering:yaw: 166.2
altitude: 454 prograde:yaw: 107.2 steering:yaw: 166.2
altitude: 568 prograde:yaw: 109.6 steering:yaw: 166.2
altitude: 693 prograde:yaw: 111.5 steering:yaw: 166.2
altitude: 830 prograde:yaw: 113.2 steering:yaw: 166.2
altitude: 970 prograde:yaw: 114.5 steering:yaw: 166.2
altitude: 1122 prograde:yaw: 115.7 steering:yaw: 166.2
altitude: 1274 prograde:yaw: 116.7 steering:yaw: 166.2
altitude: 1432 prograde:yaw: 117.7 steering:yaw: 166.2
altitude: 1601 prograde:yaw: 118.6 steering:yaw: 166.2
altitude: 1769 prograde:yaw: 119.5 steering:yaw: 166.2
altitude: 1949 prograde:yaw: 120.3 steering:yaw: 166.2
altitude: 2128 prograde:yaw: 121.2 steering:yaw: 166.2
altitude: 2311 prograde:yaw: 122 steering:yaw: 166.2
altitude: 2508 prograde:yaw: 122.8 steering:yaw: 166.2
altitude: 2703 prograde:yaw: 123.7 steering:yaw: 166.2
altitude: 2911 prograde:yaw: 124.5 steering:yaw: 166.2
altitude: 3118 prograde:yaw: 125.3 steering:yaw: 166.2
altitude: 3331 prograde:yaw: 126.2 steering:yaw: 166.2
altitude: 3559 prograde:yaw: 127.1 steering:yaw: 166.2
altitude: 3786 prograde:yaw: 128 steering:yaw: 166.2
altitude: 4029 prograde:yaw: 128.9 steering:yaw: 166.2
altitude: 4271 prograde:yaw: 129.7 steering:yaw: 166.2
altitude: 4521 prograde:yaw: 130.6 steering:yaw: 166.2
altitude: 4789 prograde:yaw: 131.5 steering:yaw: 166.2
altitude: 5057 prograde:yaw: 132.5 steering:yaw: 166.2
altitude: 5344 prograde:yaw: 133.4 steering:yaw: 166.2
altitude: 5632 prograde:yaw: 134.3 steering:yaw: 166.2
altitude: 5930 prograde:yaw: 135.3 steering:yaw: 166.2
altitude: 6251 prograde:yaw: 136.2 steering:yaw: 166.2
altitude: 6573 prograde:yaw: 137.2 steering:yaw: 166.2
altitude: 6921 prograde:yaw: 138.1 steering:yaw: 166.2
altitude: 7269 prograde:yaw: 139.1 steering:yaw: 166.2
altitude: 7633 prograde:yaw: 140 steering:yaw: 166.2
altitude: 8026 prograde:yaw: 141 steering:yaw: 166.2
altitude: 8423 prograde:yaw: 141.9 steering:yaw: 166.2
altitude: 8853 prograde:yaw: 142.9 steering:yaw: 166.2
altitude: 9286 prograde:yaw: 143.8 steering:yaw: 166.2
altitude: 9741 prograde:yaw: 144.8 steering:yaw: 166.2
altitude: 10236 prograde:yaw: 145.7 steering:yaw: 166.2
altitude: 10737 prograde:yaw: 146.6 steering:yaw: 166.2
altitude: 11263 prograde:yaw: 146.2 steering:yaw: 166.2
altitude: 11764 prograde:yaw: 146.2 steering:yaw: 166.2
altitude: 12266 prograde:yaw: 146.3 steering:yaw: 166.2
altitude: 12792 prograde:yaw: 146.5 steering:yaw: 166.2
altitude: 13304 prograde:yaw: 146.7 steering:yaw: 166.2
altitude: 13844 prograde:yaw: 147 steering:yaw: 166.2
altitude: 14373 prograde:yaw: 147.4 steering:yaw: 166.2
altitude: 14913 prograde:yaw: 147.7 steering:yaw: 166.2
altitude: 15486 prograde:yaw: 148.2 steering:yaw: 166.2
altitude: 16052 prograde:yaw: 148.6 steering:yaw: 166.2
altitude: 16656 prograde:yaw: 149 steering:yaw: 166.2
altitude: 17253 prograde:yaw: 149.5 steering:yaw: 166.2
altitude: 17868 prograde:yaw: 149.9 steering:yaw: 166.2
altitude: 18513 prograde:yaw: 150.4 steering:yaw: 166.2
altitude: 19166 prograde:yaw: 150.9 steering:yaw: 166.2
altitude: 19865 prograde:yaw: 151.4 steering:yaw: 166.2
altitude: 20561 prograde:yaw: 151.8 steering:yaw: 166.3
altitude: 21280 prograde:yaw: 152.3 steering:yaw: 166.3
altitude: 22051 prograde:yaw: 152.8 steering:yaw: 166.3
altitude: 22819 prograde:yaw: 153.2 steering:yaw: 166.3
altitude: 23645 prograde:yaw: 153.6 steering:yaw: 166.3
altitude: 24467 prograde:yaw: 154.1 steering:yaw: 166.3
altitude: 25318 prograde:yaw: 154.5 steering:yaw: 166.3
altitude: 26232 prograde:yaw: 154.9 steering:yaw: 166.3
altitude: 27143 prograde:yaw: 155.3 steering:yaw: 166.3
altitude: 28122 prograde:yaw: 155.6 steering:yaw: 166.3
altitude: 29098 prograde:yaw: 156 steering:yaw: 166.3
altitude: 30107 prograde:yaw: 156.4 steering:yaw: 166.3
altitude: 31191 prograde:yaw: 156.7 steering:yaw: 166.3
altitude: 32270 prograde:yaw: 157 steering:yaw: 166.3
altitude: 33430 prograde:yaw: 157.3 steering:yaw: 166.3
altitude: 34584 prograde:yaw: 157.6 steering:yaw: 166.3
altitude: 35776 prograde:yaw: 157.9 steering:yaw: 166.3
altitude: 37054 prograde:yaw: 158.2 steering:yaw: 166.3
altitude: 38351 prograde:yaw: 158.5 steering:yaw: 166.3
altitude: 39664 prograde:yaw: 158.7 steering:yaw: 166.3
altitude: 41019 prograde:yaw: 159 steering:yaw: 166.3
altitude: 42471 prograde:yaw: 159.2 steering:yaw: 166.3
altitude: 43913 prograde:yaw: 159.5 steering:yaw: 166.3
altitude: 45399 prograde:yaw: 159.7 steering:yaw: 166.3
altitude: 46989 prograde:yaw: 159.9 steering:yaw: 166.3
altitude: 48568 prograde:yaw: 160.1 steering:yaw: 166.3
altitude: 50256 prograde:yaw: 160.3 steering:yaw: 166.3
altitude: 51931 prograde:yaw: 160.5 steering:yaw: 166.3
altitude: 53655 prograde:yaw: 160.7 steering:yaw: 166.3
altitude: 55497 prograde:yaw: 160.8 steering:yaw: 166.3
altitude: 57323 prograde:yaw: 161 steering:yaw: 166.3
altitude: 59257 prograde:yaw: 161 steering:yaw: 166.3
altitude: 61136 prograde:yaw: 161.1 steering:yaw: 166.3
altitude: 63050 prograde:yaw: 161.3 steering:yaw: 166.3
altitude: 65076 prograde:yaw: 161.4 steering:yaw: 166.3
altitude: 67065 prograde:yaw: 161.5 steering:yaw: 166.3
altitude: 69171 prograde:yaw: 161.6 steering:yaw: 166.3
altitude: 71238 prograde:yaw: 161.7 steering:yaw: 166.3
altitude: 73344 prograde:yaw: 161.8 steering:yaw: 166.3
altitude: 75573 prograde:yaw: 161.9 steering:yaw: 166.3
altitude: 77760 prograde:yaw: 161.9 steering:yaw: 166.3
altitude: 80075 prograde:yaw: 162 steering:yaw: 166.3
altitude: 82347 prograde:yaw: 162 steering:yaw: 166.3
altitude: 84661 prograde:yaw: 162 steering:yaw: 166.3
altitude: 87110 prograde:yaw: 162.1 steering:yaw: 166.3
altitude: 89513 prograde:yaw: 162.3 steering:yaw: 166.3
altitude: 92056 prograde:yaw: 162.6 steering:yaw: 166.3
altitude: 94549 prograde:yaw: 163 steering:yaw: 166.3
altitude: 97087 prograde:yaw: 163.4 steering:yaw: 166.3
altitude: 99772 prograde:yaw: 163.5 steering:yaw: 166.4
altitude: 102407 prograde:yaw: 163.7 steering:yaw: 166.3
altitude: 105194 prograde:yaw: 163.9 steering:yaw: 166.3
altitude: 107928 prograde:yaw: 164.2 steering:yaw: 166.3
altitude: 110712 prograde:yaw: 164.3 steering:yaw: 166.3
altitude: 113659 prograde:yaw: 164.3 steering:yaw: 166.3
altitude: 116662 prograde:yaw: 164.3 steering:yaw: 166.3
altitude: 119610 prograde:yaw: 164.4 steering:yaw: 166.3
altitude: 122672 prograde:yaw: 164.4 steering:yaw: 166.3
altitude: 125732 prograde:yaw: 164.4 steering:yaw: 166.3
altitude: 128851 prograde:yaw: 164.5 steering:yaw: 166.3
altitude: 132089 prograde:yaw: 164.5 steering:yaw: 166.3
altitude: 135391 prograde:yaw: 164.5 steering:yaw: 166.3

/K

erendrake commented 10 years ago

If i remember correctly the prograde vector is relative to your orbit and the steering vector is relative to the surface. It might account for the difference, ill check it out and maybe expose the surface vector too.

unixunion commented 10 years ago

Ok, It could be that, however I am trying to follow the navball prograde in my code. Ill check steering out. But when I launch and use SAS to head as straight up as possible ( navball confirms that ), I get a reading of prograde:yaw: 83.2. should this not be closer to 180?

/K

jcramb commented 10 years ago

I am having a big problem with this also. Trying to implement a real gravity turn as opposed to just "turn at 10km etc.", I need to lock the roll and yaw, but allow pitch to change naturally under gravity and kOS is failing pretty hard. The steering variable doesn't allow me to lock roll/yaw while keeping pitch unlocked... and so I try to lock it to the prograde vector, but the one displayed by the navball (which is correct) is not even close to what is displayed by kOS.

Hope this can be fixed soon, because kOS is kickass and I would like my launch script to be able to do proper gravity turns.

Is there ever a reason why the prograde vector in kOS should not be the same as the navball?

erendrake commented 10 years ago

Im pretty sure that locking prograde locks to orbital prograde, and you are trying to get surface prograde?

jcramb commented 10 years ago

That would explain it :) Is there anyway I can access my surface prograde? I am pretty keen to be able to lock/unlock on a member basis too, how difficult do you think that would be to implement. If it is simple enough to do I will try to code it up.

bshepherdson commented 10 years ago

You can't lock on a member basis, but you can write expressions for the components instead of single values. Then the values will be updated every tick, and your rocket will follow a smooth curve.

On Saturday, February 8, 2014 3:19:23 AM, John Cramb < notifications@github.com> wrote:

That would explain it :) Is there anyway I can access my surface prograde? I am pretty keen to be able to lock/unlock on a member basis too, how difficult do you think that would be to implement. If it is simple enough to do I will try to code it up.

Reply to this email directly or view it on GitHubhttps://github.com/Nivekk/KOS/issues/292#issuecomment-34538473 .

dcrockwell commented 9 years ago

Accessing surface prograde as a rotation rather than a vector is essential for allowing the proper euler rotation of the craft while following surface prograde on the navbal..

Without it, we're forced to use LOCK STEERING TO R(0,0,0) + VELOCITY:SURFACE which returns a vector that you cannot rotate.

erendrake commented 9 years ago

just FYI, this is the repo for the old version from 2013. if we dont have this issue in the new repo https://github.com/KSP-KOS/KOS i would appreicate you adding it so we can discuss it

dcrockwell commented 9 years ago

Oh Sorry! Thank you very much Eren!