Paul Riseborough
2ff338048d
EKF: Add support for range-finder fusion as primary height reference
9 years ago
Paul Riseborough
2c2850c0ce
EKF: Add functions to get position and velocity state variance
9 years ago
Paul Riseborough
32b03819ef
EKF: Add function to calculate global position validity
9 years ago
Paul Riseborough
270451e17b
EKF: Update height reset to support range finder height use
9 years ago
Paul Riseborough
dca186c6e8
EKF: Add required declarations for optical flow
9 years ago
Paul Riseborough
122dd9c531
EKF: Add source file for optical flow LOS rate fusion
9 years ago
Paul Riseborough
82cbfafb34
EKF: Add source file for terrain vertical position estimator
...
Implements a single state Kalman filter to estimate terrain vertical position relative to the NED origin.
9 years ago
mcsauder
6a61f9ba77
Remove a define that might not be required for compilations in other scnearios outside of C99 restrictions to minimize Pull Request modifications.
9 years ago
mcsauder
115c87a0ea
Remove an include that was unnecessary.
9 years ago
mcsauder
1aee1b895a
Uncomment commented lines that removed Eigen namespaces and dependencies.
9 years ago
mcsauder
f9be23933b
Correct deg to rad conversion inversion. Add additional functionality to mathlib to allow standalone compile without Limits.cpp and Limits.hpp files from PX4.
9 years ago
Paul Riseborough
5242af84af
EKF: Standardise covariance update and use static arrays for large matrices
9 years ago
Paul Riseborough
1414d591ce
EKF: Fix bug in declination fusion indexing
9 years ago
Roman Bapst
b2744f965d
use in_air flag from land detector to determine if we are on the ground
9 years ago
Paul Riseborough
569886a4fc
EKF: Fix bug in velocity and position innovation consistency checks
9 years ago
mcsauder
f9e3db0504
Move variable initializations from header file to constructor to allow C99 compliance.
9 years ago
Paul Riseborough
d8627c6aaf
EKF: Reset the vertical position states if height fusion times out
9 years ago
Paul Riseborough
f7a53d69f2
EKF: Improve height reset function
...
Add a method to reset the vertical velocity to enable in-flight resets
Reset to GPS height if baro height is not available.
9 years ago
Paul Riseborough
a6da73fa83
EKF: Add missing div0 protection
9 years ago
Paul Riseborough
d5e47d21db
EKF: miscellaneous comment and format changes
9 years ago
Paul Riseborough
7c83ac4b6d
EKF: Use heading fusion as default for startup and ground operation
9 years ago
Paul Riseborough
57d4064d7b
EKF: Increase default heading observation noise
...
Improves robustness when operating in a bad magnetic field environment
9 years ago
Paul Riseborough
97df006a6a
EKF: Update direct heading fusion
...
Adds a 312 Euler rotation sequence option for magnetic heading fusion.
Switches between it and the normal 321 sequence option depending on orientation.
9 years ago
mcsauder
5fec0df70d
Additional initializations required to reset complimentary filter values if the state estimate ever diverges and requires re-initiailization.
9 years ago
Roman Bapst
9192ced7bb
do not reset output attitude state after heading reset to avoid jumps in attitude
9 years ago
Paul Riseborough
cd0cac066a
EKF: Calculate and publish horizontal and vertical position accuracy
...
This calculation takes into account the uncertainty of the origin.
Dead reckoning status is also published
9 years ago
Paul Riseborough
a30830a7a9
EKF: Scale position observation noise with GPS quality
...
This allows the filter to adapt to variations in GPs quality.
The range of adjustment in observation noise is limited to the range between a lower limit set by the GPS observation noise parameter and an upper limit set by the no-aiding observation noise.
9 years ago
Paul Riseborough
f55a0bff53
EKF: Fix code style
9 years ago
Paul Riseborough
5b5bddebea
EKF: Always reset yaw and mag field states on entry into 3-axis mag fusion mode
9 years ago
Paul Riseborough
2d09a5f3ac
EKF: Don't reset yaw and mag field states when not necessary
9 years ago
Paul Riseborough
380db7ebef
EKF: Reset angle error covariance after yaw and mag field reset
...
The yaw angle could have changed by a significant amount making the correlations invalid.
Setting angle variances to zero prevents the initial kick in angles due to 3D fusion starting
9 years ago
Paul Riseborough
0ad5329caf
EKF: Update comments in heading fusion to clarify calculation of magnetic heading
9 years ago
Paul Riseborough
36affe3cd8
EKF: Fix bug causing incorrect initial roll when inverted
9 years ago
Paul Riseborough
016695fc3e
EKF: Reduce startup transients
...
Update initial state variance values
9 years ago
mcsauder
6613335937
Added constexpr back from const var type.
9 years ago
mcsauder
342010c113
Update c style array initialization to attempt to pass Travic CI build tests.
9 years ago
mcsauder
48e80e9e3e
Correct C style array initialization.
9 years ago
mcsauder
f9f00fa52b
Remove unnecessary include.
9 years ago
mcsauder
ccb5736353
Spaces to tab.
9 years ago
mcsauder
a4cecb1704
Match variable initialization order difference with upstream.
9 years ago
mcsauder
79d07c831f
Convert spaces to tabs to match upstream.
9 years ago
mcsauder
6c96f45f08
Remove whitespace differences with upstream for pull request.
9 years ago
Paul Riseborough
a711632017
EKF: Add method to fuse horizontal magnetometer data
...
This method is more suitable than a raw heading measurement because it works across a full range of pitch angles.
It has been made the default for ground operation.
9 years ago
mcsauder
4ce4724105
Added variable initializations back into EstimatorInterface() constructor to resolve a runtime error that occurs with uninitialized variables.
9 years ago
Paul Riseborough
6df6ac0023
EKF: Fix sign error in heading innovation calculation and clean up
9 years ago
Paul Riseborough
90e1bd3e36
EKF: wrap compass yaw estimate
9 years ago
Paul Riseborough
7d6226eb45
EKF: Improve efficiency of yaw angle fusion
...
Use direct calculation of Kaman gains with optimised algebra
9 years ago
Paul Riseborough
7f121e81e4
EKF: Update yaw innovation calculation to match revised derivation
...
The new derivation does not use magnetic field measurements in the observation model and instead fuses in a heading measurement directly.
9 years ago
mcsauder
72243c4a84
Resolve tab/space differences with upstream master.
9 years ago
mcsauder
437f6ca5fb
Moved initialization to object constructors to allow C99 compiler compatibility.
9 years ago