Paul Riseborough
25682dce91
EKF: Prevent badly conditioned covariance calculation when starting or resetting to optical flow
9 years ago
Paul Riseborough
c66ed7b662
EKF: Add interface method for filter fault status
9 years ago
Paul Riseborough
020b87933e
EKF: replace fault status struct with a union to facilitate logging
9 years ago
Paul Riseborough
7f5669fb2d
EKF: consolidate covariance corrections
...
Combines the forced symmetry, variance limiting and zeroing of covariances for unwanted states in the one function.
This ensures a consistent correction is applied after every covariance prediction or correction.
9 years ago
Paul Riseborough
0c6a367e1b
EKF: fix Travis build error
9 years ago
Paul Riseborough
22f0f52bf1
EKF: fix travis build error
9 years ago
Paul Riseborough
9e53ff2f80
EKF: Improve protection against bad optical flow fusion
9 years ago
Paul Riseborough
1126048a93
EKF: Improve protection against bad airspeed fusion
9 years ago
Paul Riseborough
c8d95586e7
EKF: Improve protection against bad magnetometer fusion
9 years ago
Paul Riseborough
310bd97080
EKF: Improve protection against bad pos vel fusion
9 years ago
Paul Riseborough
da9d894441
EKF: Improvements to covariance reset
9 years ago
Paul Riseborough
d9aeace6ac
EKF: tuning update
9 years ago
Paul Riseborough
f1b7e7714e
EKF: Make average update rate of EKF closer to target
...
With the EKF, the average update rate is more important than the instantaneous value as it affects tuning. This patch ensures that the EKF prediction cycle will be performed early if the previous one was late in an attempt to maintain the target update rate.
9 years ago
Paul Riseborough
1daa6c7866
EKF: update tuning defaults
9 years ago
Paul Riseborough
fc6c0c7ebf
EKF: Update covariance prediction
...
Refresh auto generated code
Make 3-axis accel fusion the default and no accel fusion the option
9 years ago
Paul Riseborough
ecaffe63af
EKF: update tuning defaults
9 years ago
Paul Riseborough
7a74d58591
EKF: reduce initial accel bias uncertainty
9 years ago
Paul Riseborough
a7d08d08fc
EKF: Relax tilt alignment check
9 years ago
Paul Riseborough
5523a4f225
EKF: Fix IMU bias compensation scale error in output filter
...
Delta angle and velocities are calculated assuming data is at the filter update rate, not the IMU update rate
9 years ago
Paul Riseborough
fd109b00ab
EKF: replace in-line code with existing function
9 years ago
Paul Riseborough
727a43764f
EKF: update initial angle alignment check
9 years ago
Paul Riseborough
bc34b14779
EKF: Initialise height state variance to a value compatible with the measurement
...
A large height state variance and small measurement variance can destabilise the filter in the first few seconds after alignment
9 years ago
Paul Riseborough
29a361d3a3
EKF: Use intuitive units for gyro and accel bias process noise
...
This also makes the tuning less sensitive to changes in the EKF update rate.
9 years ago
Paul Riseborough
799865c934
EKF: update default tuning parameters
9 years ago
Paul Riseborough
f01f4ae4b1
EKF: tidy up mag declination fusion
9 years ago
Paul Riseborough
0d31aad33a
EKF: Fix bad limit on magnetometer noise parameter
9 years ago
Paul Riseborough
7069fb7a04
EKF: refresh auto code for mag fusion
9 years ago
Paul Riseborough
ffea65e1a4
EKF: fix bug in state prediction
9 years ago
Paul Riseborough
63f093a10a
EKF: Update upper limits for state variances
...
This limiting is a last resort measure and the limiting for normal operation should be achieved by modification in the covariance prediction
9 years ago
Paul Riseborough
26a51c667d
EKF: Improve robustness to initial gyro bias errors
...
Allows for ~6 deg/sec of startup bias
9 years ago
Paul Riseborough
7530e30012
EKF: Improve IMU data collection
...
Use IMU driver published delta angle integration time to determine when enough data has been accumulated.
Perform basic first order sculling corrections on delta velocity data
Comment steps to make make method clearer
9 years ago
Paul Riseborough
f23f0b1035
EKF: fix bugs in stationary process model covariance prediction
...
Noise variance for stationary states was being overwritten by the covariance prediction operations for the kinematic states
Unwanted states could end up with non-zero covariance values
The forced symmetry operation was being applied too late to be effective
9 years ago
Paul Riseborough
a373ada858
EKF: explicitly define floating point type in hardcoded constants
9 years ago
Paul Riseborough
a189c60d33
EKF: update code fragment text files
9 years ago
Paul Riseborough
f4e84a2234
EKF: fix axis label error in comments
9 years ago
Paul Riseborough
57d3036ee7
EKF: update derivation files
9 years ago
Paul Riseborough
82da832816
EKF: tidy up Kalman gain calculations
...
Inhibiting of states is controlled via zeroing rows and columns in the covariance prediction so conditional logic in gain calculations is unnecessary.
9 years ago
Paul Riseborough
311d046a26
EKF: Enable optional activation of XY delta velocity bias estimation
9 years ago
Paul Riseborough
572c2280bd
EKF: tidy up covariance prediction
9 years ago
Paul Riseborough
54e713969d
EKF: Fix rebase error
9 years ago
Paul Riseborough
67d23948b5
EKF: preliminary re-tune
9 years ago
Paul Riseborough
03c35266ef
EKF: remove unused parameter
9 years ago
Paul Riseborough
fe9f88a8b4
EKF: test new derivation
...
Use direct attitude parameterisation
Discard scale factors
Add accel bias
9 years ago
Daniel Agar
22d18d638c
enable Wshadow
9 years ago
Paul Riseborough
c6775b5bf2
Merge pull request #118 from PX4/fix_member_init
...
ekf: initialize _terrain_var
9 years ago
Beat Küng
f2dda3c183
ekf: initialize _terrain_var, fixes access to uninitialized value
...
in PX4 Firmware, Ekf::get_terrain_vert_pos depends on it. This is the
valgrind output:
==15439== Thread 14 ekf2:
==15439== Conditional jump or move depends on uninitialised value(s)
==15439== at 0x5610087: sqrtf (in /usr/lib64/libm-2.22.so)
==15439== by 0x4D1AF0: Ekf::get_terrain_vert_pos(float*) (terrain_estimator.cpp:135)
==15439== by 0x46641F: Ekf2::task_main() (ekf2_main.cpp:655)
==15439== by 0x42BF3D: entry_adapter(void*) (px4_posix_tasks.cpp:103)
==15439== by 0x4E3C609: start_thread (in /usr/lib64/libpthread-2.22.so)
==15439== by 0x5BF7A4C: clone (in /usr/lib64/libc-2.22.so)
9 years ago
Paul Riseborough
0a6d95c6c2
Merge pull request #116 from PX4/pr-covReset
...
after a height reset zero the cross covariances for height and vertical
9 years ago
Roman
0c77ebf6bd
EKF: Reduce likelihood of bad covariance values after height resets
...
The cross terms (covariances) are now reset before the variance variance is set.
The vertical velocity state variance following a reset without GPS has been reduced.
9 years ago
Paul Riseborough
6c57bea1c3
EKF: fix bug in IMU error application timing patch
9 years ago
Paul Riseborough
6ecbefd7e4
EKF: add matlab script to test complementary filter gains
9 years ago