Commit Graph
100 Commits
Author SHA1 Message Date
Paul Riseborough a410893080 ecl: Update ekf2 to version that addresses known vulnerabilities
See:

https://github.com/PX4/ecl/pull/350
https://github.com/PX4/ecl/pull/354

Note the amount of stack allocation has had to be increased to accomodate pr350
2017-11-13 22:50:12 +01:00
Paul Riseborough b3d045d4d0 Revert "add boolean parameters to enable/disable each sensor"
This reverts commit 9fde19259e.
2017-10-30 20:49:36 +11:00
Paul Riseborough 3a57712d2b ecl: Use commit on master
This is a non-functional change that point to a commit on master instead of the merged branch.
2017-10-30 08:21:09 +01:00
Paul Riseborough 589d58ce87 ekf2: Fix bug preventing first IMU failover bias reset 2017-10-30 08:21:09 +01:00
Paul Riseborough 0c9e07c95a ekf2: repeat IMU bias reset until successful 2017-10-30 08:21:09 +01:00
Paul Riseborough 3fc7aba178 TECS: Use version in ECL library
This change updates a number of interfaces to use the new TECS implementation from the ECL library.
2017-10-22 21:56:06 +02:00
Paul Riseborough 85c076d54e update ecl/ekf submodule 2017-10-18 11:08:58 +02:00
Paul Riseborough ed950d70ce ekf2: Add missing documentation 2017-10-09 08:58:01 +02:00
Paul Riseborough dbc3a13236 ekf2: remove unused parameter
The logging of replay data is now controlled by the logging module
2017-10-09 08:58:01 +02:00
Paul Riseborough 6cfee65060 ekf2: Add parameters to tune accelerometer bias learning
These parameters enable the accel bias limiting and learning inhibit logic in the ecl EKF to be easily tuned during testing and replay.
2017-10-09 08:58:01 +02:00
Paul Riseborough 66277d0c02 ekf2: Added @reboot_required to parameters 2017-10-09 08:58:01 +02:00
Paul Riseborough 2a4336b6ef commander: EKF2 GPS requirement 20 sec after 3D lock 2017-10-06 16:22:53 -07:00
Paul Riseborough 0def4ace5f commander: check magnetometers for inconsistency preflight 2017-10-05 09:30:26 -07:00
Paul Riseborough 60a68d30c7 sensors: Calculate and publish magnetometer inconsistency 2017-10-05 09:30:26 -07:00
Paul Riseborough c7097085fa msg: publish magnetometer inconsistency level 2017-10-05 09:30:26 -07:00
Paul Riseborough f0e8abe783 mc_pos_control: Use arming state to prevent unsafe reference point changes 2017-09-24 03:46:42 -07:00
Paul Riseborough ef0e47ee63 mc_pos_control: Fix bug causing flyaway when GPS gained after takeoff
The change in origin when GPS was gained after takeoff was being used to shift the set point despite the previous origin being invalid.
2017-09-24 03:46:42 -07:00
Paul Riseborough c3b1ec8b24 commander: Changes resulting from code review
Change units of parameters from uSec to sec.
Change recommended FW value for COM_POS_FS_GAIN from 2 to 0
Fix error in parameter description for COM_POS_FS_PROB
Fix error in unit for COM_POS_FS_GAIN
2017-09-01 11:53:41 +02:00
Paul Riseborough 684a598d9f commander: Improve position failsafe parameter documentation 2017-09-01 11:53:41 +02:00
Paul Riseborough 491ba08af1 commander: Add parameters to control position failsafe behaviour
This is required because the hardcoded values were too sensitive for fixed wing use and bad initial mag heading could trigger the failsafe and lead to crashes on launch. The defaults have been left unchanged. Suitable values for fixed wing use will need to be implemented in the airframe specific config file.
2017-09-01 11:53:41 +02:00
Paul Riseborough 1dbac79c1b ecl: Compatibility update for PR #7602 2017-07-18 23:06:14 +02:00
Paul Riseborough 63cbce6bd3 ekf2: Increase RAM to remove stack space warnings 2017-07-06 22:20:48 +02:00
Paul Riseborough ee75f0eb0e ekf2: Use updated quaternion type def 2017-07-06 22:20:48 +02:00
Paul Riseborough b7a5fd3147 ecl: update to latest master with bug fixes 2017-07-06 22:20:48 +02:00
Paul Riseborough d68dd6ae1e ekf2: Fix parameter description typo 2017-06-21 09:28:42 +02:00
Paul Riseborough b3ceb37272 ekf2: Add parameter to set range dependant noise 2017-06-21 09:28:42 +02:00
Paul Riseborough 28017105f4 position_estimator_inav: publish vertical position derivative 2017-06-19 09:09:52 +02:00
Paul Riseborough a147179ad8 local_position_estimator: publish vertical position derivative 2017-06-19 09:09:52 +02:00
Paul Riseborough 7aec94d4d6 ekf_att_pos_estimator: publish vertical position derivative 2017-06-19 09:09:52 +02:00
Paul Riseborough 4b7ae78fda ekf2: publish vertical position derivative 2017-06-19 09:09:52 +02:00
Paul Riseborough 2e008dfbc4 msg: Add vertical derivative to vehicle position messages
This enables control loops that are sensitive to vertical velocity offsets to use a vertical velocity that is kinematically consistent with the vertical position.
2017-06-19 09:09:52 +02:00
Paul Riseborough 862201cc4c ecl: EKF update
Adds interface for vertical position derivative
2017-06-19 09:09:52 +02:00
Paul Riseborough ec3fe09602 ekf2: format fix 2017-05-20 10:24:08 +02:00
Paul Riseborough 889fb30029 ekf2: Improve control of magnetometer bias learning
Adds parameters so that the motion checks used to switch between magnetic yaw and 3-axis fusion can be adjusted.
Modifies the check used to determine if learned mag biases  can be saved. A cumulated calibration time is used rather than continuous calibration time to allow for for switching in and out of 3-axis fusion mode that is required to do calibration.
2017-05-20 10:24:08 +02:00
Paul Riseborough aa69ae0ee6 ekf2: Add preflight checking of velocity and height innovations
Filters the vertical position and 3-axis velocity innovations and sets the local and global position as invalid if they exceed limits during ARMING_STATE_STANDBY.
2017-05-20 10:24:08 +02:00
Paul Riseborough 2d34a3e096 ekf2: monitor estimator time slip
Used to check if the ekf2 module is failing to keep up with the IMU data
2017-05-20 10:24:08 +02:00
Paul Riseborough e2242f87c9 msg: update estimator_status
Reduce unnecessary length of state and covariance arrays
Add time slip monitor
2017-05-20 10:24:08 +02:00
Paul Riseborough e7a225bf48 ecl: use latest master 2017-05-20 10:24:08 +02:00
Paul Riseborough 341bd6e836 commander: add timeout test for global position data 2017-05-08 09:21:38 +02:00
Paul Riseborough 00a42abc69 commander: Add parameter to control postal fallback after loss of navigation accuracy
Also remove else if branch that cannot be accessed.
2017-05-08 09:21:38 +02:00
Paul Riseborough b85c8fa135 commander: fix bug in pos vel validity transition
This ensures that a mode change will occur immediately when the EKF reports the solution as invalid.
2017-05-08 09:21:38 +02:00
Paul Riseborough 5bfe6d7fec ekf2: Fix failure to save mag declination 2017-05-03 08:37:14 +02:00
Paul Riseborough 0d7f475bd0 ecl: minor updates
Initialisation changes to address valgrind errors
Change to default GPS and Airspeed time delay (these are overwritten by ekf2_main parameter settings)
Increase sensitivity of bad accelerometer checks
2017-05-03 08:37:14 +02:00
Paul Riseborough b64e40b5da ekf2: format fixes 2017-05-03 08:37:14 +02:00
Paul Riseborough 1a2ef45a4b commander: remove unused pos vel validity check functions 2017-05-03 08:37:14 +02:00
Paul Riseborough 625cc4aa83 commander: Use generic function for checking position and velocity validity 2017-05-03 08:37:14 +02:00
Paul Riseborough 46ece548cd ekf2: Changes following code review 2017-05-03 08:37:14 +02:00
Paul Riseborough 8421ad3dfd commander: Changes following code review 2017-05-03 08:37:14 +02:00
Paul Riseborough 57de9eccf5 msg: Code review recommendations for estimator_status 2017-05-03 08:37:14 +02:00
Paul Riseborough 6473f1458f commander: reset learned ekf2 mag biases when performing a mag cal
The learned ekf2 mag bias values are invalidated when the sensor calibration is updated and must be reset.
2017-05-03 08:37:14 +02:00
Paul Riseborough 6474922224 ekf2: Save learned magnetometer biases 2017-05-03 08:37:14 +02:00
Paul Riseborough 3bcb710da9 voted_sensors_update: publish sensor selections (+3 squashed commits)
Squashed commits:
[290660d] voted_sensors_update: revert the new_accel_data check (and others)

The check removed the ability to detect sensor timeouts.
[c8dc7ad] sensors: publish changes to sensor selection
[dd90dec] sensors: ensure all sensor selections published first time
2017-05-03 08:37:14 +02:00
Paul Riseborough 3d3e04cb48 msg: create uORB topic for sensor selection data 2017-05-03 08:37:14 +02:00
priseborough 8ea0b2d3c5 commander: rework posvel validity checks
Move into functions.
Reset probation time and recalculate checks if a mode change is demanded to give the operator ability to regain control as soon as possible after nav performance is regained. (+11 squashed commits)
Squashed commits:
[a4bb800] commander: enable pilot to quickly recover from loss of position accuracy
[19e16a0] commander: rework postal probation time
[f96284e] commander: rework bad pos and vel test probation time
[00d5f0c] commander: Allow EKF preflight checks to pass with moving vehicle

Separates the 'is using GPS' and the GPS quality checks.
Uses a reasonable subset of the GPS quality checks which allows checks to pass if the vehicle is moving.
[4cdfb5c] commander: remove unused variable
[349385a] commander: add EKF GPS quality checks to pre-arm checking

Only perform check if GPs checking is activated by parameter setting.
Display fault messages that makes it clear if EKF quality checks are failing or the EKF is not using GPS for another reason. We do not want to confuse this with GPS lock.
[340ae29] commander: make position invalid fail-safe more sticky

Require check to pass for 7 seconds before exiting failsafe. This is required because if GPs is failing innovation tests for a prolonged period, the EKF will periodically reset to the GPS and report good accuracy at the time of reset.
Adding this delay gives time for an underlying error condition (eg bad IMU or compass) to be re-detected.
[b04ac95] commander: Increase RAM allocation to eliminate low stack warnings
[9dca12f] commander: add missing position invalid fail-safe responses
[69f264d] commander: Update position invalid fail-safe responses

Replace separate logic for each case with a generic function
Add velocity checks.
[8e8cef1] commander: rework position validity checks

Consolidate existing checks for global and local position validity and add checking of velocity accuracy.
Enable checks to be bypassed using the CBRK_VELPOSERR parameter.
2017-05-03 08:37:14 +02:00
Paul Riseborough 40160c4488 integrationtests: add wait time before arming to allow checks to pass 2017-05-03 08:37:14 +02:00
priseborough 519e903347 systemlib: Add circuit breaker parameter for position error checks 2017-05-03 08:37:14 +02:00
priseborough e61e733d1d local_position_estimator: publish placeholder values for velocity accuracy 2017-05-03 08:37:14 +02:00
priseborough 3680057e6d ekf_att_pos_estimator: publish placeholder values for accuracy reporting 2017-05-03 08:37:14 +02:00
priseborough 68c1ffd3e5 position_estimator_inav: publish placeholder values for velocity accuracy 2017-05-03 08:37:14 +02:00
priseborough 1f5908786e ekf2: don't publish estimator status and innovations unless updated 2017-05-03 08:37:14 +02:00
priseborough fb6e050b06 ekf2: Improve error reporting
Add missing velocity accuracy reporting
Add missing dead reckoning reporting
2017-05-03 08:37:14 +02:00
priseborough e9a3eca751 msg: add velocity accuracy reporting to local position topic 2017-05-03 08:37:14 +02:00
priseborough d0d2c9dcba msg: add velocity accuracy reporting to global position topic 2017-05-03 08:37:14 +02:00
Paul Riseborough 9983bf2364 ekf2: fix errors in publishing of local position origin validity flags 2017-05-01 17:23:11 +02:00
Paul Riseborough 7c068e83d8 msg: correct definitions for local position origin validity flags 2017-05-01 17:23:11 +02:00
Paul Riseborough 1843061376 Tools/ecl_ekf: Improvements to ecl log analysis scripts
Fix error in scaling of population high frequency vibration metrics
Add histograms for delta angle and velocity bias data
Fix variable descriptions
2017-04-21 08:34:19 +02:00
Paul Riseborough 2a34bde0e9 Tools/ecl_ekf: Update EKF log analysis
Add assessment of IMU bias and mag field estimation
Reduce warning false positives by adjusting thresholds and eliminating use of peak value plots for output observer monitoring
Clear each figure after saving to reduce memory usage
2017-04-21 08:34:19 +02:00
Paul Riseborough ed9a9b772e ekf2: minimum change required to use updated ecl library 2017-04-21 08:34:19 +02:00
Paul Riseborough dad2419b21 ecl: Update EKF version
Miscellaneous bug fixes and improvements including:

More conservative reporting of velocity and position accuracy when aiding is lost
Separate reporting of accuracy for local and global position
Detection and recovery from badly conditioned accel bias states and covariance values
Logic to prevent high manoeuvre levels causing bad acceleration bias learning
Reduce sensitivity of covariance prediction to timing jitter
Continue reporting of GPS quality until the later of airborne or checks pass
Add ability to perform wind estimation for multi-rotors using a specific force drag model
2017-04-21 08:34:19 +02:00
Paul Riseborough bf06066010 Tools: Add scripts for ecl EKF log file analysis 2017-02-20 07:53:07 +01:00
Paul Riseborough ed5c8913ad events: update documentation for polyfit algorithm 2017-02-20 07:53:07 +01:00
Paul Riseborough 72633ad4c8 events: update documentation for polyfit algorithm 2017-02-16 22:17:47 +01:00
Paul Riseborough 1f4155c208 events: fix code style issues 2017-02-12 09:21:37 +01:00
Paul Riseborough 9858b0b491 sensors: Add calibration control parameters to QGC list 2017-02-12 09:21:37 +01:00
Paul Riseborough 36f83e46ee events: abort calibration if starting temperature is too high 2017-02-12 09:21:37 +01:00
Paul Riseborough 22c8c59829 Thermal Calibration - add parameter required to control max starting temperature 2017-02-12 09:21:37 +01:00
Paul Riseborough 93a70c2d0b systemlib: Fix parameter name error 2017-02-12 09:21:37 +01:00
Paul Riseborough f3d30564ed events: don't start baro calibration until specified temperature achieved 2017-02-12 09:21:37 +01:00
Paul Riseborough e75f2b9cf7 events: don't start accel calibration until specified temperature achieved 2017-02-12 09:21:37 +01:00
Paul Riseborough cdf80a868a events: don't start gyro calibration until minimum temperature achieved 2017-02-12 09:21:37 +01:00
Paul Riseborough c901c4b39e Thermal Calibration - add parameter required to control minimum starting temperature 2017-02-12 09:21:37 +01:00
Paul Riseborough 693cc4a533 Update SYS_CAL_TEMP parameter name and description
We will be adding another parameter to set min starting temp, so this name needs to be made less generic.
Fixes typographical errors in the description
2017-02-12 09:21:37 +01:00
Paul Riseborough b36e65fd6d events: Improve consistency of console messages 2017-02-02 23:54:06 +01:00
Paul Riseborough 9e219fba0c events: make required temp rise for calibration adjustable 2017-02-02 23:54:06 +01:00
Paul Riseborough 4ff5e7c5ab systemlib 2017-02-02 23:54:06 +01:00
Paul Riseborough 8001db257c ROMFS: enable auto start of thermal calibration 2017-02-02 23:54:06 +01:00
Paul Riseborough 8aa91512e9 systemlib: Add parameters to control thermal calibration startup behaviour 2017-02-02 23:54:06 +01:00
Paul Riseborough f86347f1e2 Tools: Enable offline calibrator to handle less than 3 inertial sensors 2017-02-02 23:54:06 +01:00
Paul Riseborough 4d163eebb9 events: Add accelerometer and baro thermal calibration 2017-02-02 23:54:06 +01:00
Paul Riseborough f0c456dd54 events: give gyro cal unique names in preparation for other sensor types 2017-02-02 23:54:06 +01:00
Paul Riseborough 7d8ce9ab9c sensors: Fix bug in temperature offset calculation 2017-02-01 08:40:23 +01:00
Paul Riseborough 0a447e9a93 Tools: update instructions for off-board calibrator 2017-02-01 08:40:23 +01:00
Paul Riseborough e78c5155a2 Tools: update calibration instructions 2017-02-01 08:40:23 +01:00
Paul Riseborough 253683af5f drivers: Don't require driver level gyro offsets to be non-zero 2017-02-01 08:40:23 +01:00
Paul Riseborough bdbc4f4d65 commander: fix bug in gyro calibration
If the same gyro data was contained in two uORB instances, the thermal offset coefficient was being corrected twice.

TODO should fix what was causing data from the same sensor to appear on two uORB topics.
2017-02-01 08:40:23 +01:00
Paul Riseborough 6e841f6cbd commander: fix bugs in handling of thermal compensation during access cal 2017-02-01 08:40:23 +01:00
Paul Riseborough 06f280e021 Tools: reinstate original offline calibrator to unblock testing
Refactored calibrator is not working.
2017-02-01 08:40:23 +01:00
Paul Riseborough f9b75e68c9 Tools: Change sign convention used by thermal calibrator
The flight code assumes corrections have the same sign as the sensor bias error and are subtracted from the raw reading
2017-02-01 08:40:23 +01:00
Paul Riseborough c00c638b77 Remove IMU calibration parameter checks 2017-02-01 08:40:23 +01:00
Paul Riseborough fb774bef67 commander: enable accel cal to adjust thermal compensation parameters 2017-02-01 08:40:23 +01:00