- ekf2 can now run in multi-instance mode (currently up to 9 instances)
- in multi mode all estimates are published to alternate topics (eg estimator_attitude instead of vehicle_attitude)
- new ekf2 selector runs in multi-instance mode to monitor and compare all instances, selecting a primary (eg N x estimator_attitude => vehicle_attitude)
- sensors module accel & gyro inconsistency checks are now relative to the mean of all instances, rather than the current primary (when active ekf2 selector is responsible for choosing primary accel & gyro)
- existing consumers of estimator_status must check estimator_selector_status to select current primary instance status
- ekf2 single instance mode is still fully supported and the default
Co-authored-by: Paul Riseborough <gncsolns@gmail.com>
* refactor ekf analysis part 1: move plotting to functions
* add plot_check_flags plot function
* put plots in seperate file
* use object-oriented programming for plotting
* move functions for post processing and pdf report creation to new files
* add in_air_detector and description as a csv file
* refactor metrics and checks into separate functions
* refactor metrics into seperate file, seperate plotting
* ecl-ekf tools: re-structure folder and move results table generation
* ecl-ekf-tool: fix imports and test_results_table
* ecl-ekf tools: bugfix output observer tracking error plot
* ecl-ekf-tools: update batch processing to new api, fix exception handling
* ecl-ekf-tools: use correct in_air_detector
* ecl-ekf-tools: rename csv file containing the bare test results table
* ecl-tools: refactor for improving readability
* ecl-ekf tools: small plotting bugfixes
* ecl-ekf tools: small bugfixes in_air time, on_ground_trans, filenames
* ecl-ekf-tools: fix amber metric bug
* ecl-ekf-tools: remove custom function in inairdetector
* ecl-ekf-tools: remove import of pandas
* ecl-ekf-tools: add python interpreter to the script start
* ecl-ekf-tools pdf_report: fix python interpreter line
* px4-dev-ros-kinetic: update container tag to 2019-02-13
* ecl-ekf-tools python interpreter line: call python3 bin directly
* ecl-ekf-tools: change airtime from namedtuple to class for python 3.5
* ecl-ekf-tools: update docker image px4-dev-ros-kinetic
* ecl-ekf-tools: fix memory leak by correctly closing matplotlib figures
The high frequency acceleration noise levels in the gazebo models and also seen on some hardware is causing the IMU vibration check warning to fail.
The thresholds have been lifted and the reporting improved to make it clearer which sensor noise is causing the failure.
- process_log_data: exit with code -1 if whole system analysis fails
- batch_process_logdata and process_log_data: pipe sensor safety
margin argument to the arguments of the superseeding scripts
- reduce minimum flight length for analysis to 50 samples
analyse_logdata_ekf:
- fix the buffer to start the analyses 5s after takeoff and end
them 5s before landing for logs that start or finish in air
- add flag for turning on-off 5s late start early end buffer
- split the combined imu sensor check into checks for vibration,
bias and output predictor
analyse_logdata_ekf:
- add sideslip innovation fail check flag to fix wrongly selected
bits for hagl innovation and optical flow innovations
- plot sideslip innovation fail
- add gps fix type fail flag to fix wrongly selected bits for all
gps check fail flags
- plot gps fix type
- analysed_logdata: add filter_fault_status check to test_results
dictionary to prevent a missing entry exception
- analyse_logdata: fix one-off errors of list indices due to python
non-inclusive end indices
- move the analysis parts of the process_logdata_ekf script to
the 'analyse_ekf' function in a new file analyse_logdata_ekf.py
- return a test_results dictionary from analyse_ekf
- still process log loading, preprocessing and results file output in
process_logdata_ekf
- add command line argument to toggle plotting
- add command line argument to use different dictionary to check_level_dict.csv