My Kerbal RPC scripts

plane.py 2.8KB

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