Browse Source

Initial commit

Petra Lamborn 6 years ago
commit
5fb8a4a345
4 changed files with 157 additions and 0 deletions
  1. 1
    0
      .gitignore
  2. 3
    0
      README.md
  3. 47
    0
      helloworld.py
  4. 106
    0
      plane.py

+ 1
- 0
.gitignore View File

@@ -0,0 +1 @@
1
+*.swp

+ 3
- 0
README.md View File

@@ -0,0 +1,3 @@
1
+# Kerbal RPC scripts
2
+
3
+Some playing around with KRPC.

+ 47
- 0
helloworld.py View File

@@ -0,0 +1,47 @@
1
+import krpc
2
+conn = krpc.connect(name='Hello World')
3
+vessel = conn.space_center.active_vessel
4
+print(vessel.name)
5
+
6
+vessel.auto_pilot.target_pitch_and_heading(90, 90)
7
+vessel.auto_pilot.engage()
8
+vessel.auto_pilot.sas = True
9
+vessel.control.throttle = 1
10
+
11
+print('Launching!')
12
+vessel.control.activate_next_stage()
13
+
14
+mean_altitude = conn.get_call(getattr, vessel.flight(), 'mean_altitude')
15
+expr = conn.krpc.Expression.greater_than(
16
+    conn.krpc.Expression.call(mean_altitude),
17
+    conn.krpc.Expression.constant_double(1000))
18
+event = conn.krpc.add_event(expr)
19
+with event.condition:
20
+    event.wait()
21
+
22
+print('Gravity turn')
23
+vessel.auto_pilot.target_pitch_and_heading(60, 90)
24
+
25
+fuel_amount = conn.get_call(vessel.resources.amount, 'SolidFuel')
26
+expr = conn.krpc.Expression.equal(
27
+    conn.krpc.Expression.call(fuel_amount),
28
+    conn.krpc.Expression.constant_float(0.0))
29
+event = conn.krpc.add_event(expr)
30
+with event.condition:
31
+    event.wait()
32
+
33
+print('Detatching upper stage')
34
+vessel.control.activate_next_stage()
35
+vessel.auto_pilot.disengage()
36
+vessel.auto_pilot.sas = False
37
+
38
+srf_altitude = conn.get_call(getattr, vessel.flight(), 'surface_altitude')
39
+expr = conn.krpc.Expression.less_than(
40
+    conn.krpc.Expression.call(srf_altitude),
41
+    conn.krpc.Expression.constant_double(1000))
42
+event = conn.krpc.add_event(expr)
43
+with event.condition:
44
+    event.wait()
45
+
46
+print('Deploying chute')
47
+vessel.control.activate_next_stage()

+ 106
- 0
plane.py View File

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