Paul Riseborough
481c624975
EKF: Remove use of vehicle arm status
...
Use single externally set in-air status for all decisions
9 years ago
Paul Riseborough
724280fd1f
EKF: move calculation of optical flow observation variance into a function
...
Allows it to be used when calculating initial state variance
9 years ago
Paul Riseborough
25682dce91
EKF: Prevent badly conditioned covariance calculation when starting or resetting to optical flow
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
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
727a43764f
EKF: update initial angle alignment check
9 years ago
Paul Riseborough
fe9f88a8b4
EKF: test new derivation
...
Use direct attitude parameterisation
Discard scale factors
Add accel bias
9 years ago
Paul Riseborough
4fcbfb5d42
EKF: correct error in comment
9 years ago
Paul Riseborough
874558d194
EKF: improve detection of bad vert accel data
...
Improve ability to detect if bad vertical accel data has caused loss of height accuracy by using historical data.
9 years ago
Paul Riseborough
421703c267
EKF: rework initialisation of height state and offsets
9 years ago
Paul Riseborough
10bf05e9a6
EKF: publish the vertical position offset
9 years ago
Paul Riseborough
0de15b1b20
EKF: Add variables to monitor vertical position and height offset
9 years ago
Roman Bapst
99fc61c27c
ekf2 airspeed fusion:
...
- finished logic for fusion
- fixed bug where previous control status was set in the wrong location
9 years ago
Paul Riseborough
31bf342fc1
EKF: publish GPS check status
9 years ago
Roman Bapst
60abf07bee
added function to return accelerometer bias
9 years ago
Paul Riseborough
2dcc6e2053
EKF: Improve accuracy of state prediction
...
Use an a common estimator value for gravity
Use average orientation across update interval when rotating delta velocities
9 years ago
Paul Riseborough
5bf02517a7
EKF: Rationalise use of rotation matrices and improve efficiency
9 years ago
Paul Riseborough
e10093854a
EKF: correct outputs for IMU offset
9 years ago
Paul Riseborough
b46053415f
EKF: Compensate optical flow data for sensor position offset
9 years ago
CarlOlsson
6bb2f7638c
adopted ekf.h
9 years ago
Paul Riseborough
6b2e2dba90
EKF: Add GPS height option and improve height recovery
9 years ago
Paul Riseborough
c58ab3e256
EKF: Enable fallback to baro alt when using range finder for height
9 years ago
Paul Riseborough
370f643f42
EKF: Enable use of range finder for primary height source
9 years ago
Paul Riseborough
e0fcce1463
EKF: Make position and velocity reset publish success
...
Some users of the position and velocity reset functions will need to know if the reset has been successful.
9 years ago
Paul Riseborough
dca186c6e8
EKF: Add required declarations for optical flow
9 years ago
Paul Riseborough
5242af84af
EKF: Standardise covariance update and use static arrays for large matrices
9 years ago
Paul Riseborough
d5e47d21db
EKF: miscellaneous comment and format changes
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
mcsauder
6613335937
Added constexpr back from const var type.
9 years ago
mcsauder
a4cecb1704
Match variable initialization order difference with 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
437f6ca5fb
Moved initialization to object constructors to allow C99 compiler compatibility.
9 years ago
bugobliterator
263c48d089
EKF: remove dependecies and allow ekf to be built as standalone shared lib
9 years ago
Paul Riseborough
d9bf4e9870
EKF: Enable control mode transitions to be detected
...
Save the previous value of the filter control modes
9 years ago
Paul Riseborough
de02aebafd
EKF: Reset covariance matrix when doing a yaw and magnetic field reset
...
The correlation terms in the covariance matrix will be incorrect after a reset, so should be zeroed
9 years ago
Paul Riseborough
83945581ed
EKF: Add function to calculate the magnetic declination to use
9 years ago
Paul Riseborough
6140d4b21f
EKF: Add function to reset yaw and magnetic field states
9 years ago
Roman
ce0ddc0207
-added comments
...
-removed unused print functions
-removed false _imu_time_last variable (correct is _time_last_imu)
9 years ago
Paul Riseborough
fff2bd50f6
EKF: Fix bugs in position and velocity resets
...
The position reset was not being compensated for velocity and measurement delay
The height was being reset with the position. It has been moved into a separate reset function
The maximum accepted GPS delay of 100msec was inadequate
The states was being incorrectly reset to the GPS position and Baro height on initial alignment.
9 years ago
Paul Riseborough
40e174b81c
EKF: Correct for sensor noise and baro offset during alignment
9 years ago
Paul Riseborough
47ab5ebcdd
EKF: Make PR comply with project convention for indenting
9 years ago
Paul Riseborough
dbb8e12948
EKF: Add fusion method to constrain declination when unobservable
...
When fusing 3-axis magnetometer data without absolute external aiding leg GPS), the declination is ultimately unobservable and the declination of the field states and the vehicle heading will slowly drift over time. To prevent this we need to fuse in a declination to constraint the NE earth field estimates.
9 years ago
Paul Riseborough
2c8c6efb45
EKF: Eliminate use of power function to square numbers
...
Use of the power function to square a number can be very inefficient depending on processor and compiler. Replace with an inlined function that multiplies the number by itself. This has not been put into the maths library because the use of the sq() function is peculiar to the autocode generated for the EKF and an inlined function was desired.
9 years ago
Roman
b749a7557b
fixed typos
9 years ago
bugobliterator
d79e12dfa1
EKF: fix code style
9 years ago
bugobliterator
c6249a2825
EKF: change estimator base class name to estimation interface
9 years ago
bugobliterator
b062bd2e38
EKF: move estimator specific variables to estimator core
9 years ago
bugobliterator
287f5eb0c2
EKF: move all estimator specific types to common header
9 years ago
bugobliterator
b05e2d825c
EKF: move estimator specific initialisations to estimator core
9 years ago