altos/test: Integrate raw accel to provide speed for comparison
authorKeith Packard <keithp@keithp.com>
Mon, 28 Aug 2017 00:30:15 +0000 (17:30 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 28 Aug 2017 00:40:53 +0000 (17:40 -0700)
This can provide a useful visualization of the 'true' vs 'kalman'
speed value, as the kalman is necessarily delayed due to the model
assuming constant acceleration.

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

index 65b939c0f55f12d8478a6b0eed57717bf8c195a3..7683a4d9dbd4d50cbeac6a4fcf32784fad4ee79c 100644 (file)
@@ -264,6 +264,7 @@ double      main_time;
 int    tick_offset;
 
 static ao_k_t  ao_k_height;
+static double  simple_speed;
 
 int16_t
 ao_time(void)
@@ -501,6 +502,7 @@ 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;
                prev_tick = ao_data_static.tick;
                time = (double) (ao_data_static.tick + tick_offset) / 100;
 
@@ -616,17 +618,27 @@ ao_insert(void)
 #endif
 
 #if 1
-                       printf("%7.2f height %8.2f accel %8.3f "
-#if TELEMEGA && 1
-                              "angle %5d "
+                       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"
+#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 "
 #endif
-                              "state %-8.8s k_height %8.2f k_speed %8.3f k_accel %8.3f avg_height %5d drogue %4d main %4d error %5d\n",
+                              "\n",
                               time,
                               height,
                               accel,
-#if TELEMEGA && 1
-                              ao_sample_orient,
+                              simple_speed > -100.0 ? simple_speed : -100.0,
+                              ao_state_names[ao_flight_state],
+                              ao_k_height / 65536.0,
+                              ao_k_speed / 65536.0 / 16.0,
+                              ao_k_accel / 65536.0 / 16.0,
+                              ao_avg_height,
+                              drogue_height,
+                              main_height,
+                              ao_error_h_sq_avg
+#if TELEMEGA
+                              , ao_sample_orient,
 
                               ao_mpu6000_accel(ao_data_static.mpu6000.accel_x),
                               ao_mpu6000_accel(ao_data_static.mpu6000.accel_y),
@@ -637,18 +649,11 @@ ao_insert(void)
                               ao_data_static.hmc5883.x,
                               ao_data_static.hmc5883.y,
                               ao_data_static.hmc5883.z,
-                              ao_mag_angle,
+                              ao_mag_angle
 #endif
-                              ao_state_names[ao_flight_state],
-                              ao_k_height / 65536.0,
-                              ao_k_speed / 65536.0 / 16.0,
-                              ao_k_accel / 65536.0 / 16.0,
-                              ao_avg_height,
-                              drogue_height,
-                              main_height,
-                              ao_error_h_sq_avg);
+                               );
 #endif
-                       
+
 //                     if (ao_flight_state == ao_flight_landed)
 //                             ao_test_exit();
                }
index 7d253ff123ccedaa43b9580adf75544af9d70a87..95337f10eca7be43ea1f28bb05b202a4715c9d73 100755 (executable)
@@ -7,10 +7,11 @@ set ytics border out nomirror
 set y2tics border out nomirror
 plot "$1" using 1:3 with lines axes x1y1 title "raw height",\
 "$1" using 1:5 with lines axes x1y2 title "raw accel",\
-"$1" using 1:9 with lines axes x1y1 title "height",\
-"$1" using 1:11 with lines axes x1y2 title "speed",\
-"$1" using 1:13 with lines axes x1y2 title "accel",\
-"$1" using 1:17 with lines axes x1y1 title "drogue",\
-"$1" using 1:19 with lines axes x1y1 title "main",\
-"$1" using 1:21 with lines axes x1y1 title "error"
+"$1" using 1:7 with lines axes x1y2 title "accel speed",\
+"$1" using 1:11 with lines axes x1y1 title "height",\
+"$1" using 1:13 with lines axes x1y2 title "speed",\
+"$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"
 EOF