summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2017-08-27 17:30:15 -0700
committerKeith Packard <keithp@keithp.com>2017-08-27 17:40:53 -0700
commitbef7c37d1c986cd477367c0c015be61368a788d2 (patch)
tree86f31874be5ec6caf5be39f52e1335a8f4a2848b
parent2dce02efd54ad4051f1ddb94048696e8677dd225 (diff)
altos/test: Integrate raw accel to provide speed for comparison
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>
-rw-r--r--src/test/ao_flight_test.c37
-rwxr-xr-xsrc/test/plottest13
2 files changed, 28 insertions, 22 deletions
diff --git a/src/test/ao_flight_test.c b/src/test/ao_flight_test.c
index 65b939c0..7683a4d9 100644
--- a/src/test/ao_flight_test.c
+++ b/src/test/ao_flight_test.c
@@ -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();
}
diff --git a/src/test/plottest b/src/test/plottest
index 7d253ff1..95337f10 100755
--- a/src/test/plottest
+++ b/src/test/plottest
@@ -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