Paul Riseborough
465b145929
EKF: Add multi-rotor drag model for wind estimation
2017-04-16 13:07:12 +02:00
Paul Riseborough
2f2ac5be43
EKF: Improve protection against severe IMU accel errors
...
Use vertical velocity and position innovation failure to detect bad accelerometer data caused by clipping or aliasing which can cause large vertical acceleration errors and loss of height estimation. When bad accel data is detected:
1) Inhibit accelerometer bias learning
2) Force fusion of vertical velocity and height data
3) Increase accelerometer process noise
2017-04-07 08:47:13 +10:00
Paul Riseborough
fa07536314
EKF: Prevent rounding errors causing bad conditioned covariance matrix
...
The previous practice of relying on the off-diagonals being zero caused problems with conditioning of the magnetometer fusion on one flight. By storing the variances when the learning inhibit becomes active and ensuring that the rows and columns in the covariance matrix for the inhibited states are always zero, the observed numerical conditioning error has been eliminated for replay of the problem flight log .
2017-04-06 13:34:37 +10:00
Paul Riseborough
588b27bde7
EKF: inhibit accelerometer bias learning if manoeuvre levels are excessive
...
This prevents bad scale factors and other errors associated with rapid manoeuvres corrupting the accelerometer bias estimates.
2017-03-10 10:14:06 +01:00
Paul Riseborough
5fb24c3032
EKF: Reduce EKF prediction delta time jitter
...
Make the target EKF rate an integer multiple of the IMU rate. This slightly increases the average prediction time step for the EKF from just over 10msec to 12msec, but the variation reduces significantly which makes filter tuning more deterministic.
Improve the algorithm used to adjust the collection time criteria to reduce jitter in the correction.
2017-03-10 10:14:06 +01:00
Paul Riseborough
8511754094
EKF - detect and fix badly conditioned accel bias covariance values.
2017-03-10 10:14:06 +01:00
Paul Riseborough
879ad1fd2c
Merge pull request #231 from pickledgator/ev_hgt_counter_fix
...
height counter update for ev primary height source
2017-03-10 14:18:35 +11:00
Paul Riseborough
092cc52838
EKF: Remove out of date comment
2017-03-10 14:18:13 +11:00
Roman
6480fcc3d5
terrain estimator: fixed computation of filtered time since last range update
...
- do not use hrt to compute delta time
- limit filter state
- do not use static variables
Signed-off-by: Roman <bapstroman@gmail.com>
2017-02-22 14:12:05 +01:00
Paul Riseborough
6561edb9a5
EKF: Clean up terrain estimation functionality.
...
This is a functionally equivalent. It moves all of the code for the terrain estimator into a single function call from the main filter update, making it clear that it is independent of the main filter.
2017-02-22 14:12:05 +01:00
devbharat
8004e9fe7e
EKF: Make range finder data continuous check more robust
...
Use a filtered arrival time delta to determine if range data is continuous
2017-02-22 14:12:05 +01:00
Paul Riseborough
cf9c8de167
EKF: Add arbitrary pitch offset for range sensor
2017-02-22 14:12:05 +01:00
Daniel Agar
2750961be6
c++11 initialization cleanup ( #237 )
2017-02-05 13:05:10 -05:00
Daniel Agar
7883085e4a
clang-tidy readability-simplify-boolean-expr ( #235 )
2017-02-02 00:17:43 -05:00
Paul Riseborough
26a06567bb
EKF: add missing initialisation for class variables
2017-01-15 10:02:31 +01:00
Paul Riseborough
6358bbd257
EKF: remove self assignment
2017-01-15 10:02:31 +01:00
Daniel Agar
a7cdef6c5c
clang-tidy modernize-redundant-void-arg
2017-01-14 16:24:45 -08:00
Nic
ec1a14bc6b
height counter needs to be updated with ev counter value when our primary height source is set to ev
2017-01-05 21:47:13 -08:00
Paul Riseborough
3c4c09593f
EKF: Rationalise console messages
...
Combine the observation action buffer and alignment messages
Ensure all data timeout messages are warnings.
Use consistent terminology.
2016-12-28 10:39:47 +01:00
Paul Riseborough
5ad329b641
EKF: Fix variable names to match convention
2016-11-07 22:23:12 +11:00
Paul Riseborough
403424d55d
EKF: fix cross compiler build errors
2016-11-07 09:38:44 +11:00
CarlOlsson
15768f6f93
adopted ekf.cpp
2016-11-05 12:19:01 +01:00
Paul Riseborough
b29174d86b
Merge pull request #193 from PX4/pr-haglInit
...
Pr hagl init
2016-10-04 08:21:15 +11:00
Paul Riseborough
65762e5998
EKF: publish output predictor tracking errors
2016-10-03 14:13:07 +11:00
Paul Riseborough
c81f9f1dba
EKF: Reduce output predictor tracking errors
...
Implements a PI tracking loop
2016-10-03 14:13:07 +11:00
Roman
cc05db4985
terrain estimator: pass initialisation return value correctly
...
Signed-off-by: Roman <bapstroman@gmail.com>
2016-09-20 14:07:50 +02:00
Paul Riseborough
7bc9217f00
EKF: Clean up control of observation fusion
...
All the decision for a sensor are made within a specific function for that sensor and when there is data to process at the fusion time horizon.
Information and warning messages are improved.
2016-06-30 17:06:32 +10:00
Paul Riseborough
2024252d65
Merge pull request #158 from CarlOlsson/act_ars_off_by_default
...
activate tas fusion, off by default
2016-06-08 14:17:31 +10:00
Paul Riseborough
34ffffa021
EKF: Prevent use of non time-stamped invalid data during initialisation
...
Fixes bad height initialisation seen intermittently with snapdragon
2016-06-08 11:56:07 +10:00
CarlOlsson
eded0a8f7e
activate tas fusion, off by default
2016-06-07 13:49:17 +02:00
Paul Riseborough
081e17729c
EKF: delay commencement of 3D mag fusion until clear of ground
...
Wait until enough height has been gained to be clear of ground based magnetic anomalies. Failure to do so can result in incorrect earth field initialisation.
2016-06-06 21:59:46 +10:00
Paul Riseborough
81ca167da8
EKF: align output observer to EKF states on startup
2016-06-01 17:13:00 +10:00
Paul Riseborough
733862f649
EKF: move the reset status struct to the Ekf class
...
This protects it from being modified externally
2016-06-01 17:13:00 +10:00
Paul Riseborough
aca0336392
EKF: update vertical position and velocity reset capture
...
Use reset event struct members instead of separate variables
2016-06-01 17:13:00 +10:00
Paul Riseborough
65da9173b9
EKF: capture innovation checks and reset events in separate variables
...
rename the innovation check status class variable and remove the reset flags from it.
2016-06-01 17:13:00 +10:00
Paul Riseborough
388e500180
EKF: remove un-used magnetometer health class variable
...
replaced by _sensor_health_status
2016-06-01 17:13:00 +10:00
Paul Riseborough
aea827aa8a
EKF: ensure filter fault status is initialised
2016-06-01 17:13:00 +10:00
Paul Riseborough
106482b078
EKF: add structure to capture innovation test failures and state resets
2016-06-01 17:13:00 +10:00
Paul Riseborough
70c40d695d
EKF: Initialise alignment noise filters using valid data
...
Don't initialise the states for the alignment data noise filters until the buffers have been flushed
2016-05-28 09:04:26 +10:00
Paul Riseborough
c905684c12
EKF: Ensure bad initial data is flushed from buffers before using data to perform alignment
2016-05-28 08:28:57 +10:00
Paul Riseborough
98c0b74a71
EKF: Initialise height correctly when using external vision data
...
If EV height selected ensure switch to correct height mode as soon as EV data is received
The 0 height datum is not at the initialisation position, so the height state needs to be reset to the measurement on startup
2016-05-27 13:59:14 +10:00
Paul Riseborough
1b6c5bbafd
EKF: Enable height source to be selected independent of EV aiding
2016-05-27 13:14:52 +10:00
Paul Riseborough
90d65071c1
EKF: Add output predictor processing option
...
Setting the velocity tracking tine constant to a negative number causes the output predictor to use a different method of correcting the velocity which provides a velocity output that is kinematically consistent with the position output.
This may improve height controller performance under some circumstances
2016-05-23 07:47:10 +10:00
Paul Riseborough
c8c2d6d963
Merge pull request #145 from CarlOlsson/small_fix
...
Deleted second update of transformation matrix
2016-05-23 07:40:58 +10:00
Carl Olsson
0fafc49a49
fixed typos ( #147 )
2016-05-22 17:40:43 +02:00
CarlOlsson
eb70aca2e8
deleted second update of transformation matrix
2016-05-22 16:03:30 +02:00
waltjohnson
7c158aa59b
Addressed C99 compiler issues of initializing variables in header and unused included statements.
2016-05-19 09:58:18 -06:00
Paul Riseborough
e3b9800cac
Merge pull request #138 from pickledgator/evTesting
...
EV testing
2016-05-19 12:56:41 +10:00
Paul Riseborough
b9a3712ccb
EKF: record yaw alignment event during initialisation to allow heading fusion to start early
...
This ensures bad yaw gyro biases are compensated for early, rather than waiting for the tilt alignment to fully converge before fusing heading.
2016-05-18 19:25:19 +10:00
Paul Riseborough
22fba0fc6e
EKF: don't initialise filter without EV data if we are relying on it
2016-05-18 19:25:19 +10:00