logaritm Posted March 21, 2018 Share Posted March 21, 2018 (edited) 33 minutes ago, FumbeiNumbie said: Hi! Not sure if I can help you with your question but I wonder what you mean by normal gravity turn. Especially compared to actual gravity turn. My script gradually turns to 45 degrees before 12 km, then it continues turning and flattens out right at apogee. This approach is far from real gravity turn. If only I could find an equation that would describe ships trajectory. Then locking autopilot's pitch and heading to alpha and 90 (where alpha is defined by the equation) would be a relatively easy thing. Meh, if only... well what i do is when the rocket reaches 100m/s~ i tip it to about 80~ degrees and disable controls, gravity then pulls the vessel down in such a way i get a nice turn into space, which starts at 100km with low earth orbits at 200km~ since i use "real space" Edited March 21, 2018 by logaritm Quote Link to comment Share on other sites More sharing options...
FumbeiNumbie Posted March 21, 2018 Share Posted March 21, 2018 3 minutes ago, logaritm said: well what i do is when the rocket reaches 100m/s~ i tip it to about 80~ degrees and disable controls controls, gravity then pulls the vessel down in such a way i get a nice turn into space, which starts at 100km with low earth orbits at 200km~ since i use "real space" But you still want autopilot to check if you are on optimal trajectory, right? If that's the case I would imagine something that sets the course much like my script does, measures the angle between your ship's velocity vector and desired vector and takes action if the angle is too big. But if you do that, it's just easier to let the autopilot fly the ship from the beginning. So we go back to the best trajectory. Something tells me it is a brachistochrone curve. But I won't go further. Quote Link to comment Share on other sites More sharing options...
logaritm Posted March 21, 2018 Share Posted March 21, 2018 (edited) 19 minutes ago, FumbeiNumbie said: But you still want autopilot to check if you are on optimal trajectory, right? If that's the case I would imagine something that sets the course much like my script does, measures the angle between your ship's velocity vector and desired vector and takes action if the angle is too big. But if you do that, it's just easier to let the autopilot fly the ship from the beginning. So we go back to the best trajectory. Something tells me it is a brachistochrone curve. But I won't go further. when i was reading around about optimal accent paths pretty much all i could find said that they are very vessel dependent, i don't know how true it is but somewhere it said that NASA calculate the optimal accent path by pretty much just brute forcing it, anyway the conclusion i drew from it all was that doing the "basic" definition of the gravity turn was a good start Edited March 21, 2018 by logaritm Quote Link to comment Share on other sites More sharing options...
FumbeiNumbie Posted March 21, 2018 Share Posted March 21, 2018 1 minute ago, logaritm said: when i was reading around about optimal accent paths pretty much all i could find said that they are very vessel dependent, i don't know how true it is but somewhere it said that NASA calculate the optimal accent path by pretty much just brute forcing it, anyway the conclusion i drew from it all was that doing the "true" definition of the gravity turn was a good start I used gravity turn in kOS at first. But I got inconsistent results with different ships so I started using hardwired solutions. On another topic: has anyone tried to make a windows forms app for KRPC in C#? Got any decent results? Quote Link to comment Share on other sites More sharing options...
FumbeiNumbie Posted March 21, 2018 Share Posted March 21, 2018 22 minutes ago, FumbeiNumbie said: has anyone tried to make a windows forms app for KRPC in C#? Got any decent results? Never mind. My code works. I have no idea why. Quote Link to comment Share on other sites More sharing options...
artwhaley Posted March 21, 2018 Share Posted March 21, 2018 I was going to suggest the same - you could still let autopilot check and maintain pitch. If your rocket 'wants' to fly the curve then it should take very little control input to stay on course, but guidance checks wouldn't be a bad thing either way! But you'd have to mathematically describe your ideal curve. Which is the sort of thing KRPC is great at! You could log pitch, altitude and velocity for several typical launcher configurations flying without guidance and then try to derive an equation to describe them! For my demo script here https://github.com/krpc/krpc-library/tree/master/Art_Whaleys_KRPC_Demos I just used a quadratic shape... and it's not terrible... but I'd love to upgrade to something more efficient! If you really do want to just let pitch to it's thing while AP controls yaw and roll, then you can just set the pitch PID's to zero so there's no control authority. Here's a super quick and dirty example of that I hacked together. Things that aren't totally obvious - The last 10 lines or so are just there to re-enable autotune every 10 seconds and then disable it again. That lets the autopilot keep itself tuned correctly as mass and control torque change over time. I don't know that it's totally necessary, but it seemed like a good idea. #Configure ascent parameters HEADING = 90 ROLL = 0 ALT = 100000 import time import krpc #Setup KRPC conn = krpc.connect() sc = conn.space_center v = sc.active_vessel #Configure initial Autopilot values ap = v.auto_pilot ap.target_pitch_and_heading(90, HEADING) ap.target_roll = ROLL ap.engage() #Launch v.control.activate_next_stage() # Engine Startup #Vertical Ascent while(v.flight(v.orbit.body.reference_frame).vertical_speed < 100): time.sleep(.1) #Pitch Over ap.target_pitch_and_heading(80, HEADING) time.sleep(10) #ap.wait() ought to work here... but it was never unblocking so I cheated for this quick test #Disable pitch guidance ap.auto_tune = False ap.pitch_pid_gains = (0,0,0) #Retune Yaw and Roll AP every 10 seconds nextcalibration = time.time() + 10 while(v.orbit.apoapsis_altitude < ALT): if(time.time() > nextcalibration): ap.target_pitch = v.flight(v.surface_reference_frame).pitch #Lock AP to current Pitch ap.auto_tune = True # Auto tone all controllers time.sleep (.1) ap.auto_tune = False ap.pitch_pid_gains = (0,0,0) #Release Pitch control again nextcalibration = time.time() + 10 time.sleep(.1) v.control.throttle = 0.0 #MECO Quote Link to comment Share on other sites More sharing options...
logaritm Posted March 22, 2018 Share Posted March 22, 2018 22 hours ago, artwhaley said: i currently have something like that aside from the tuning part, anywho i'm currently working more towards actually getting something into orbit and the optimization will come later, right now I'm wondering about what exactly the method "current_requirement" returns, i hope it's something like the amount of fuel burnt per time unit. Quote Link to comment Share on other sites More sharing options...
artwhaley Posted March 23, 2018 Share Posted March 23, 2018 To manually set tuning parameters you do have to turn off the autotune feature! As for just getting into orbit - it's not RSS optimized but certainly could be with some tweaking, but you can feel free to rob from my example at - https://github.com/krpc/krpc-library/blob/master/Art_Whaleys_KRPC_Demos/Simple_Launch_Script.py Someone math-y-er than me might be able to figure out a more efficient curve shape... and of course if you have limited engine lights you may want to do something smarter with the logic towards the end of ascent that tries to precisely tune the apoapsis. Quote Link to comment Share on other sites More sharing options...
FumbeiNumbie Posted March 23, 2018 Share Posted March 23, 2018 11 hours ago, logaritm said: I'm wondering about what exactly the method "current_requirement" returns, i hope it's something like the amount of fuel burnt per time unit. I think, there's an easier way. It is described in launch tutorial. It looks like this: double F = vessel.AvailableThrust; double Isp = vessel.SpecificImpulse * 9.82; double m0 = vessel.Mass; double m1 = m0 / Math.Exp(node.DeltaV / Isp); //mass after burn double flowRate = F / Isp; double burnTime = (m0 - m1) / flowRate; Quote Link to comment Share on other sites More sharing options...
logaritm Posted March 23, 2018 Share Posted March 23, 2018 (edited) 5 hours ago, FumbeiNumbie said: I think, there's an easier way. It is described in launch tutorial. It looks like this: double F = vessel.AvailableThrust; double Isp = vessel.SpecificImpulse * 9.82; double m0 = vessel.Mass; double m1 = m0 / Math.Exp(node.DeltaV / Isp); //mass after burn double flowRate = F / Isp; double burnTime = (m0 - m1) / flowRate; nice, skimmed trough the examples but must have missed it 12 hours ago, artwhaley said: To manually set tuning parameters you do have to turn off the autotune feature! As for just getting into orbit - it's not RSS optimized but certainly could be with some tweaking, but you can feel free to rob from my example at - https://github.com/krpc/krpc-library/blob/master/Art_Whaleys_KRPC_Demos/Simple_Launch_Script.py Someone math-y-er than me might be able to figure out a more efficient curve shape... and of course if you have limited engine lights you may want to do something smarter with the logic towards the end of ascent that tries to precisely tune the apoapsis. uh yah, when i mean get into orbit i mean orbit with no grace or finesse at all since i'm playing RP-0 career mode and my current vessel have like 500~ delta-V to spare lol Edited March 23, 2018 by logaritm Quote Link to comment Share on other sites More sharing options...
Ericwi Posted March 29, 2018 Share Posted March 29, 2018 Can some post a link or examples of KRPC and Arduino interaction? I can get connected but lack reference to interaction with objects in Arduino. Quote Link to comment Share on other sites More sharing options...
Kerbart Posted March 29, 2018 Share Posted March 29, 2018 Hey @djungelorm, I don’t want to sound like an ungrateful dog, but... since the 1.4.2 update I get an AVC warning despite the thread title stating 1.4.x? Quote Link to comment Share on other sites More sharing options...
artwhaley Posted March 30, 2018 Share Posted March 30, 2018 Bad dog! No kibbles for you, @Kerbart!!! Quote Link to comment Share on other sites More sharing options...
DiEvAl Posted March 30, 2018 Share Posted March 30, 2018 Is this a bug or am I misunderstanding what simulate_aerodynamic_force_at does? >>> kerbin = space_center.bodies['Kerbin'] >>> jool = space_center.bodies['Jool'] >>> print 'Kerbin rotating:', vessel.flight(kerbin.reference_frame ).simulate_aerodynamic_force_at(kerbin, (kerbin.equatorial_radius+10000,0,0), (0,0,0)) >>> print 'Kerbin inertial:', vessel.flight(kerbin.non_rotating_reference_frame).simulate_aerodynamic_force_at(kerbin, (kerbin.equatorial_radius+10000,0,0), (0,0,0)) >>> print ' Jool rotating:', vessel.flight(jool .reference_frame ).simulate_aerodynamic_force_at(jool , (jool .equatorial_radius+50000,0,0), (0,0,0)) >>> print ' Jool inertial:', vessel.flight(jool .non_rotating_reference_frame).simulate_aerodynamic_force_at(jool , (jool .equatorial_radius+50000,0,0), (0,0,0)) Kerbin rotating: (7015.528009767944, -41.65580368041992, -37885.88657339831) Kerbin inertial: (0.0, 0.0, -0.0) Jool rotating: (196773485.3791723, -1886926.75, -93153130.4682703) Jool inertial: (136595783.37232614, -2246031.5, 220058997.8491733) If my vessel were 10km above Kerbin's equator and rotating with Kerbin, I'd expect to get zeros. If my vessel were 10km above Kerbin's equator and not rotating with Kerbin, I'd expect to get some huge values. If my vessel were 50km above Jool's equator and rotating with Jool, I'd expect to get zeros. If my vessel were 50km above Jool's equator and not rotating with Jool, I'd expect to get some huge values. ---- Flight.SimulateAerodynamicForce converts the coordinates to World Space, and calls StockAerodynamics.SimAeroForce (I don't have FAR installed). Then SimAeroForce treats this world velocity as if it were relative to the atmosphere (e.g. mach = v_wrld_vel.magnitude / soundSpeed). Shouldn't it convert the velocity to body.ReferenceFrame first? Quote Link to comment Share on other sites More sharing options...
artwhaley Posted March 30, 2018 Share Posted March 30, 2018 On 3/29/2018 at 4:01 PM, Ericwi said: Can some post a link or examples of KRPC and Arduino interaction? I can get connected but lack reference to interaction with objects in Arduino. You inspired me to try to help... but... I can't get my Arduino to connect at all. I tried the example from the documentation, and the ones that were posted earlier in this thread. It hangs on the krpc_open line. I downloaded the library through the arduino library manager... copied the example code in... uploaded... I went to KSP and started the server with the default protobuf over serial settings (9600, 8n1), reset my arduino... and... nothing. If I can figure it out (Or if someone else can tell me what I'm doing wrong!) I'll try to hack together a couple of examples of doing stuff... my sketch - #include <krpc.h> #include <krpc/services/krpc.h> void setup() { krpc_connection_t conn; krpc_open(&conn, &Serial); krpc_connect(conn, "Basic example"); krpc_schema_Status status; krpc_KRPC_GetStatus(conn, &status); printf("Connected to kRPC server version %s\n", status.version); } void loop() { } Quote Link to comment Share on other sites More sharing options...
Ericwi Posted March 31, 2018 Share Posted March 31, 2018 (edited) On 3/30/2018 at 4:09 PM, artwhaley said: You inspired me to try to help... but... I can't get my Arduino to connect at all. I tried the example from the documentation, and the ones that were posted earlier in this thread. It hangs on the krpc_open line. I downloaded the library through the arduino library manager... copied the example code in... uploaded... I went to KSP and started the server with the default protobuf over serial settings (9600, 8n1), reset my arduino... and... nothing. If I can figure it out (Or if someone else can tell me what I'm doing wrong!) I'll try to hack together a couple of examples of doing stuff... my sketch - 4 #include <krpc.h> #include <krpc/services/krpc.h> HardwareSerial * conn; //I think you are mising this void setup() { conn = &Serial; krpc_open(&conn, NULL); krpc_connect(conn, "Arduino Example"); } void loop() { // put your main code here, to run repeatedly: } I am running KSP1.4.2 and KRPC 0.4.5 and IDE 1.8.5 and same serial setting. The server will not start if you have Serial Monitor open. Edited April 1, 2018 by Ericwi Quote Link to comment Share on other sites More sharing options...
MrZacbot Posted April 2, 2018 Share Posted April 2, 2018 (edited) Perhaps I'm being lazy but are there any precompiled binaries for the C++ client library for MSVC? I'm too stupid to follow the instructions.. Edited April 2, 2018 by MrZacbot Quote Link to comment Share on other sites More sharing options...
FumbeiNumbie Posted April 4, 2018 Share Posted April 4, 2018 @MrZacbot, you are not stupid. Quote Link to comment Share on other sites More sharing options...
MrZacbot Posted April 4, 2018 Share Posted April 4, 2018 Well I feel quite stupid when I fail to compile or install protobuf, let alone the actual client library... Quote Link to comment Share on other sites More sharing options...
HardZiin03 Posted April 7, 2018 Share Posted April 7, 2018 (edited) Someone help me please Im having issues to install the mod, the Beginners Guide instructions are not clear for me, it says: "Download and Install the mod". I downloaded it, when i open the zip file there's three main folders, GameData, Schema and Client, i know what to do with GameData, but where i need to put the other two folders, inside the KSP main folder ? Another question is about the kRPC Python module, it says that i need to type the command in the "command prompt", you mean, in the windows CMD ? Thank you guys. Edited April 7, 2018 by HardZiin03 Quote Link to comment Share on other sites More sharing options...
djungelorm Posted April 10, 2018 Author Share Posted April 10, 2018 Sorry for the slow responses guys - I was away on holiday and then swamped with other things last week. Got a bit more time to work on this now. @Ericwi here's the suborbital flight tutorial program written for Arduino: https://gist.github.com/djungelorm/a4b9d2e76a7828efc600257f8f4598db I will add Arduino examples to all the other tutorials in the docs soon. @Kerbart looks like kRPC runs just fine in 1.4.2. They caught me out by releasing this bug fix update while I was away - I'll get the warning removed in the next release. @MrZacbot I'm afraid their aren't. I don't have a copy of VS (or any experience with it). If someone else wants to provide binaries though I'd be happy to link them. If you can't get it to work on Windows, maybe try out Python instead - it's dead easy to install on Windows. @HardZiin03 Ignore the Schema and Client folders - you only need the GameData folder copied over your KSP install. You need to run "pip.exe install krpc" from windows CMD to install the client. Quote Link to comment Share on other sites More sharing options...
HardZiin03 Posted April 10, 2018 Share Posted April 10, 2018 10 hours ago, djungelorm said: Sorry for the slow responses guys - I was away on holiday and then swamped with other things last week. Got a bit more time to work on this now. @Ericwi here's the suborbital flight tutorial program written for Arduino: https://gist.github.com/djungelorm/a4b9d2e76a7828efc600257f8f4598db I will add Arduino examples to all the other tutorials in the docs soon. @Kerbart looks like kRPC runs just fine in 1.4.2. They caught me out by releasing this bug fix update while I was away - I'll get the warning removed in the next release. @MrZacbot I'm afraid their aren't. I don't have a copy of VS (or any experience with it). If someone else wants to provide binaries though I'd be happy to link them. If you can't get it to work on Windows, maybe try out Python instead - it's dead easy to install on Windows. @HardZiin03 Ignore the Schema and Client folders - you only need the GameData folder copied over your KSP install. You need to run "pip.exe install krpc" from windows CMD to install the client. Hey, im really noob in this thinks so, i can't install the client, i tried three ways. In the first one i typed "pip.exe install krpc" in the CMD and it returns an error: 'pip.exe' is not recognized as an internal or external command, operable program or batch file. In the second try i typed: "C:\Python36-32\Scripts pip.exe install krpc" and it returns the same error. And in the thirty way, i go to the python folder (C:\Python36-32\Scripts) and shift+right click, and clicked in the "Open powershell window here". And typed "pip.exe install krpc" and it returned a similar error saying that ''pip.exe'' is not a command. How i can't do this, im really dumb. Help me Quote Link to comment Share on other sites More sharing options...
djungelorm Posted April 10, 2018 Author Share Posted April 10, 2018 4 hours ago, HardZiin03 said: Hey, im really noob in this thinks so, i can't install the client, i tried three ways. In the first one i typed "pip.exe install krpc" in the CMD and it returns an error: 'pip.exe' is not recognized as an internal or external command, operable program or batch file. In the second try i typed: "C:\Python36-32\Scripts pip.exe install krpc" and it returns the same error. And in the thirty way, i go to the python folder (C:\Python36-32\Scripts) and shift+right click, and clicked in the "Open powershell window here". And typed "pip.exe install krpc" and it returned a similar error saying that ''pip.exe'' is not a command. How i can't do this, im really dumb. Help me Can you open the folder C:\Python36-32\Scripts in file explorer and verify that pip.exe exists? Also, the command you posted is missing a backslash. The command should probably be "C:\Python36-32\Scripts\pip.exe install krpc" (note the backslash between Scripts and pip.exe) Quote Link to comment Share on other sites More sharing options...
Kerbart Posted April 10, 2018 Share Posted April 10, 2018 (edited) When all else fails you can always try [path where python is]\python.exe -m pip install krpc Edited April 11, 2018 by Kerbart Updated formatting to something that's better than you can ever achieve using a mobile device on this ### forum. Quote Link to comment Share on other sites More sharing options...
HardZiin03 Posted April 11, 2018 Share Posted April 11, 2018 15 hours ago, djungelorm said: Can you open the folder C:\Python36-32\Scripts in file explorer and verify that pip.exe exists? Also, the command you posted is missing a backslash. The command should probably be "C:\Python36-32\Scripts\pip.exe install krpc" (note the backslash between Scripts and pip.exe) I got it, i just did what Kerbart told me, and it works 100% fine here. Maybe you can put his hint in the Beguinners Guide. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.