Commit Graph
100 Commits
Author SHA1 Message Date
Paul Riseborough f8ae8ba502 ekf2: Use ecl library with recent bug fixes and enhancements.
Bug Fixes:

https://github.com/PX4/ecl/pull/586 - EKF: fix covariance and output filter buffer initialization
https://github.com/PX4/ecl/pull/590 - EKF: Fix innovation in fuseDeclination()

Enhancements:

https://github.com/PX4/ecl/pull/543 - ekf_helper: add more useful methods to interface with the covariances
https://github.com/PX4/ecl/pull/588 - Add unit tests for DataValidator

Note:

https://github.com/PX4/ecl/pull/543  has required a change to how the state variances are accessed .
2019-03-14 19:25:36 +11:00
Paul Riseborough 6e0ca90852 ekf2: Minor parameter description edits 2019-03-05 07:17:09 +01:00
Paul Riseborough 643d8e968b ekf2: style fixes 2019-03-05 07:17:09 +01:00
Paul Riseborough 09da8e7dfc ekf2: Split static pressure correction into separate RH ad LH ellipsoids 2019-03-05 07:17:09 +01:00
Paul Riseborough 9692ef1ae9 commander: remove duplicate check 2019-02-04 10:32:19 +01:00
Paul Riseborough 6fb7cda9f2 commander: Reduce false positives in pre-flight accel bias check 2019-02-04 10:32:19 +01:00
Paul Riseborough 3ee596284d ecl: Magnetic declination use improvements
Fixes bugs causing learned or GEO lookup declination to not be used in some circumstances.

https://github.com/PX4/ecl/pull/518
https://github.com/PX4/ecl/pull/520
2018-11-16 10:25:59 -05:00
Paul Riseborough 18f0812b33 ecl: Use master with pr-ekfGpsYaw changes merged 2018-10-17 09:48:38 -04:00
Paul Riseborough c8e17719d5 msg: Add heading data to GPS blending output log data 2018-10-17 09:48:38 -04:00
Paul Riseborough 10354f022e ekf2: Allow use of RTK GPS heading 2018-10-17 09:48:38 -04:00
Paul Riseborough e39afb148d drivers: publish GPS antenna heading offset 2018-10-17 09:48:38 -04:00
Paul Riseborough 92d2317b99 uavcan: publish GPS antenna heading offset as NAN 2018-10-17 09:48:38 -04:00
Paul Riseborough cf962afafe simulator: publish GPS antenna heading offset as NAN 2018-10-17 09:48:38 -04:00
Paul Riseborough 6a3692cf6b mavlink: publish GPS antenna heading offset as NAN 2018-10-17 09:48:38 -04:00
Paul Riseborough 9aee71bf54 msg: Add antenna array heading offset to GPS message 2018-10-17 09:48:38 -04:00
Paul Riseborough 94d953eef2 Tools: Fix EKF data analysis false positives
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.
2018-08-30 09:57:18 +02:00
Paul Riseborough ad1c2b31d1 drivers: Always set GPS heading to NAN if not updated 2018-08-28 14:10:36 +02:00
Paul Riseborough b2c7b44935 drivers: Prevent duplicate reporting of GPS heading 2018-08-28 14:10:36 +02:00
Paul Riseborough 57052edfb2 logger: Log GPS drift data
This data is published at the GPS publication rate and only when on ground.
2018-08-17 10:44:07 +10:00
Paul Riseborough c2fcef8fc1 ekf2: Tighten preflight GPS quality checks
Enable drift checks and reduce thresholds to reduce likelihood of commencing  use of  a unstable GPS position.
Publish drift data to assist with tuning.
2018-08-17 10:44:07 +10:00
Paul Riseborough d0f733d375 ecl: use master with required publication of gps drift data 2018-08-17 10:44:07 +10:00
Paul Riseborough f100cd73ef msg: Create message for GPS drift rates
This data is only updated at 5Hz and only required pre-flight.
2018-08-17 10:44:07 +10:00
Paul Riseborough 77f0883cb9 ekf2: Reinstate saving of mag declination for use next start
This capability was removed unintentionally by previous changes.
Requires ecl version with updated declination accessor function
2018-07-26 08:32:09 +02:00
Paul Riseborough a37580ceac mc_pos_control: remove un-used parameter 2018-07-22 17:42:31 +10:00
Paul Riseborough 73a7aa75a8 FlightTasks: update terrain hold transition logic.
Use pre-existing MPC_HOLD_MAX_XY parameter for speed threshold.
Use _stick_expo variable for stick movement check.
Update documentation.
2018-07-22 17:42:31 +10:00
Paul Riseborough dd3fb84db8 mc_pos_control: Fix parameter description error 2018-07-22 17:42:31 +10:00
Paul Riseborough c9ca27e7c2 ekf2: Update documentation for EKF2_RNG_AID parameter 2018-07-22 17:42:31 +10:00
Paul Riseborough 7ff23f7859 posix-configs: Update optical flow SITL test parameter defaults
Use baro for height in EKF.
Use terrain hold mode in height controller.
2018-07-22 17:42:31 +10:00
Paul Riseborough 2baa6caacb FlightTasks: Fix transition between use of local and ground height (+2 squashed commits)
Squashed commits:
[ed2a243] FlightTasks: Preserve control loop tuning when applying max altitude limit
[b33b947] FlightTasks: Add terrain hold function

This new mode of altitude control uses terrain following when holding position and normal altitude control when moving.
2018-07-22 17:42:31 +10:00
Paul Riseborough 82780e33b9 mc_pos_control: Add parameter support for terrain hold function
This new mode of altitude control uses terrain following when holding position and normal altitude control when moving.
2018-07-22 17:42:31 +10:00
Paul Riseborough 4e3f7bdcc6 ekf2: Move range min/max checks to inside the ecl library 2018-07-16 21:59:04 +10:00
Paul Riseborough a04468ba9f ekf2: Fix EKF preflight check fail false positives
Uses a relaxed yaw innovation check threshold for fixed wing vehicle that can recover from larger yaw errors after takeoff.
Replaces the peak hold with decay filtering applied to the magnetic yaw innovations with a conventional lowpass filter. This prevents mag heading innovation transients caused by preflight handling from failing the check, but catches persistent errors. Sign swapping of innovations due to angle wrapping is not a problem due to the way that innovations are calculated inside the EKF, so a simple LPF sufficient.
2018-06-29 16:36:38 +00:00
Paul Riseborough 98465171aa ecl: include fix for bug affecting use of high frequency optical flow data 2018-06-09 13:38:04 +02:00
Paul Riseborough c84d35e3d7 mc_pos_control: rework height limiter to stay in velocity mode 2018-06-09 13:38:04 +02:00
Paul Riseborough d26da5fa3b mc_pos_control: Improve maximum height limiter
Implements a better method of determining when to switch from velocity to altitude control to keep height limit from being exceeded.
This method removes the overshoot and transients in height caused by the switching of the previous algorithm.
2018-06-09 13:38:04 +02:00
Paul Riseborough f0a1cd197e mc_pos_control: formatting fixes 2018-06-09 13:38:04 +02:00
Paul Riseborough b77845a3c0 mc_pos_control: Fix bug in calculation of altitude limit
The correction for stopping distance applied to the maximum altitude limiter uses the vertical velocity estimate and gives the same offset for both positive (down) and negative (up) velocity.
This calculation has been corrected and simplified and variable names changes to make the functionality clearer.
2018-06-09 13:38:04 +02:00
Paul Riseborough 967b27f131 ecl: rework optical flow selection logic
Fixes a race condition introduced by use of _is_dead-reckoning.
Only runs flow use logic when there is flow data available
2018-06-09 13:38:04 +02:00
Paul Riseborough e3a6528a80 ecl: include fixes to flow selection logic 2018-06-09 13:38:04 +02:00
Paul Riseborough 366e36a07b ekf2: Update parameter description 2018-06-09 13:38:04 +02:00
Paul Riseborough d46ee571ce ecl: test changes to pr-ekfOptFlowFixes 2018-06-09 13:38:04 +02:00
Paul Riseborough 0113212b34 mc_pos_control: Update parameter descriptions 2018-06-09 13:38:04 +02:00
Paul Riseborough 9e567cadd6 ekf2: Update parameter description 2018-06-09 13:38:04 +02:00
Paul Riseborough 0dc2377c2f mc_pos_control: format fixes 2018-06-09 13:38:04 +02:00
Paul Riseborough 9fb674929c commander: do not check global position when using flow in POSCTL 2018-06-09 13:38:04 +02:00
Paul Riseborough 2c325414f9 mc_pos_control: limit maximum height when reliant on optical flow data 2018-06-09 13:38:04 +02:00
Paul Riseborough 9028592c5f mc_pos_control: control height above ground when reliant on optical flow 2018-06-09 13:38:04 +02:00
Paul Riseborough 98597dcffc commander: allow position uncertainty to grow when operator can correct for drift 2018-06-09 13:38:04 +02:00
Paul Riseborough e5d428bd65 msg: add definitions for estimator status control mode bit positions 2018-06-09 13:38:04 +02:00
Paul Riseborough cbb4559c15 ecl : update to version that fixes wind relative dead reckoning bug 2018-04-24 00:02:48 -04:00
Paul Riseborough 477a42e6f6 ekf2: Enable adjustment of nav validity timeout 2018-04-24 00:02:48 -04:00
Paul Riseborough 3e6ba1d541 simulator: Use baro pressure direct from simulator 2018-04-11 23:26:58 -04:00
Paul Riseborough 2b87e5a790 tests: Test all data points for declination model 2018-03-26 23:16:55 -04:00
Paul Riseborough 8a1b6d548f ecl: Update to version that fixes height reset bug 2018-01-31 10:46:52 +01:00
Paul Riseborough eed8b00857 mc_pos_control: Release estimator speed limit only when speed demand is significant
This prevents unexpected increases in stick sensitivity when stick is moved after periods of inactivity.
2018-01-29 22:30:34 +01:00
Paul Riseborough 6ef43e5b75 ecl: Use latest master 2018-01-29 22:30:34 +01:00
Paul Riseborough f8693b49c2 mc_pos_control: Fix compile error after rebase 2018-01-29 22:30:34 +01:00
Paul Riseborough 388eb6ee4c ros: update local_position publication
Ensure all data is set.
2018-01-29 22:30:34 +01:00
Paul Riseborough 64551607bc simulator: update local_position publication
Ensure all data is set.
2018-01-29 22:30:34 +01:00
Paul Riseborough 4b2dcddec2 position_estimator_inav: update local_position publication
Ensure all data is set.
2018-01-29 22:30:34 +01:00
Paul Riseborough 33b75d8e87 mavlink: update local_position publication
Ensure all data is set.
2018-01-29 22:30:34 +01:00
Paul Riseborough c294393377 local_position_estimator: update local_position publication
Ensure all data is set.
2018-01-29 22:30:34 +01:00
Paul Riseborough 642a4a5fc7 mc_pos_control: respect estimator max speed and min height limits 2018-01-29 22:30:34 +01:00
Paul Riseborough 1e9361572f sensors: Add parameter for flow sensor minimum range 2018-01-29 22:30:34 +01:00
Paul Riseborough fc78de4c26 ekf2: Update parameter descriptions for air data fusion 2018-01-29 22:30:34 +01:00
Paul Riseborough f866698fb2 ekf2: Update parameter description for max optical flow rate 2018-01-29 22:30:34 +01:00
Paul Riseborough b117fddb21 ekf2: publish estimator position control limits 2018-01-29 22:30:34 +01:00
Paul Riseborough 0ed78f259e msg: Add estimator required control limits to vehicle_local_positiion 2018-01-29 22:30:34 +01:00
Paul Riseborough b2046ffd6b Tools: fix errors in thermal calibration script 2018-01-15 08:38:54 +01:00
Paul Riseborough 96d04af6e8 ecl: adds sideslip to innovation test status reporting 2018-01-02 22:36:42 +01:00
Paul Riseborough 3c667bb4f5 mc_pos_control: format fixes 2017-12-12 12:14:24 +00:00
Paul Riseborough deaa83bba0 mc_pos_control: Use vertical position derivative when in velocity control mode
Stops vertical velocity bias errors preventing the vehicle from landing.
Use of the vertical derivative is blended in so that for zero vertical velocity set point, the  local_position.vz is used and when the magnitude of the vertical velocity setpoint exceeds the landing speed, the  local_position.z_deriv is used.
2017-12-12 12:14:24 +00:00
Paul Riseborough 324c5151e7 ekf2: use local scope for control mask variable 2017-12-08 07:43:13 +00:00
Paul Riseborough b812f95a77 ekf2: Adjust pre-flight check level
Reduce max yaw error when not using global frame aiding data to prevent large yaw yaw changes after takeoff.
2017-12-08 07:43:13 +00:00
Paul Riseborough ded9ca13e4 ekf2: Reduce sensitivity of preflight yaw check when not doing absolute aiding
When the EKF is not fusing in observations from the NE global reference frame, the tolerance to yaw errors is much higher. This changes will prevent false triggering of the preflight fail check when operating indoors without GPS where mag field errors can be high.
2017-12-08 07:43:13 +00:00
Paul Riseborough b5be990109 lpe: fix incorrect setting of local_position.z_global 2017-12-07 08:20:16 +00:00
Paul Riseborough 8d89e5e40b commander: rework centralise home position publication
This fixes a bug preventing use of auto and RTL when taking off with GPS.
2017-12-07 08:20:16 +00:00
Paul Riseborough 41f3e1f9b4 commander: centralise home position publication 2017-12-07 08:20:16 +00:00
Paul Riseborough 934a7af579 commander: Set home alt to EKF origin if global navigation commences in-flight
The EKF origin height is calculated to be where the vehicle was at takeoff and is suitable as a surrogate home altitude.
2017-12-07 08:20:16 +00:00
Paul Riseborough 49d82164c6 navigator: check home position horizontal and vertical validity 2017-12-07 08:20:16 +00:00
Paul Riseborough 024589d63d msg: Add separate vertical and horizontal validity flags to home_position
If we have taken off without GPS and gained it in flight, the home vertical position can be set, but not the horizontal.
2017-12-07 08:20:16 +00:00
Paul Riseborough a81c49014f mc_pos_control: reset height reference when global position available
This enables the reference height to be reset when global vertical position becomes available in-flight.
2017-12-07 08:20:16 +00:00
Paul Riseborough fa5010109e commander: Reset nav test when vehicle is disarmed
Previously, the only way to clear a failed nav test was to reboot. This hindered testing.
2017-12-04 09:09:54 +00:00
Paul Riseborough d783bc8ae1 commander: Check for nav divergence due to bad yaw at takeoff
This check is performed for up to 30 seconds after takeoff or until  a horizontal speed of 5 m/s has been achieved.
If the vehicle is not landed and the check is active, then the yaw will be declared as failed if the velocity innovations fail for a continuous period of 1 second.
This will cause the local and global position and velocity validity to be latched false to prevent unsafe use of position control modes.
2017-12-04 09:09:54 +00:00
Paul Riseborough afe857dfe6 commander: rework preflight GPS checks
Fix the bug allowing arming without GPS checks passed in the first 20 seconds after gaining GPS lock when COM_ARM_WO_GPS is set to 0
Allow 10 seconds after boot for EKF quality checks to pass before reporting failure to allow EKF to stabilise.
Move GPS quality checking and reporting to after all innovation and bias checks.
Make messages more informative.
Add missing GPS speed accuracy check.
2017-12-04 09:09:54 +00:00
Paul Riseborough c09eecbab1 commander: prevent ekf checking being bypassed if GPS checking is disabled 2017-12-04 09:09:54 +00:00
Paul Riseborough ddfe077f7c commander: strengthen pre-flight fail checking
The commander checks use instantaneous values which are vulnerable to false negatives  or positives with noisy data or transient faults.

This patch checks the estimators published pre flight check status which is based on persistent checks using filtered data.
2017-12-04 09:09:54 +00:00
Paul Riseborough fc80be0917 ekf2: improve preflight checks and publish status
Separate the vertical and horizontal checks for use by local position validity reporting
Add checking of yaw using a decaying envelope filter to the horizontal checks.
Publish the check result to estimator_status topic.
2017-12-04 09:09:54 +00:00
Paul Riseborough 92bcc63418 msg: add pre flight check status message 2017-12-04 09:09:54 +00:00
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