My Kerbal RPC scripts

hover.py 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #! /bin/python3
  2. # Hover vessel
  3. import time
  4. import krpc
  5. # Target altitude in meters
  6. target_altitude = 1000
  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. dry_mass = vessel.dry_mass
  21. vessel.control.legs = False
  22. vessel.auto_pilot.target_pitch_and_heading(90, 90)
  23. vessel.auto_pilot.engage()
  24. timepoint = 0
  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. if current_altitude > target_altitude:
  31. if v_speed < 0:
  32. vessel.control.throttle = minviable * 0.6
  33. else:
  34. vessel.control.throttle = 0
  35. else:
  36. if v_speed > 0:
  37. vessel.control.throttle = (2 - ((current_altitude + 20) /
  38. (target_altitude + 20))) * minviable
  39. else:
  40. vessel.control.throttle = (3 - (current_altitude / target_altitude)) * minviable
  41. time.sleep(0.1)
  42. at = vessel.available_thrust
  43. timepoint = timepoint + 1
  44. conn.close()