altos/test: Replace state name with 10* state value in test log. Fix raw speed
authorKeith Packard <keithp@keithp.com>
Mon, 7 May 2018 15:56:32 +0000 (08:56 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 7 May 2018 16:21:56 +0000 (09:21 -0700)
Using a state value means we can plot state changes along with the
rest of the graph. Raw speed (simple integrated acceleration) was
busted; mostly needing to skip the first accel sample.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/test/ao_flight_test.c
src/test/plottest

index 2d862f82a944f5663281273bbcf52b1c45b859a7..8fe3b5df466e6b9ee858bcfd10bf58ebd9878db1 100644 (file)
@@ -504,7 +504,7 @@ ao_insert(void)
        ao_data_ring[ao_data_head] = ao_data_static;
        if (ao_flight_state != ao_flight_startup) {
 #if HAS_ACCEL
-               double  accel = ((ao_flight_ground_accel - ao_data_accel_cook(&ao_data_static)) * GRAVITY * 2.0) /
+               double  accel = ((ao_flight_ground_accel - ao_data_accel(&ao_data_static)) * GRAVITY * 2.0) /
                        (ao_config.accel_minus_g - ao_config.accel_plus_g);
 #else
                double  accel = 0.0;
@@ -515,7 +515,12 @@ ao_insert(void)
                        tick_offset = -ao_data_static.tick;
                if ((prev_tick - ao_data_static.tick) > 0x400)
                        tick_offset += 65536;
-               simple_speed += accel * (ao_data_static.tick - prev_tick) / 100.0;
+               if (prev_tick) {
+                       int ticks = ao_data_static.tick - prev_tick;
+                       if (ticks < 0)
+                               ticks += 65536;
+                       simple_speed += accel * ticks / 100.0;
+               }
                prev_tick = ao_data_static.tick;
                time = (double) (ao_data_static.tick + tick_offset) / 100;
 
@@ -653,7 +658,7 @@ ao_insert(void)
 
 #if 1
                        printf("%7.2f height %8.2f accel %8.3f accel_speed %8.3f "
-                              "state %-8.8s k_height %8.2f k_speed %8.3f k_accel %8.3f avg_height %5d drogue %4d main %4d error %5d"
+                              "state %d k_height %8.2f k_speed %8.3f k_accel %8.3f avg_height %5d drogue %4d main %4d error %5d"
 #if TELEMEGA
                               " angle %5d "
                               "accel_x %8.3f accel_y %8.3f accel_z %8.3f gyro_x %8.3f gyro_y %8.3f gyro_z %8.3f mag_x %8d mag_y %8d, mag_z %8d mag_angle %4d "
@@ -663,7 +668,7 @@ ao_insert(void)
                               height,
                               accel,
                               simple_speed > -100.0 ? simple_speed : -100.0,
-                              ao_state_names[ao_flight_state],
+                              ao_flight_state * 10,
                               ao_k_height / 65536.0,
                               ao_k_speed / 65536.0 / 16.0,
                               ao_k_accel / 65536.0 / 16.0,
index 95337f10eca7be43ea1f28bb05b202a4715c9d73..e427604ac4c488335677685c5ff295708cb9baf6 100755 (executable)
@@ -1,4 +1,5 @@
 gnuplot -persist << EOF
+set title "$1"
 set ylabel "altitude (m)"
 set y2label "velocity (m/s), acceleration(m/s²)"
 set xlabel "time (s)"
@@ -13,5 +14,6 @@ plot "$1" using 1:3 with lines axes x1y1 title "raw height",\
 "$1" using 1:15 with lines axes x1y2 title "accel",\
 "$1" using 1:19 with lines axes x1y1 title "drogue",\
 "$1" using 1:21 with lines axes x1y1 title "main",\
-"$1" using 1:23 with lines axes x1y1 title "error"
+"$1" using 1:23 with lines axes x1y1 title "error",\
+"$1" using 1:9 with lines axes x1y2 title "state"
 EOF