Paul Riseborough
ab8c28a7cc
AP_NavEKF: Fix bug allowing takeoff in GPS modes without aiding
...
The legacy EKF switches GPs aiding on on arming, whereas the new EKF switches it on based on GPS data quality.
This means the decision to arm and therefore the predicted solution flags must now reflect the actual status of the navigation solution as it will no longer change when motor arming occurs.
2015-10-20 20:16:00 +11:00
Paul Riseborough
e076ed7f66
AP_NavEKF2: Remove compiler warning message
2015-10-20 18:16:16 +11:00
Andrew Tridgell
cb0f7cb370
NavEKF2: use new perf counter API
2015-10-20 18:16:15 +11:00
Paul Riseborough
60c2e81d19
AP_NavEKF2: Apply optimisations to declination fusion covariance update
...
These are the same type of optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:41 +11:00
Paul Riseborough
0054291cf4
AP_NavEKF2: Apply optimisations to side-slip fusion covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
5e4bc4e954
AP_NavEKF2: Apply optimisations to airspeed fusion covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
a29147d6d2
AP_NavEKF2: Apply optimisations to optical flow covariance update
...
These are the same optimisations that were successful with the magnetometer fusion
2015-10-20 15:21:40 +11:00
Paul Riseborough
b5e43288d4
AP_NavEKF2: Down to 12 from 14 usec for perf test[8]
2015-10-20 15:21:40 +11:00
Paul Riseborough
0f530bb5a0
AP_NavEKF2: Correct comments
2015-10-20 15:21:40 +11:00
Andrew Tridgell
d1dfd5fd01
AP_NavEKF2: use common header for optimisation level and irq disable
2015-10-20 15:21:40 +11:00
Andrew Tridgell
a017ae7e00
AP_NavEKF2: down to 218us for test[9]
2015-10-20 15:21:40 +11:00
Andrew Tridgell
fc23be8025
AP_NavEKF2: enable fine grained perf tuning for mag fusion
2015-10-20 15:21:40 +11:00
Andrew Tridgell
b6c1352e4c
AP_NavEKF2: added 10 test perf counters
...
used for fine grained performance tuning
2015-10-20 15:21:40 +11:00
Paul Riseborough
824436dfb6
AP_NavEKF2: Explicitly define constants as floats
2015-10-20 15:21:40 +11:00
Paul Riseborough
2fbd050418
AP_NavEKF2: Use blended accelerometer data
...
If high vibration levels cause offsets between the two, it switches to the accelerometer with lower vibration levels. The default behaviour is to use the average of both accelerometers.
2015-10-20 15:21:40 +11:00
Paul Riseborough
2b13020c19
AP_NavEKF2: Fix bug in vertical position derivative calculation
2015-10-20 15:21:39 +11:00
Paul Riseborough
f6ad79688e
AP_NavEKF2: Update start sequence console messages
2015-10-20 15:21:39 +11:00
Paul Riseborough
1a1236f764
AP_NavEKF2: Update magnetometer fusion documentation
2015-10-20 15:21:39 +11:00
Paul Riseborough
8526a8ba7e
AP_NavEKF2: Level processor loading between frames
...
Don't fuse other measurements on the same frame that magnetometer measurements arrive if running at a high frame rate as there will be insufficient time to complete other operations.
2015-10-20 15:21:39 +11:00
Paul Riseborough
225b81baf4
AP_NavEKF2: Prevent users breaking filter by setting excessive time delays
...
If time deelays greater than the IMU buffer length are used, then it is possible for measurements to be dropped.
2015-10-20 15:21:39 +11:00
Paul Riseborough
a1d6c7ae1e
AP_NavEKF2: Improve timing accuracy
...
This parameter is a compromise between numerical accuracy of the covariance prediction and sensor timing jitter
Further testing has shown that doing covariance prediction and sensor fusion every 10msec has no observable effect on fusion health and reduces timing hitter noise on magnetometer observations during high rate maneovures
2015-10-20 15:21:39 +11:00
Paul Riseborough
e0ed2dab63
AP_NavEKF2: Adjust IMU FIFO buffer for different IMU data rates
...
The values chosen ensure that up to consistent 250 msec of sensor delay compensation is available for different platform types
The revised values also ensure that fusion occurs at different time to when the 10Hz magnetometer measurements are read
2015-10-20 15:21:39 +11:00
Paul Riseborough
baa8692960
AP_NavEKF2: Allow use of magnetometer learning during optical flow nav
...
Adds fusion of the declination when there are no earth relative measurements so that the declination angle and therefore the copters yaw angle have an absolute reference.
This enables the length (but not the declination) of the earth field North/East states to change along with the magnetometer offsets.
2015-10-20 15:21:38 +11:00
Paul Riseborough
1b8a93ef0c
AP_NavEKF2: Update function header comments
2015-10-20 15:21:38 +11:00
Paul Riseborough
6899767d28
AP_NavEKF2: Disable magnetic field learning if we have no absolute position reference
2015-10-20 15:21:38 +11:00
Paul Riseborough
242b9641c8
AP_NavEKF2: Fix in-air logic bug
2015-10-20 15:21:38 +11:00
Paul Riseborough
e7de2d3ea3
AP_NavEKF: Update magnetic field learning options
...
Provide an option to always do learning
Make field learning decision logic clearer
Change defaults so that plane learns when airborne
Change defaults so that Rover does not learn (large external magnetic interference)
2015-10-20 15:21:38 +11:00
Paul Riseborough
495809f211
AP_NavEKF2: Allow magnetic field learning to be faster
2015-10-20 15:21:38 +11:00
Paul Riseborough
84a02efd52
AP_NavEKF2: Improve efficiency of Z magnetometer fusion
2015-10-20 15:21:37 +11:00
Paul Riseborough
35b08849f7
AP_NavEKF2: Reduce effect of rounding errors on covariance prediction
2015-10-20 15:21:37 +11:00
Paul Riseborough
4e928bf294
AP_NavEKF2: Fix bug preventing pre-takeoff reference measurements
2015-10-20 15:21:37 +11:00
Paul Riseborough
71c399674a
AP_NavEKF2: Delay use of magnetic field states until off-ground
...
Magnetic interference whilst on the ground can adversely affect filter states. This patch ensures that the simpler and more robust magnetic heading observation method is used until the vehicle has cleared the ground.
2015-10-20 15:21:37 +11:00
Paul Riseborough
99c2dc41e0
AP_NavEKF2: Miscellaneous tuning changes
2015-10-20 15:21:37 +11:00
Paul Riseborough
47ae0f35f6
AP_NavEKF2: Make EKF2 PosDownDerivative interface follow coding conventions
...
Updates arising from peer review.
2015-10-20 15:21:37 +11:00
Paul Riseborough
27393855f1
AP_NavEKF2: Change assumed gyro calibration accuracy
...
If an external gyro calibration has been performed, we should assume that it has been done under static conditions
Otherwise it is pointless and we should allow the EKF to find its own gyro bias offsets.
2015-10-20 15:21:36 +11:00
Paul Riseborough
67a669fcdc
AP_NavEKF2: Correct comments for height measurement
2015-10-20 15:21:36 +11:00
Paul Riseborough
0dc570b5a5
AP_NavEKF2: Improve optical flow takeoff detection logic
...
Ensure takeoff detect status goes to false when on ground
2015-10-20 15:21:36 +11:00
Paul Riseborough
d3a6690e4f
AP_NavEKF2: Fix bugs preventing use of optical flow navigation
2015-10-20 15:21:36 +11:00
Paul Riseborough
52fd369b2f
AP_NavEKF2: Add methods to output and calculate vertical position derivative
...
This patch calculates a derivative of the vertical position (positive down).
The derivative is exposed via a public function.
2015-10-20 15:21:35 +11:00
Andrew Tridgell
2ae0811458
AP_NavEK2: fixed perf counter names for EKF2
2015-10-20 14:36:49 +11:00
Randy Mackay
35769035d4
AP_NavEKF2: resolve compiler warning related to init order
2015-10-15 20:03:05 +09:00
Paul Riseborough
0c61e09b70
AP_NavEKF2: Critical big fix - states not initialised
...
The failure to initialise the magnetometer bias states to zero can result in a large jump in yaw gyro bias and heading when a heading reset is performed.
2015-10-15 09:52:55 +11:00
Paul Riseborough
e3013b493b
AP_NavEKF2: Critical bug fix - perf counter not initialised
2015-10-15 09:48:13 +11:00
Paul Riseborough
20a3f9782e
AP_NavEKF2: Add full set of selectable pre-flight GPS checks
2015-10-10 21:22:53 +09:00
Paul Riseborough
db4dfce7b1
AP_NavEKF2: Add fix status to GPS check report message
2015-10-10 14:49:07 +09:00
Paul Riseborough
22920aafad
AP_NavEKF2: Improve GPS status reporting
2015-10-10 14:48:59 +09:00
Paul Riseborough
1cb2220107
AP_NavEKF2: Critical Bugfix
2015-10-10 14:48:54 +09:00
Paul Riseborough
f467a89fa3
AP_NavEKF2: Update comments for filter status output function
2015-10-10 14:48:52 +09:00
Paul Riseborough
b142cc7fd2
AP_NavEKF2: Rename files and re-distribute content
2015-10-10 14:48:50 +09:00
Siddharth Bharat Purohit
1ce3276d74
AP_NavEKF2: split EKF control and output get functions from state specific libs
2015-10-10 14:48:48 +09:00
Siddharth Bharat Purohit
2e388fb2f9
AP_NavEKF2: split otp flow from PosVelNED
2015-10-10 14:48:46 +09:00
Siddharth Bharat Purohit
290ea0e1e8
AP_NavEKF2: split up EKF_core into different files
2015-10-10 14:48:44 +09:00
Paul Riseborough
cde140354a
AP_NavEKF2: Clean up control logic
2015-10-05 13:35:32 +09:00
Paul Riseborough
f4db78fc11
AP_NavEKF2: Allow for larger gyro bias errors
...
MPU6000 data sheet indicates that variation on gyro ZRO across temperature range from -40 to +85 is +-20 deg/sec.
The limits on the gyro bias states have been increased to allow for this.
To enable the EKF to accommodate such large gyro bias values in yaw without the yaw error wrapping, leading to continual heading drift, an unwrap function has been applied to the compass heading error.
2015-10-05 13:35:29 +09:00
Paul Riseborough
325f4139fe
AP_NavEKF2: Clean up mode change logic
2015-10-05 13:35:26 +09:00
Paul Riseborough
ef624199f9
AP_NavEKF2: Enable GPS velocity fusion to be inhibited
2015-10-05 13:35:23 +09:00
Paul Riseborough
53e58f1075
AP_NavEKF2: Update default parameters
...
Updates from preliminary tuning in Replay
2015-09-25 19:22:56 +10:00
Paul Riseborough
2fb72b6e6a
AP_NavEKF2: Clean up loss of GPS logic
2015-09-25 19:20:52 +10:00
Paul Riseborough
df0eb9d9d7
AP_NavEKF2: Don't run GPS checks when not required
2015-09-25 19:20:52 +10:00
Paul Riseborough
1986af021f
AP_NavEKF2: Remove un-used flight mode and duplicate variable
2015-09-25 19:20:52 +10:00
Paul Riseborough
7230472516
AP_NavEKF2: Adjust parameter defaults
2015-09-25 19:20:52 +10:00
Paul Riseborough
8bcedb228b
AP_NavEKF2: Bring pre-flight GPS checks up to date with EKF1
2015-09-25 19:20:52 +10:00
Randy Mackay
015f700bc0
AP_NavEKF2: getLastYawResetAngle returns last reset time
2015-09-24 16:57:38 +09:00
Paul Riseborough
80e182f827
AP_NavEKF2: Update EKF2 data logging
2015-09-24 12:58:44 +10:00
Paul Riseborough
4acd6c129a
AP_NavEKF2: Update parameters
2015-09-24 12:58:43 +10:00
Paul Riseborough
9c5e48e7e9
AP_NavEKF2: Remove unused variables and improve variable names
2015-09-24 12:58:43 +10:00
Paul Riseborough
4a7714e15d
AP_NavEKF2: Remove unused parameters and improve naming consistency
2015-09-24 12:58:43 +10:00
Paul Riseborough
8afb26087d
AP_NavEKF2: Remove unused function
2015-09-24 12:58:43 +10:00
Andrew Tridgell
fe76662faf
AP_NavEKF2: added set_enable() API
2015-09-23 18:55:12 +10:00
Paul Riseborough
f270573acc
AP_NavEKF2: Use library functions for quaternion corrections
2015-09-23 17:48:48 +10:00
Andrew Tridgell
cbc62238a9
AP_NavEKF2: run astyle for reformatting
2015-09-23 17:29:28 +10:00
Andrew Tridgell
760dafbb9d
AP_NavEKF2: added enabled() function
2015-09-23 12:09:26 +10:00
Andrew Tridgell
b4555f30a5
AP_NavEKF2: added frontend calls to core code
2015-09-23 11:56:42 +10:00
Andrew Tridgell
3ac75aeffb
AP_NavEKF2: added EK2_ENABLE parameter
2015-09-23 11:56:42 +10:00
Paul Riseborough
f500474a86
AP_NavEKF2: initial import of new maths EKF
2015-09-23 09:51:14 +10:00