From c985bb6a19c710409629f3c095332ba7afcf5248 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 18 Mar 2011 20:36:59 -0700 Subject: altos/test: Add scripts to run lots of flights through the code This runs a long list of flights (there's a user-specific path pointing at the flights) and squawks if the baro and dual flight computers don't match. Signed-off-by: Keith Packard --- src/test/run-tests | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 src/test/run-tests (limited to 'src/test/run-tests') diff --git a/src/test/run-tests b/src/test/run-tests new file mode 100755 index 00000000..ec279776 --- /dev/null +++ b/src/test/run-tests @@ -0,0 +1,22 @@ +#!/bin/sh + +DIR=~/src/cc1111/flights + +while read flight; do + baro=`./ao_flight_test_baro -s $DIR/$flight | + awk '/drogue/ { printf "%s ", $4 } + /main/ { printf "%s\n", $4 }'` + full=`./ao_flight_test -s $DIR/$flight | + awk '/drogue/ { printf "%s ", $4 } + /main/ { printf "%s\n", $4 }'` + echo $flight $baro $full +done < test-flights | +awk '{ name = $1; + drogue_error = $2 - $4; + if (drogue_error < 0) drogue_error = -drogue_error; + main_error = $3 - $5; + if (main_error < 0) main_error = -main_error; + if (drogue_error > 4 || main_error > 4) + printf ("%s: baro drogue %f main %f. full drogue %f main %f\n", + name, $2, $3, $4, $5); + }' -- cgit v1.2.3 From 7d7b476564a16eda81ab3406f70a21995e1b464e Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 22 Mar 2011 21:51:52 +0900 Subject: altos: Fix up flight code testing This automates flight code testing by reporting mis-detected apogee or main events. Signed-off-by: Keith Packard --- src/ao_flight_test.c | 138 ++++++++++++++++++++++++++++++++++++-------------- src/test/run-one | 26 ++++++---- src/test/run-tests | 34 ++++++------- src/test/test-flights | 1 - 4 files changed, 131 insertions(+), 68 deletions(-) (limited to 'src/test/run-tests') diff --git a/src/ao_flight_test.c b/src/ao_flight_test.c index e7bfbdd2..51a5965c 100644 --- a/src/ao_flight_test.c +++ b/src/ao_flight_test.c @@ -22,6 +22,7 @@ #include #include #include +#include #define AO_HERTZ 100 @@ -87,11 +88,27 @@ enum ao_igniter { struct ao_adc ao_adc_static; +int drogue_height; +double drogue_time; +int main_height; +double main_time; + +int tick_offset; + +static int32_t ao_k_height; + void ao_ignite(enum ao_igniter igniter) { - printf ("ignite %s at %7.2f\n", igniter == ao_igniter_drogue ? "drogue" : "main", - (double) ao_adc_static.tick / 100.0); + double time = (double) (ao_adc_static.tick + tick_offset) / 100; + + if (igniter == ao_igniter_drogue) { + drogue_time = time; + drogue_height = ao_k_height >> 16; + } else { + main_time = time; + main_height = ao_k_height >> 16; + } } struct ao_task { @@ -108,7 +125,12 @@ struct ao_task { #define AO_FLIGHT_TEST +int ao_flight_debug; + FILE *emulator_in; +char *emulator_app; +char *emulator_name; +double emulator_error_max = 10; void ao_dump_state(void); @@ -157,51 +179,84 @@ struct ao_config ao_config; extern int16_t ao_ground_accel, ao_raw_accel; extern int16_t ao_accel_2g; -int32_t drogue_height; -int32_t main_height; - -int tick_offset; uint16_t prev_tick; static int ao_records_read = 0; static int ao_eof_read = 0; static int ao_flight_ground_accel; static int ao_flight_started = 0; +static int ao_test_max_height; +static double ao_test_max_height_time; +static int ao_test_main_height; +static double ao_test_main_height_time; void ao_insert(void) { + double time; + ao_adc_ring[ao_adc_head] = ao_adc_static; ao_adc_head = ao_adc_ring_next(ao_adc_head); - if (ao_summary) - return; - if (ao_flight_state == ao_flight_startup) - return; - { + if (ao_flight_state != ao_flight_startup) { double height = ao_pres_to_altitude(ao_raw_pres) - ao_ground_height; double accel = ((ao_flight_ground_accel - ao_adc_static.accel) * GRAVITY * 2.0) / (ao_config.accel_minus_g - ao_config.accel_plus_g); if (!tick_offset) - tick_offset = ao_adc_static.tick; - if (!drogue_height && ao_flight_state >= ao_flight_drogue) - drogue_height = ao_k_height; - if (!main_height && ao_flight_state >= ao_flight_main) - main_height = ao_k_height; - if ((prev_tick - ao_adc_static.tick) > 0) + tick_offset = -ao_adc_static.tick; + if ((prev_tick - ao_adc_static.tick) > 0x400) tick_offset += 65536; prev_tick = ao_adc_static.tick; - printf("%7.2f height %g accel %g state %s k_height %g k_speed %g k_accel %g drogue %g main %g error %d\n", - (double) (ao_adc_static.tick + tick_offset) / 100, - height, - accel, - 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, - drogue_height / 65536.0, - main_height / 65536.0, - ao_error_h_sq_avg); + time = (double) (ao_adc_static.tick + tick_offset) / 100; + if (!ao_summary) { + printf("%7.2f height %g accel %g state %s k_height %g k_speed %g k_accel %g drogue %d main %d error %d\n", + time, + height, + accel, + 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, + drogue_height, + main_height, + ao_error_h_sq_avg); + } + + if (ao_test_max_height < height) { + ao_test_max_height = height; + ao_test_max_height_time = time; + } + if (height > ao_config.main_deploy) { + ao_test_main_height_time = time; + ao_test_main_height = height; + } + } +} + +void +ao_test_exit(void) +{ + double drogue_error; + double main_error; + + if (!ao_test_main_height_time) { + ao_test_main_height_time = ao_test_max_height_time; + ao_test_main_height = ao_test_max_height; + } + drogue_error = fabs(ao_test_max_height_time - drogue_time); + main_error = fabs(ao_test_main_height_time - main_time); + if (drogue_error > emulator_error_max || main_error > emulator_error_max) { + printf ("%s %s\n", + emulator_app, emulator_name); + printf ("\tApogee error %g\n", drogue_error); + printf ("\tMain error %g\n", main_error); + printf ("\tActual: apogee: %d at %7.2f main: %d at %7.2f\n", + ao_test_max_height, ao_test_max_height_time, + ao_test_main_height, ao_test_main_height_time); + printf ("\tComputed: apogee: %d at %7.2f main: %d at %7.2f\n", + drogue_height, drogue_time, main_height, main_time); + exit (1); } + exit(0); } void @@ -228,8 +283,9 @@ ao_sleep(void *wchan) if (!fgets(line, sizeof (line), emulator_in)) { if (++ao_eof_read >= 1000) { - printf ("no more data, exiting simulation\n"); - exit(0); + if (!ao_summary) + printf ("no more data, exiting simulation\n"); + ao_test_exit(); } ao_adc_static.tick += 10; ao_insert(); @@ -247,10 +303,10 @@ ao_sleep(void *wchan) tick = strtoul(words[1], NULL, 16); a = strtoul(words[2], NULL, 16); b = strtoul(words[3], NULL, 16); - } else if (nword >= 6 && strcmp(words[0], "Accel")) { + } else if (nword >= 6 && strcmp(words[0], "Accel") == 0) { ao_config.accel_plus_g = atoi(words[3]); ao_config.accel_minus_g = atoi(words[5]); - } else if (nword >= 4 && strcmp(words[0], "Main")) { + } else if (nword >= 4 && strcmp(words[0], "Main") == 0) { ao_config.main_deploy = atoi(words[2]); } else if (nword >= 36 && strcmp(words[0], "CALL") == 0) { tick = atoi(words[10]); @@ -308,21 +364,17 @@ ao_sleep(void *wchan) void ao_dump_state(void) { - if (ao_flight_state == ao_flight_startup) - return; - if (ao_summary) - return; - if (ao_flight_state == ao_flight_landed) - exit(0); } static const struct option options[] = { { .name = "summary", .has_arg = 0, .val = 's' }, + { .name = "debug", .has_arg = 0, .val = 'd' }, { 0, 0, 0, 0}, }; void run_flight_fixed(char *name, FILE *f, int summary) { + emulator_name = name; emulator_in = f; ao_summary = summary; ao_flight_init(); @@ -336,11 +388,19 @@ main (int argc, char **argv) int c; int i; - while ((c = getopt_long(argc, argv, "s", options, NULL)) != -1) { +#if HAS_ACCEL + emulator_app="full"; +#else + emulator_app="baro"; +#endif + while ((c = getopt_long(argc, argv, "sd", options, NULL)) != -1) { switch (c) { case 's': summary = 1; break; + case 'd': + ao_flight_debug = 1; + break; } } diff --git a/src/test/run-one b/src/test/run-one index f9d21576..d661abec 100755 --- a/src/test/run-one +++ b/src/test/run-one @@ -1,17 +1,24 @@ #!/bin/sh -./ao_flight_test "$1" > run-out.full -./ao_flight_test_baro "$1" > run-out.baro -./ao_flight_test_accel "$1" > run-out.accel +for i in "$@"; do +./ao_flight_test "$i" > run-out.full +./ao_flight_test_baro "$i" > run-out.baro +#./ao_flight_test_accel "$i" > run-out.accel -gnuplot -persist << EOF +#"run-out.accel" using 1:9 with lines lt 4 axes x1y1 title "accel height",\ +#"run-out.accel" using 1:11 with lines lt 4 axes x1y2 title "accel speed",\ +#"run-out.accel" using 1:13 with lines lt 4 axes x1y2 title "accel accel",\ +#"run-out.accel" using 1:15 with lines lt 4 axes x1y1 title "accel drogue",\ +#"run-out.accel" using 1:17 with lines lt 4 axes x1y1 title "accel main",\ + +gnuplot << EOF set ylabel "altitude (m)" set y2label "velocity (m/s), acceleration(m/s²)" set xlabel "time (s)" set xtics border out nomirror set ytics border out nomirror set y2tics border out nomirror -set title "$1" +set title "$i" plot "run-out.full" using 1:3 with lines lw 2 lt 1 axes x1y1 title "raw height",\ "run-out.full" using 1:5 with lines lw 2 lt 1 axes x1y2 title "raw accel",\ "run-out.full" using 1:9 with lines lt 2 axes x1y1 title "full height",\ @@ -23,10 +30,7 @@ plot "run-out.full" using 1:3 with lines lw 2 lt 1 axes x1y1 title "raw height", "run-out.baro" using 1:11 with lines lt 3 axes x1y2 title "baro speed",\ "run-out.baro" using 1:13 with lines lt 3 axes x1y2 title "baro accel",\ "run-out.baro" using 1:15 with lines lt 3 axes x1y1 title "baro drogue",\ -"run-out.baro" using 1:17 with lines lt 3 axes x1y1 title "baro main",\ -"run-out.accel" using 1:9 with lines lt 4 axes x1y1 title "accel height",\ -"run-out.accel" using 1:11 with lines lt 4 axes x1y2 title "accel speed",\ -"run-out.accel" using 1:13 with lines lt 4 axes x1y2 title "accel accel",\ -"run-out.accel" using 1:15 with lines lt 4 axes x1y1 title "accel drogue",\ -"run-out.accel" using 1:17 with lines lt 4 axes x1y1 title "accel main" +"run-out.baro" using 1:17 with lines lt 3 axes x1y1 title "baro main" +pause mouse close EOF +done \ No newline at end of file diff --git a/src/test/run-tests b/src/test/run-tests index ec279776..11b4c95c 100755 --- a/src/test/run-tests +++ b/src/test/run-tests @@ -2,21 +2,21 @@ DIR=~/src/cc1111/flights +bad_baro=0 +bad_full=0 while read flight; do - baro=`./ao_flight_test_baro -s $DIR/$flight | - awk '/drogue/ { printf "%s ", $4 } - /main/ { printf "%s\n", $4 }'` - full=`./ao_flight_test -s $DIR/$flight | - awk '/drogue/ { printf "%s ", $4 } - /main/ { printf "%s\n", $4 }'` - echo $flight $baro $full -done < test-flights | -awk '{ name = $1; - drogue_error = $2 - $4; - if (drogue_error < 0) drogue_error = -drogue_error; - main_error = $3 - $5; - if (main_error < 0) main_error = -main_error; - if (drogue_error > 4 || main_error > 4) - printf ("%s: baro drogue %f main %f. full drogue %f main %f\n", - name, $2, $3, $4, $5); - }' + if ./ao_flight_test_baro -s $DIR/$flight; then + : + else + ((bad_baro++)) + fi + if ./ao_flight_test -s $DIR/$flight; then + : + else + ((bad_full++)) + fi +done < test-flights +echo baro errors $bad_baro +echo full errors $bad_full +((bad = bad_baro + bad_full)) +exit $bad \ No newline at end of file diff --git a/src/test/test-flights b/src/test/test-flights index afdaba5a..0b90d9e0 100644 --- a/src/test/test-flights +++ b/src/test/test-flights @@ -63,7 +63,6 @@ 2010-09-24-serial-236-flight-006.eeprom 2010-09-25-serial-223-flight-001.eeprom 2010-10-17-serial-215-flight-006.eeprom -2010-10-23-serial-236-flight-008.eeprom 2011-01-30-serial-056-flight-001.eeprom 2011-01-30-serial-250-flight-002.eeprom 2011-02-19-serial-215-flight-007.eeprom -- cgit v1.2.3 From 43a94380032300a2e33e1faa1efe93e858e0a2cf Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Wed, 23 Mar 2011 10:37:39 +0900 Subject: altos: Exit flight test at landing. Allow description in test flight list Signed-off-by: Keith Packard --- src/ao_flight_test.c | 77 +++++++++++++++++++++++++++------------------------- src/test/run-one | 3 +- src/test/run-tests | 2 +- 3 files changed, 43 insertions(+), 39 deletions(-) (limited to 'src/test/run-tests') diff --git a/src/ao_flight_test.c b/src/ao_flight_test.c index 51a5965c..91aa0f73 100644 --- a/src/ao_flight_test.c +++ b/src/ao_flight_test.c @@ -130,7 +130,7 @@ int ao_flight_debug; FILE *emulator_in; char *emulator_app; char *emulator_name; -double emulator_error_max = 10; +double emulator_error_max = 4; void ao_dump_state(void); @@ -189,6 +189,33 @@ static double ao_test_max_height_time; static int ao_test_main_height; static double ao_test_main_height_time; +void +ao_test_exit(void) +{ + double drogue_error; + double main_error; + + if (!ao_test_main_height_time) { + ao_test_main_height_time = ao_test_max_height_time; + ao_test_main_height = ao_test_max_height; + } + drogue_error = fabs(ao_test_max_height_time - drogue_time); + main_error = fabs(ao_test_main_height_time - main_time); + if (drogue_error > emulator_error_max || main_error > emulator_error_max) { + printf ("%s %s\n", + emulator_app, emulator_name); + printf ("\tApogee error %g\n", drogue_error); + printf ("\tMain error %g\n", main_error); + printf ("\tActual: apogee: %d at %7.2f main: %d at %7.2f\n", + ao_test_max_height, ao_test_max_height_time, + ao_test_main_height, ao_test_main_height_time); + printf ("\tComputed: apogee: %d at %7.2f main: %d at %7.2f\n", + drogue_height, drogue_time, main_height, main_time); + exit (1); + } + exit(0); +} + void ao_insert(void) { @@ -207,6 +234,16 @@ ao_insert(void) tick_offset += 65536; prev_tick = ao_adc_static.tick; time = (double) (ao_adc_static.tick + tick_offset) / 100; + + if (ao_test_max_height < height) { + ao_test_max_height = height; + ao_test_max_height_time = time; + } + if (height > ao_config.main_deploy) { + ao_test_main_height_time = time; + ao_test_main_height = height; + } + if (!ao_summary) { printf("%7.2f height %g accel %g state %s k_height %g k_speed %g k_accel %g drogue %d main %d error %d\n", time, @@ -219,44 +256,10 @@ ao_insert(void) drogue_height, main_height, ao_error_h_sq_avg); + if (ao_flight_state == ao_flight_landed) + ao_test_exit(); } - - if (ao_test_max_height < height) { - ao_test_max_height = height; - ao_test_max_height_time = time; - } - if (height > ao_config.main_deploy) { - ao_test_main_height_time = time; - ao_test_main_height = height; - } - } -} - -void -ao_test_exit(void) -{ - double drogue_error; - double main_error; - - if (!ao_test_main_height_time) { - ao_test_main_height_time = ao_test_max_height_time; - ao_test_main_height = ao_test_max_height; - } - drogue_error = fabs(ao_test_max_height_time - drogue_time); - main_error = fabs(ao_test_main_height_time - main_time); - if (drogue_error > emulator_error_max || main_error > emulator_error_max) { - printf ("%s %s\n", - emulator_app, emulator_name); - printf ("\tApogee error %g\n", drogue_error); - printf ("\tMain error %g\n", main_error); - printf ("\tActual: apogee: %d at %7.2f main: %d at %7.2f\n", - ao_test_max_height, ao_test_max_height_time, - ao_test_main_height, ao_test_main_height_time); - printf ("\tComputed: apogee: %d at %7.2f main: %d at %7.2f\n", - drogue_height, drogue_time, main_height, main_time); - exit (1); } - exit(0); } void diff --git a/src/test/run-one b/src/test/run-one index d661abec..7d0f95ae 100755 --- a/src/test/run-one +++ b/src/test/run-one @@ -3,13 +3,14 @@ for i in "$@"; do ./ao_flight_test "$i" > run-out.full ./ao_flight_test_baro "$i" > run-out.baro -#./ao_flight_test_accel "$i" > run-out.accel +#./ao_flight_test_accel "$i" > run-out.accel #"run-out.accel" using 1:9 with lines lt 4 axes x1y1 title "accel height",\ #"run-out.accel" using 1:11 with lines lt 4 axes x1y2 title "accel speed",\ #"run-out.accel" using 1:13 with lines lt 4 axes x1y2 title "accel accel",\ #"run-out.accel" using 1:15 with lines lt 4 axes x1y1 title "accel drogue",\ #"run-out.accel" using 1:17 with lines lt 4 axes x1y1 title "accel main",\ +# gnuplot << EOF set ylabel "altitude (m)" diff --git a/src/test/run-tests b/src/test/run-tests index 11b4c95c..3e0cad3c 100755 --- a/src/test/run-tests +++ b/src/test/run-tests @@ -4,7 +4,7 @@ DIR=~/src/cc1111/flights bad_baro=0 bad_full=0 -while read flight; do +while read flight description; do if ./ao_flight_test_baro -s $DIR/$flight; then : else -- cgit v1.2.3 From 9a8fec1b6d8f3346f988882ffb03d7d0e45b3c81 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sat, 14 Apr 2012 12:00:32 -0700 Subject: altos: Clean up test scripts The flight test scripts were using invalid bash syntax. Clean that up and also switch the default flight directory to my new ~/misc/rockets/flights directory. Signed-off-by: Keith Packard --- src/test/run-one | 16 +++++++++++++--- src/test/run-tests | 10 +++++----- 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src/test/run-tests') diff --git a/src/test/run-one b/src/test/run-one index 7d0f95ae..8fa0787c 100755 --- a/src/test/run-one +++ b/src/test/run-one @@ -1,10 +1,20 @@ #!/bin/sh +DIR=~/misc/rockets/flights + for i in "$@"; do -./ao_flight_test "$i" > run-out.full -./ao_flight_test_baro "$i" > run-out.baro +case "$i" in + */*) + file="$i" + ;; + *) + file="$DIR/$i" + ;; +esac +./ao_flight_test "$file" > run-out.full +./ao_flight_test_baro "$file" > run-out.baro -#./ao_flight_test_accel "$i" > run-out.accel +#./ao_flight_test_accel "$file" > run-out.accel #"run-out.accel" using 1:9 with lines lt 4 axes x1y1 title "accel height",\ #"run-out.accel" using 1:11 with lines lt 4 axes x1y2 title "accel speed",\ #"run-out.accel" using 1:13 with lines lt 4 axes x1y2 title "accel accel",\ diff --git a/src/test/run-tests b/src/test/run-tests index 3e0cad3c..a8a8dc3f 100755 --- a/src/test/run-tests +++ b/src/test/run-tests @@ -1,6 +1,6 @@ -#!/bin/sh +#!/bin/bash -DIR=~/src/cc1111/flights +DIR=~/misc/rockets/flights bad_baro=0 bad_full=0 @@ -8,15 +8,15 @@ while read flight description; do if ./ao_flight_test_baro -s $DIR/$flight; then : else - ((bad_baro++)) + : $((bad_baro++)) fi if ./ao_flight_test -s $DIR/$flight; then : else - ((bad_full++)) + : $((bad_full++)) fi done < test-flights echo baro errors $bad_baro echo full errors $bad_full -((bad = bad_baro + bad_full)) +: $((bad = bad_baro + bad_full)) exit $bad \ No newline at end of file -- cgit v1.2.3 From a60c5a728530e4659a6750d8d5b87000735d4531 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 10 Jul 2012 15:15:00 -0700 Subject: altos: Improve ao_flight_test a bit Add -i flag to include flight description Have run-tests know how many failures to expect Add run_baro to plot a single flight using the baro-only mode Signed-off-by: Keith Packard --- src/test/run-baro | 31 +++++++++++++++++++++++++++++++ src/test/run-tests | 17 +++++++++++------ src/test/test-flights | 14 +++++++------- 3 files changed, 49 insertions(+), 13 deletions(-) create mode 100755 src/test/run-baro (limited to 'src/test/run-tests') diff --git a/src/test/run-baro b/src/test/run-baro new file mode 100755 index 00000000..21bab9fb --- /dev/null +++ b/src/test/run-baro @@ -0,0 +1,31 @@ +#!/bin/sh + +for i in "$@"; do +./ao_flight_test_baro "$i" > run-out.baro + +#./ao_flight_test_accel "$i" > run-out.accel +#"run-out.accel" using 1:9 with lines lt 4 axes x1y1 title "accel height",\ +#"run-out.accel" using 1:11 with lines lt 4 axes x1y2 title "accel speed",\ +#"run-out.accel" using 1:13 with lines lt 4 axes x1y2 title "accel accel",\ +#"run-out.accel" using 1:15 with lines lt 4 axes x1y1 title "accel drogue",\ +#"run-out.accel" using 1:17 with lines lt 4 axes x1y1 title "accel main",\ +# + +gnuplot << EOF +set ylabel "altitude (m)" +set y2label "velocity (m/s), acceleration(m/s²)" +set xlabel "time (s)" +set xtics border out nomirror +set ytics border out nomirror +set y2tics border out nomirror +set title "$i" +plot "run-out.baro" using 1:3 with lines lw 2 lt 1 axes x1y1 title "raw height",\ +"run-out.baro" using 1:5 with lines lw 2 lt 2 axes x1y2 title "raw accel",\ +"run-out.baro" using 1:9 with lines lt 3 axes x1y1 title "baro height",\ +"run-out.baro" using 1:11 with lines lt 4 axes x1y2 title "baro speed",\ +"run-out.baro" using 1:13 with lines lt 5 axes x1y2 title "baro accel",\ +"run-out.baro" using 1:17 with lines lt 6 axes x1y1 title "baro drogue",\ +"run-out.baro" using 1:19 with lines lt 7 axes x1y1 title "baro main" +pause mouse close +EOF +done \ No newline at end of file diff --git a/src/test/run-tests b/src/test/run-tests index a8a8dc3f..4edecf1a 100755 --- a/src/test/run-tests +++ b/src/test/run-tests @@ -2,21 +2,26 @@ DIR=~/misc/rockets/flights +expect_baro=2 +expect_full=5 + bad_baro=0 bad_full=0 while read flight description; do - if ./ao_flight_test_baro -s $DIR/$flight; then + if ./ao_flight_test_baro -s -i "$description" $DIR/$flight; then : else : $((bad_baro++)) fi - if ./ao_flight_test -s $DIR/$flight; then + if ./ao_flight_test -s -i "$description" $DIR/$flight; then : else : $((bad_full++)) fi done < test-flights -echo baro errors $bad_baro -echo full errors $bad_full -: $((bad = bad_baro + bad_full)) -exit $bad \ No newline at end of file +echo baro errors $bad_baro expected $expect_baro +echo full errors $bad_full expected $expect_full +: $((miss_baro = bad_baro > expect_baro ? bad_baro - expect_baro : expect_baro - bad_baro)) +: $((miss_full = bad_full > expect_full ? bad_full - expect_full : expect_full - bad_full)) +: $((miss = miss_baro + miss_full)) +exit $miss \ No newline at end of file diff --git a/src/test/test-flights b/src/test/test-flights index f6b3b992..12f62ea9 100644 --- a/src/test/test-flights +++ b/src/test/test-flights @@ -29,7 +29,7 @@ 2010-02-28-serial-052-flight-004.eeprom LDDD Tillamook airport, 2010-02-28, I161 2010-03-06-serial-010-flight-004.eeprom Robert's Lil Nuke at Hudson Ranch on a CTI 108G57CL Pro29 2010-03-06-serial-013-flight-003.eeprom Trick-O-Treat at Hudson Ranch on a J595BS -2010-03-06-serial-051-flight-003.eeprom G-Spot at Hudson Ranch on an H180W +2010-03-06-serial-051-flight-003.eeprom G-Spot at Hudson Ranch on an H180W (apogee early, fools ao_flight_test_baro) 2010-03-06-serial-053-flight-004.eeprom Horizon Rebuilt at Hudson Ranch on a J530IM with MAWD as backup 2010-05-08-serial-229-flight-002.eeprom First customer flight on a sparky. 2010-05-28-serial-215-flight-002.eeprom Mike's L1 cert flight. Congrats! @@ -38,28 +38,28 @@ 2010-05-30-serial-010-flight-005.eeprom Robert's Lil Nuke on a 84G88 Smoky Sam at Mile High Mayhem 2010 Version 0.1 TeleMetrum with 5010 GPS board. 2010-05-30-serial-051-flight-004.eeprom Bdale's G-Spot on a CTI 298H159 Green3 at Mile High Mayhem 2010 2010-05-30-serial-224-flight-003.eeprom Bill Mott's L3 cert flight -2010-05-30-serial-226-flight-001.eeprom Robert's RG-2 on a 159G54RL at Mile High Mayhem. Very noise accel data, early apogee +2010-05-30-serial-226-flight-001.eeprom Robert's RG-2 on a 159G54RL at Mile High Mayhem. Very noise accel data, early apogee (fools full) 2010-05-31-serial-010-flight-006.eeprom Robert's Lil Nuke with a v0.1 TeleMetrum and 5010 GPS board flying on a 159G118 Blue Streak on the last day of Mile High Mayhem 2010 2010-05-31-serial-216-flight-001.eeprom Sharp Stick in the Sky on an "I something" EX motor from James Russell -2010-05-31-serial-219-flight-001.eeprom Candy Cane on CTI K300 at MHM. +2010-05-31-serial-219-flight-001.eeprom Candy Cane on CTI K300 at MHM. (accel noise fools full) 2010-05-31-serial-227-flight-003.eeprom Mike's Rocket on J285 for successful L2 cert at MHM 2010-06-05-serial-220-flight-001.eeprom Mini-mmuchness on 159G54RL, Sunday at MHM 2010 2010-06-26-serial-209-flight-003.eeprom Tripoli Colorado Spring Fling with COSROCS at the Buffalo Ranch -2010-06-26-serial-215-flight-004.eeprom Tripoli Colorado Spring Fling with COSROCS at the Buffalo Ranch +2010-06-26-serial-215-flight-004.eeprom Tripoli Colorado Spring Fling with COSROCS at the Buffalo Ranch (accel noise fools full) 2010-06-26-serial-220-flight-002.eeprom Mini Mmuchness on CTI H120CL to 1975m, OROC June 2010 2010-06-26-serial-226-flight-002.eeprom Tripoli Colorado Spring Fling with COSROCS at the Buffalo Ranch 2010-06-27-serial-221-flight-002.eeprom PSAS LV2c on N2000 at OROC june launch 2010-07-17-serial-230-flight-001.eeprom Mike Ward's Level 1 cert flight on H225 2010-07-18-serial-219-flight-002.eeprom MMuchness on M1230 for successful L3 cert flight 2010-08-07-serial-216-flight-003.eeprom Sharp stick on I300T at Metra's august launch. Main out at apogee. -2010-08-07-serial-220-flight-003.eeprom Mini-mmuchness flight at Metra after debconf. Unstable on G80. ABNORMAL FLIGHT. -2010-08-12-serial-236-flight-001.eeprom Edgar's L1 flight, Madcow Momba on Aerotech H128 +2010-08-07-serial-220-flight-003.eeprom Mini-mmuchness flight at Metra after debconf. Unstable on G80. ABNORMAL FLIGHT. (fools full) +2010-08-12-serial-236-flight-001.eeprom Edgar's L1 flight, Madcow Momba on Aerotech H128 (early apogee charge fools baro) 2010-08-21-serial-010-flight-007.eeprom Robert's Lil Nuke, flying on a CTI Pro29 2-grain 110G250 Vmax. Just awesome! PFND. 2010-08-21-serial-224-flight-004.eeprom Anthony Towns' LDDD clone, successful L1 cert on a CTI Pro38 2-grain 266H125 classic. Airframe was set up for apogee-only with motor based ejection. The BP charge was larger than necessary, caused nose cone to snap back against aft airframe. Minor damage to leading edge of aft airframe, big chunk of the nose cone skin cracked away. Same problem Bdale saw on Sharp Stick's nosecone, also from Performance Rocketry, where there was apparently an air bubble below the gel coat. Determination was that damage was cosmetic and would not affect cert... confirmed by successful L2 later in the day! 2010-08-21-serial-224-flight-005.eeprom Anthony Towns' LDDD clone, successful L2 cert on a CTI Pro38 5-grain 58J357 blue streak. Perfect drogueless dual deploy! 0.8-0.9 grams aft charge and about 1.0 grams forward. Flew without ground testing charges due to time pressure before waiver closed for the day. About as close to the waiver as you'd ever want to be on a cert flight, again demonstrating that OpenRocket under-estimates apogee ... approximately 6800 ft predicted... 2010-08-21-serial-233-flight-002.eeprom Tim van Milligan's 5.5" L2 airframe, flying on a CTI Pro38 6-grain 774J410 red, TM indicated a problem with the apogee igniter continuity, noticed during countdown, turned out to be a loose wire! Perfect dual deploy flight once that was fixed. 2010-09-03-serial-051-flight-005.eeprom G-spot on an old Aerotech H125-20W single use 29mm motor. It appears the ejection at apogee actually happened much later, perhaps as much as 10 seconds late! -2010-09-03-serial-215-flight-005.eeprom Horizon Rebuild on a K490 Green3 reload. PFND. About 1.4 grams each end. +2010-09-03-serial-215-flight-005.eeprom Horizon Rebuild on a K490 Green3 reload. PFND. About 1.4 grams each end. (accel noise fools full) 2010-09-24-serial-236-flight-006.eeprom LDDD on I236 in Sheridan on 2010-09-24 to 1216m 2010-09-25-serial-223-flight-001.eeprom Bdale's 10" Goblin, flying on a CTI Pro75 M1300 Imax dual thrust during Chili Blaster 2 at Hudson Ranch. First flight after rebuild to do dual deploy from one bay with ARRD and 15' surplus "+ sign" parachute. 2010-10-17-serial-215-flight-006.eeprom Horizon Rebuild on CTI J595BS at Tripoli Colorado launch site near Hartsel, CO -- cgit v1.2.3