From 45483f8cc3351e31c6eea9d33bd9507005199bfe Mon Sep 17 00:00:00 2001 From: johannes Date: Wed, 20 Jun 2018 10:46:00 +0200 Subject: [PATCH] ecl ekf tools: print check failures and warnings (for IMU) to stdout --- Tools/ecl_ekf/analyse_logdata_ekf.py | 11 +++++++++++ Tools/ecl_ekf/batch_process_logdata_ekf.py | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Tools/ecl_ekf/analyse_logdata_ekf.py b/Tools/ecl_ekf/analyse_logdata_ekf.py index e65663317b..d2c15c9940 100644 --- a/Tools/ecl_ekf/analyse_logdata_ekf.py +++ b/Tools/ecl_ekf/analyse_logdata_ekf.py @@ -1311,17 +1311,20 @@ def analyse_ekf(estimator_status, ekf2_innovations, sensor_preflight, check_leve test_results['master_status'][0] = 'Warning' test_results['imu_sensor_status'][0] = 'Warning' test_results['imu_vibration_check'][0] = 'Warning' + print('IMU vibration check warning.') if ((test_results.get('imu_dang_bias_median')[0] > check_levels.get('imu_dang_bias_median_warn')) or (test_results.get('imu_dvel_bias_median')[0] > check_levels.get('imu_dvel_bias_median_warn'))): test_results['master_status'][0] = 'Warning' test_results['imu_sensor_status'][0] = 'Warning' test_results['imu_bias_check'][0] = 'Warning' + print('IMU bias check warning.') if ((test_results.get('output_obs_ang_err_median')[0] > check_levels.get('obs_ang_err_median_warn')) or (test_results.get('output_obs_vel_err_median')[0] > check_levels.get('obs_vel_err_median_warn')) or (test_results.get('output_obs_pos_err_median')[0] > check_levels.get('obs_pos_err_median_warn'))): test_results['master_status'][0] = 'Warning' test_results['imu_sensor_status'][0] = 'Warning' test_results['imu_output_predictor_check'][0] = 'Warning' + print('IMU output predictor check warning.') # check for failures if ((test_results.get('magx_fail_percentage')[0] > check_levels.get('mag_fail_pct')) or (test_results.get('magy_fail_percentage')[0] > check_levels.get('mag_fail_pct')) or @@ -1329,33 +1332,41 @@ def analyse_ekf(estimator_status, ekf2_innovations, sensor_preflight, check_leve (test_results.get('mag_percentage_amber')[0] > check_levels.get('mag_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['mag_sensor_status'][0] = 'Fail' + print('Magnetometer sensor check failure.') if (test_results.get('yaw_fail_percentage')[0] > check_levels.get('yaw_fail_pct')): test_results['master_status'][0] = 'Fail' test_results['yaw_sensor_status'][0] = 'Fail' + print('Yaw sensor check failure.') if ((test_results.get('vel_fail_percentage')[0] > check_levels.get('vel_fail_pct')) or (test_results.get('vel_percentage_amber')[0] > check_levels.get('vel_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['vel_sensor_status'][0] = 'Fail' + print('Velocity sensor check failure.') if ((test_results.get('pos_fail_percentage')[0] > check_levels.get('pos_fail_pct')) or (test_results.get('pos_percentage_amber')[0] > check_levels.get('pos_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['pos_sensor_status'][0] = 'Fail' + print('Position sensor check failure.') if ((test_results.get('hgt_fail_percentage')[0] > check_levels.get('hgt_fail_pct')) or (test_results.get('hgt_percentage_amber')[0] > check_levels.get('hgt_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['hgt_sensor_status'][0] = 'Fail' + print('Height sensor check failure.') if ((test_results.get('tas_fail_percentage')[0] > check_levels.get('tas_fail_pct')) or (test_results.get('tas_percentage_amber')[0] > check_levels.get('tas_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['tas_sensor_status'][0] = 'Fail' + print('Airspeed sensor check failure.') if ((test_results.get('hagl_fail_percentage')[0] > check_levels.get('hagl_fail_pct')) or (test_results.get('hagl_percentage_amber')[0] > check_levels.get('hagl_amber_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['hagl_sensor_status'][0] = 'Fail' + print('Height above ground sensor check failure.') if ((test_results.get('ofx_fail_percentage')[0] > check_levels.get('flow_fail_pct')) or (test_results.get('ofy_fail_percentage')[0] > check_levels.get('flow_fail_pct'))): test_results['master_status'][0] = 'Fail' test_results['flow_sensor_status'][0] = 'Fail' + print('Optical flow sensor check failure.') if (test_results.get('filter_faults_max')[0] > 0): test_results['master_status'][0] = 'Fail' test_results['filter_fault_status'][0] = 'Fail' diff --git a/Tools/ecl_ekf/batch_process_logdata_ekf.py b/Tools/ecl_ekf/batch_process_logdata_ekf.py index 890d456fa1..a94c526e7f 100755 --- a/Tools/ecl_ekf/batch_process_logdata_ekf.py +++ b/Tools/ecl_ekf/batch_process_logdata_ekf.py @@ -40,7 +40,7 @@ if not args.overwrite: # analyse all ulog files for ulog_file in ulog_files: - print("\n"+"loading "+ulog_file +" for analysis") + print("\n"+"loading " + ulog_file + " for analysis") if args.no_sensor_safety_margin: os.system("python process_logdata_ekf.py {} --no-sensor-safety-margin".format(ulog_file)) else: