My Kerbal RPC scripts

hover.py 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #! /bin/python3
  2. # Hover vessel
  3. import time
  4. import krpc
  5. # Target altitude in meters
  6. target_altitude = 100
  7. # The IP of the KRPC server (if not same computer)
  8. remote = '192.168.1.10'
  9. # Make connection
  10. conn = krpc.connect(name='Hover', address=remote)
  11. # Important objects
  12. vessel = conn.space_center.active_vessel
  13. body = vessel.orbit.body
  14. r_frame = body.reference_frame
  15. print(vessel.name)
  16. vessel.control.throttle = 0.0
  17. vessel.control.activate_next_stage()
  18. grav = body.surface_gravity
  19. at = vessel.available_thrust
  20. vessel.control.legs = False
  21. vessel.auto_pilot.target_pitch_and_heading(90, 90)
  22. vessel.auto_pilot.engage()
  23. timepoint = 0
  24. print('timepoint, current_altitude, v_speed, mass, minviable')
  25. while at > 0:
  26. vm = vessel.mass
  27. minviable = (vm * grav) / at
  28. current_altitude = vessel.flight(r_frame).surface_altitude
  29. v_speed = vessel.flight(r_frame).vertical_speed
  30. print(timepoint, current_altitude, v_speed, vm, minviable, sep=',')
  31. if current_altitude > target_altitude:
  32. if v_speed < 0:
  33. vessel.control.throttle = minviable * 0.6
  34. else:
  35. vessel.control.throttle = 0
  36. else:
  37. if v_speed > 0:
  38. vessel.control.throttle = (2 - ((current_altitude + 20) /
  39. (target_altitude + 20))) * minviable
  40. else:
  41. vessel.control.throttle = (3 - (current_altitude / target_altitude)) * minviable
  42. time.sleep(0.1)
  43. at = vessel.available_thrust
  44. timepoint = timepoint + 1
  45. conn.close()