My Kerbal RPC scripts

plane.py 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #! /bin/python3
  2. # A script that flies a plane
  3. import time
  4. import krpc
  5. # The IP of the KRPC server (if not same computer)
  6. remote = '192.168.1.10'
  7. # Make connection
  8. conn = krpc.connect(name='Plane autopilot', address=remote)
  9. # Important objects
  10. vessel = conn.space_center.active_vessel
  11. body = vessel.orbit.body
  12. r_frame = body.reference_frame
  13. surf_vel = conn.get_call(getattr, vessel.flight(r_frame), 'horizontal_speed')
  14. srf_altitude = conn.get_call(getattr, vessel.flight(), 'surface_altitude')
  15. vert_vel = conn.get_call(getattr, vessel.flight(r_frame), 'vertical_speed')
  16. print(vessel.name)
  17. vessel.control.brakes = True
  18. vessel.auto_pilot.target_pitch_and_heading(0, 90)
  19. vessel.auto_pilot.engage()
  20. #vessel.auto_pilot.sas = True
  21. vessel.control.throttle = 1
  22. print('Launching!')
  23. vessel.control.activate_next_stage()
  24. time.sleep(3)
  25. vessel.control.brakes = False
  26. expr = conn.krpc.Expression.greater_than(
  27. conn.krpc.Expression.call(surf_vel),
  28. conn.krpc.Expression.constant_double(60))
  29. event = conn.krpc.add_event(expr)
  30. with event.condition:
  31. event.wait()
  32. print('Tilt up')
  33. vessel.auto_pilot.target_pitch_and_heading(20, 90)
  34. expr = conn.krpc.Expression.greater_than(
  35. conn.krpc.Expression.call(srf_altitude),
  36. conn.krpc.Expression.constant_double(40))
  37. event = conn.krpc.add_event(expr)
  38. with event.condition:
  39. event.wait()
  40. print('Gear up')
  41. vessel.control.gear = False
  42. expr = conn.krpc.Expression.greater_than(
  43. conn.krpc.Expression.call(surf_vel),
  44. conn.krpc.Expression.constant_double(200))
  45. event = conn.krpc.add_event(expr)
  46. with event.condition:
  47. event.wait()
  48. print('glide')
  49. vessel.auto_pilot.target_pitch_and_heading(5, 90)
  50. vessel.control.throttle = 0.20
  51. time.sleep(35)
  52. print('turn')
  53. vessel.control.roll = 0.03
  54. vessel.auto_pilot.target_pitch_and_heading(5, 120)
  55. time.sleep(8)
  56. vessel.auto_pilot.target_pitch_and_heading(5, 180)
  57. time.sleep(8)
  58. vessel.auto_pilot.target_pitch_and_heading(5, 210)
  59. time.sleep(8)
  60. vessel.auto_pilot.target_pitch_and_heading(2, 270)
  61. vessel.control.roll = 0.00
  62. vessel.control.throttle = 0.025
  63. while vessel.flight(r_frame).horizontal_speed > 90:
  64. if vessel.flight(r_frame).surface_altitude > 100:
  65. print('Nose down')
  66. vessel.auto_pilot.target_pitch_and_heading(-5, 270)
  67. elif vessel.flight(r_frame).surface_altitude < 75:
  68. print('Nose up')
  69. vessel.auto_pilot.target_pitch_and_heading(7, 270)
  70. time.sleep(1)
  71. vessel.control.gear = True
  72. vessel.auto_pilot.target_pitch_and_heading(3, 270)
  73. expr = conn.krpc.Expression.less_than(
  74. conn.krpc.Expression.call(srf_altitude),
  75. conn.krpc.Expression.constant_double(30))
  76. event = conn.krpc.add_event(expr)
  77. with event.condition:
  78. event.wait()
  79. vessel.control.brakes = True
  80. vessel.control.throttle = 0
  81. conn.close()