Browse Source

Hover script

The trick is that the throttle is higher when falling than when rising
Petra Lamborn 6 years ago
parent
commit
e67c0434aa
1 changed files with 53 additions and 0 deletions
  1. 53
    0
      hover.py

+ 53
- 0
hover.py View File

@@ -0,0 +1,53 @@
1
+#! /bin/python3
2
+# Hover vessel
3
+import time
4
+import krpc
5
+
6
+# Target altitude in meters
7
+target_altitude = 100
8
+
9
+# The IP of the KRPC server (if not same computer)
10
+remote = '192.168.1.10'
11
+# Make connection
12
+conn = krpc.connect(name='Hover', address=remote)
13
+
14
+# Important objects
15
+vessel = conn.space_center.active_vessel
16
+body = vessel.orbit.body
17
+r_frame = body.reference_frame
18
+print(vessel.name)
19
+
20
+vessel.control.throttle = 0.0
21
+vessel.control.activate_next_stage()
22
+
23
+grav = body.surface_gravity
24
+at = vessel.available_thrust
25
+
26
+vessel.control.legs = False
27
+vessel.auto_pilot.target_pitch_and_heading(90, 90)
28
+vessel.auto_pilot.engage()
29
+timepoint = 0
30
+
31
+print('timepoint, current_altitude, v_speed, mass, minviable')
32
+while at > 0:
33
+    vm = vessel.mass
34
+    minviable = (vm * grav) / at
35
+    current_altitude = vessel.flight(r_frame).surface_altitude
36
+    v_speed = vessel.flight(r_frame).vertical_speed
37
+    print(timepoint, current_altitude, v_speed, vm, minviable, sep=',')
38
+    if current_altitude > target_altitude:
39
+        if v_speed < 0:
40
+            vessel.control.throttle = minviable * 0.6
41
+        else:
42
+            vessel.control.throttle = 0
43
+    else:
44
+        if v_speed > 0:
45
+            vessel.control.throttle = (2 - ((current_altitude + 20) /
46
+                                            (target_altitude + 20))) * minviable
47
+        else:
48
+            vessel.control.throttle = (3 - (current_altitude / target_altitude)) * minviable
49
+    time.sleep(0.1)
50
+    at = vessel.available_thrust
51
+    timepoint = timepoint + 1
52
+
53
+conn.close()