My Kerbal RPC scripts

plane.py 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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.169.1.10'
  7. conn = krpc.connect(name='Plane autopilot', address=remote)
  8. vessel = conn.space_center.active_vessel
  9. body = vessel.orbit.body
  10. r_frame = body.reference_frame
  11. print(vessel.name)
  12. vessel.control.brakes = True
  13. vessel.auto_pilot.target_pitch_and_heading(0, 90)
  14. vessel.auto_pilot.engage()
  15. #vessel.auto_pilot.sas = True
  16. vessel.control.throttle = 1
  17. print('Launching!')
  18. vessel.control.activate_next_stage()
  19. time.sleep(3)
  20. vessel.control.brakes = False
  21. surf_vel = conn.get_call(getattr, vessel.flight(r_frame), 'horizontal_speed')
  22. expr = conn.krpc.Expression.greater_than(
  23. conn.krpc.Expression.call(surf_vel),
  24. conn.krpc.Expression.constant_double(60))
  25. event = conn.krpc.add_event(expr)
  26. with event.condition:
  27. event.wait()
  28. print('Tilt up')
  29. vessel.auto_pilot.target_pitch_and_heading(20, 90)
  30. srf_altitude = conn.get_call(getattr, vessel.flight(), 'surface_altitude')
  31. expr = conn.krpc.Expression.greater_than(
  32. conn.krpc.Expression.call(srf_altitude),
  33. conn.krpc.Expression.constant_double(40))
  34. event = conn.krpc.add_event(expr)
  35. with event.condition:
  36. event.wait()
  37. print('Gear up')
  38. vessel.control.gear = False
  39. expr = conn.krpc.Expression.greater_than(
  40. conn.krpc.Expression.call(surf_vel),
  41. conn.krpc.Expression.constant_double(200))
  42. event = conn.krpc.add_event(expr)
  43. with event.condition:
  44. event.wait()
  45. print('glide')
  46. vessel.auto_pilot.target_pitch_and_heading(5, 90)
  47. vessel.control.throttle = 0.20
  48. time.sleep(35)
  49. vessel.control.roll = 0.03
  50. vessel.auto_pilot.target_pitch_and_heading(5, 120)
  51. time.sleep(8)
  52. vessel.auto_pilot.target_pitch_and_heading(5, 180)
  53. time.sleep(8)
  54. vessel.auto_pilot.target_pitch_and_heading(5, 210)
  55. time.sleep(8)
  56. vessel.auto_pilot.target_pitch_and_heading(2, 270)
  57. time.sleep(8)
  58. vessel.control.roll = 0.00
  59. vessel.control.throttle = 0
  60. vessel.auto_pilot.target_pitch_and_heading(-15, 270)
  61. expr = conn.krpc.Expression.less_than(
  62. conn.krpc.Expression.call(srf_altitude),
  63. conn.krpc.Expression.constant_double(300))
  64. event = conn.krpc.add_event(expr)
  65. with event.condition:
  66. event.wait()
  67. vessel.auto_pilot.target_pitch_and_heading(2, 270)
  68. vessel.control.gear = True
  69. expr = conn.krpc.Expression.less_than(
  70. conn.krpc.Expression.call(srf_altitude),
  71. conn.krpc.Expression.constant_double(30))
  72. event = conn.krpc.add_event(expr)
  73. with event.condition:
  74. event.wait()
  75. vessel.auto_pilot.target_pitch_and_heading(14, 270)
  76. time.sleep(5)
  77. vert_vel = conn.get_call(getattr, vessel.flight(r_frame),
  78. 'vertical_speed')
  79. expr = conn.krpc.Expression.less_than(
  80. conn.krpc.Expression.call(vert_vel),
  81. conn.krpc.Expression.constant_double(0))
  82. event = conn.krpc.add_event(expr)
  83. with event.condition:
  84. event.wait()
  85. vessel.auto_pilot.target_pitch_and_heading(5, 270)
  86. vessel.control.brakes = True
  87. conn.close()