Browse Source

Basic analysis (beginning)

Petra Lamborn 6 years ago
parent
commit
4b768f08c0
3 changed files with 29 additions and 2 deletions
  1. 1
    0
      .gitignore
  2. 20
    0
      analysis.rmd
  3. 8
    2
      hover.py

+ 1
- 0
.gitignore View File

@@ -1 +1,2 @@
1 1
 *.swp
2
+*.csv

+ 20
- 0
analysis.rmd View File

@@ -0,0 +1,20 @@
1
+---
2
+title: "Flight analysis"
3
+---
4
+
5
+This file creates graphs of recorded flight parameters
6
+
7
+```{r init}
8
+library(ggplot2)
9
+library(scales)
10
+flight <- read.csv("flight.csv", header=T)
11
+```
12
+
13
+```{r graph}
14
+baseg <- ggplot(flight, aes(x=timepoint / 10)) + xlab("Time (seconds)") + theme_classic()
15
+alt <- baseg + geom_line(aes(y=current_altitude)) + ylab("Altitude (m)") + title("Altitude"
16
+spd <- baseg + geom_line(aes(y=v_speed)) + ylab("Vertical speed (m/s)") + title("Vertical speed")
17
+mass <- baseg + geom_line(aes(y=mass)) + ylab("Vessel mass (kg)") + title("Mass")
18
+fuel <- baseg + geom_line(aes(y=fuel)) + ylab("Fuel (kg)") + title("Fuel")
19
+minvia <- baseg + geom_line(aes(y=minviable)) + scale_y_continuous(labels=scales::percent) + ylab("Minimum viable thrust percentage") + title("Throttle")
20
+```

+ 8
- 2
hover.py View File

@@ -6,6 +6,8 @@ import krpc
6 6
 # Target altitude in meters
7 7
 target_altitude = 100
8 8
 
9
+datafile = 'flight.csv'
10
+
9 11
 # The IP of the KRPC server (if not same computer)
10 12
 remote = '192.168.1.10'
11 13
 # Make connection
@@ -22,19 +24,22 @@ vessel.control.activate_next_stage()
22 24
 
23 25
 grav = body.surface_gravity
24 26
 at = vessel.available_thrust
27
+dry_mass = vessel.dry_mass
25 28
 
26 29
 vessel.control.legs = False
27 30
 vessel.auto_pilot.target_pitch_and_heading(90, 90)
28 31
 vessel.auto_pilot.engage()
29 32
 timepoint = 0
30 33
 
31
-print('timepoint, current_altitude, v_speed, mass, minviable')
34
+f = open(datafile, 'w')
35
+
36
+f.write('timepoint, current_altitude, v_speed, mass, fuel, minviable\n')
32 37
 while at > 0:
33 38
     vm = vessel.mass
34 39
     minviable = (vm * grav) / at
35 40
     current_altitude = vessel.flight(r_frame).surface_altitude
36 41
     v_speed = vessel.flight(r_frame).vertical_speed
37
-    print(timepoint, current_altitude, v_speed, vm, minviable, sep=',')
42
+    f.write('{0}, {1}, {2}, {3}, {4}, {5}\n'.format(timepoint, current_altitude, v_speed, vm, vm - dry_mass, minviable))
38 43
     if current_altitude > target_altitude:
39 44
         if v_speed < 0:
40 45
             vessel.control.throttle = minviable * 0.6
@@ -50,4 +55,5 @@ while at > 0:
50 55
     at = vessel.available_thrust
51 56
     timepoint = timepoint + 1
52 57
 
58
+f.close()
53 59
 conn.close()