Andrew Tridgell
8da511f039
AP_NavEKF3: make body odomotry build depend on vehicle type
...
saves about 11k of flash
2021-01-24 11:56:52 +11:00
Randy Mackay
27c998ad94
AP_NavEKF3: rename source and yawFusionMethod from EXTERNAL to GPS
2021-01-05 10:58:06 +11:00
Randy Mackay
c14b4a8b6c
AP_NavEKF3: add support for GSF as yaw source
2021-01-05 10:58:06 +11:00
Randy Mackay
5891c6ace8
AP_NavEKF3: separate GPS yaw from ExtNav yaw
2021-01-05 10:58:06 +11:00
Paul Riseborough
a9e76d44af
AP_NavEKF3: Clean up yaw fusion logic
2020-12-15 19:29:16 +11:00
Paul Riseborough
bdc202378a
AP_NavEKF3: fix white space
2020-12-11 15:21:41 +11:00
Paul Riseborough
4884476c09
AP_NavEKF3: Formatting and comment fixes
2020-12-11 15:21:41 +11:00
Andrew Tridgell
be4d10a95e
AP_NavEKF3: rework parameter handling
...
and fixed indentation
2020-12-11 15:21:41 +11:00
Paul Riseborough
c9ab4b18b0
AP_NavEKF3: Add multicopter wind estimation
2020-12-11 15:21:41 +11:00
Andrew Tridgell
2071a19a40
AP_NavEKF3: only fuse airspeed if healthy
2020-12-11 09:59:49 +11:00
chobits
013b39d2a6
AP_NavEKF3: fix ext nav vel timestamp cal
2020-12-07 08:54:42 +09:00
Andrew Tridgell
bdba430e55
AP_NavEKF3: save memory on beacon debug structure
...
only allocate when beacons are enabled. This relies on a guarantee in
the DAL that the beacon count cannot change
2020-12-01 10:53:08 +11:00
Peter Barker
2d25149e2e
AP_NavEKF3: move global state to be on the stack
2020-12-01 10:40:09 +11:00
Andrew Tridgell
d242339f2e
AP_NavEKF3: added have_vz flag to GPS buffer data
...
this ensures that we record GPS vertical velocity status for every
sample correctly
2020-12-01 10:33:50 +11:00
Andrew Tridgell
80f7906744
AP_NavEKF3: removed inhibitGps and inhibitGpsVertVel options
...
these were unused
2020-12-01 10:33:50 +11:00
Peter Barker
52b8b95a72
AP_NavEKF3: rearrange readGPSData to remove some nesting
2020-11-30 11:51:12 +11:00
Peter Barker
e1a033b296
AP_NavEKF3: make logging a core concern
...
Also dissolve some methods only used for logging
2020-11-22 20:47:29 +11:00
Andrew Tridgell
1e4b1d7563
AP_NavEKF3: convert to using common buffer classes
...
this saves a considerable amount of flash
2020-11-20 21:56:32 +11:00
Randy Mackay
33b6212cce
AP_NavEKF3: rename _sources to sources
2020-11-20 16:43:44 +09:00
Randy Mackay
6daaa06317
AP_NavEKF3: integrate AP_NavEKF_Source::useVelXYSource
...
also integrate useVelZSource
2020-11-20 16:43:44 +09:00
Randy Mackay
faed58a027
AP_NavEKF3: integrate Source for yaw
2020-11-20 16:43:44 +09:00
Randy Mackay
8931e50166
AP_NavEKF3: integrate Source for alt
2020-11-20 16:43:44 +09:00
Randy Mackay
c21d58ebea
AP_NavEKF3: integrate Source for position
2020-11-20 16:43:44 +09:00
Andrew Tridgell
c14d19be68
AP_NavEKF3: fixed gcc 9.3 build error
...
gcc 9.3 doesn't like the use of get_accel(i) when array length is 1
2020-11-13 14:30:11 +11:00
Andrew Tridgell
f5275fd0ad
AP_NavEKF3: fixed use of pointers in ringbuffers
...
these don't work with AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
9b81c5a1e0
AP_NavEKF3: use dal reference in EKF backends
...
saves a bit of flash space
2020-11-10 16:15:45 +11:00
Andrew Tridgell
1bdf6173ec
AP_NavEKF3: removed have_ekf_logging
2020-11-10 16:15:45 +11:00
Andrew Tridgell
a0de6c620f
AP_NavEKF3: use selected GPS for gps_yaw_deg()
...
more than one GPS could provide yaw
2020-11-10 16:15:45 +11:00
Andrew Tridgell
e87f98066f
AP_NavEKF3: support replay with external navigation data
2020-11-10 16:15:45 +11:00
Andrew Tridgell
7bbbbd314c
AP_NavEKF3: added optflow support for AP_DAL
2020-11-10 16:15:45 +11:00
Andrew Tridgell
096aab9388
AP_NavEKF3: convert to use AP_DAL for new replay structure
...
Co-authored-by: Peter Barker <pbarker@barker.dropbear.id.au>
2020-11-10 16:15:45 +11:00
Randy Mackay
2f1ae29a9c
AP_NavEKF3: extnav data gets corrected boolean
...
CorrectExtNavForSensorOffset and CorrectExtNavVelForSensorOffset use
corrected boolean to avoid correcting twice
2020-10-24 12:35:58 +11:00
Randy Mackay
71487e9c10
AP_NavEKF3: gps_elements gets corrected flag
...
CorrectGPSForAntennaOffset uses this flag to ensure position and velocity are only corrected once
2020-10-24 08:49:33 +09:00
Andrew Tridgell
8a4b0f858a
AP_NavEKF3: reset body mag variances at key points
...
we need to reset the body mag variances if we change sensors or if we
are starting 3D fusion. When not doing 3D fusion we zero the
variances, so they must be initialised again when we restart
fusion. This fixes a bug in handling the variances on a 2nd flight
2020-09-20 09:25:57 +10:00
Andrew Tridgell
c03c43e52c
AP_NavEKF3: use same mag switch pattern as EKF2
...
based on Pauls suggested change
2020-09-08 11:01:14 +10:00
Andrew Tridgell
3836b59041
AP_NavEKF3: fixed handling of failed compass
...
when a compass goes unhealthy due to sensor failure we should try
another compass after 10s if another compass is available
2020-09-08 11:01:14 +10:00
Harshit Kumar Sankhla
edc3709653
AP_NavEKF3: implement sensor affinity using EK3_AFFINITY parameter
...
this allows the EKF core index to be used to select a GPS/baro/mag
instance. This is an alternative to GPS blending that allows EKF lane
switching to be used to select the right combination of GPS and IMU
add logging to XKFS message
2020-08-27 20:20:51 +10:00
Randy Mackay
46a7e96c48
AP_NavEKF3: readRngBcnData avoids array overflow from beacon count
2020-08-25 09:38:10 +09:00
Randy Mackay
b86e16e927
AP_NavEKF3: readRngBcnData gets minor formatting fix
2020-08-25 09:38:10 +09:00
Randy Mackay
384029d278
AP_NavEKF3: rngBcnDataNew made local
2020-08-25 09:38:10 +09:00
Randy Mackay
8c877f02af
AP_NavEKF3: shrink beacon arrays and add assert
2020-08-25 09:38:10 +09:00
Randy Mackay
6bf2057712
AP_NavEKF3: minor formatting fixes
2020-08-21 13:18:58 +09:00
Randy Mackay
4c40d2ac3f
AP_NavEKF3: readyToUseBodyOdm uses delayed imu and wheel encoder timestamps
2020-08-21 13:18:58 +09:00
Randy Mackay
056a2de260
AP_NavEKF3: wheelOdmDataNew member made local
...
this variable is never used outside the writeWheelOdom method
2020-08-21 13:18:58 +09:00
Andrew Tridgell
44d5a923cc
AP_NavEKF3: apply min GPS accuracy at measurement point
...
this fixes an issue a RTK GPS gives 1cm horizontal and vertical
accuracy and that causes the variances to get too small
2020-08-21 07:40:13 +10:00
chobits
c722367c6c
AP_NavEKF3: move extNavVelNew to local variable
2020-08-12 15:40:38 +09:00
Peter Barker
6b701ae3b3
AP_NavEKF3: correct includes
2020-08-07 19:20:07 +10:00
Paul Riseborough
9a4108f55e
AP_NavEKF3: Simplify setting EK3_MAG_CAL
...
Don't require user to separately set EK3_MAG_CAL to fly without a magnetomer
2020-07-07 15:33:58 +10:00
Paul Riseborough
8ff6780323
AP_NavEKF3: Clarify distinct use cases for 'takeoff expected'
2020-07-07 15:33:58 +10:00
Paul Riseborough
d1a0c2eb30
AP_NavEKF3: Start EKF-GSF yaw estimator before fixed wing takeoff
2020-07-07 15:33:58 +10:00
Dr.-Ing. Amilcar do Carmo Lucas
fca8d33c50
AP_NavEKF3: fix vertical flyaways when rangefinder stops providing data
2020-06-24 21:16:50 +09:00
Randy Mackay
ca0ae57b56
AP_NavEKF3: protect against position-delta sensor data being NaN
2020-06-19 13:46:52 +09:00
Randy Mackay
331f2f5fe7
AP_NavEKF3: writeExtNavData stores pos to buffer first
...
This is a non-functional change
2020-06-19 13:46:52 +09:00
Randy Mackay
578800dfbb
AP_NavEKF3: protect against ExtNav being NaN
2020-06-19 13:46:52 +09:00
chobits
9b448b83c0
AP_NavEKF3: use err info from ext nav interface
2020-06-09 13:31:21 +09:00
Randy Mackay
0f212ca727
AP_NavEKF3: accept extnav at up to 50hz
2020-06-09 09:42:14 +10:00
chobits
c7817eaca1
AP_NavEKF3: support VISION_SPEED_ESTIMATE
...
Co-authored-by: Randy Mackay <rmackay9@yahoo.com>
2020-06-02 08:33:42 +09:00
Randy Mackay
ef02942459
AP_NavEKF3: writeBodyFrameOdom accepts delay
2020-05-15 10:07:52 +09:00
Randy Mackay
c28fd27b02
AP_NavEKF3: writeExtNavData accepts delay
2020-05-15 10:07:52 +09:00
Randy Mackay
45e6896d95
AP_NavEKF3: ensure extnav angle error is at least 5deg
2020-05-14 08:02:13 +10:00
Andrew Tridgell
5350ea5c58
AP_NavEKF3: avoid build warnings with g++ 9
2020-05-10 15:11:22 +10:00
priseborough
c5e465aec9
AP_NavEKF3: add external nav system support
...
includes decoupling height source from use of external nav data
2020-04-30 15:55:59 +09:00
Paul Riseborough
ad5ae1813d
AP_NavEKF3: Don't use geomag data when user specifies declination
2020-04-28 11:42:31 +09:00
Andrew Tridgell
216935c1f2
AP_NavEKF3: fixed loss of GPS fusion
...
we must not do a storedGPS.recall unless we will be using the data,
otherwise we will lose GPS samples and risk stopping GPS fusion
2020-04-24 09:43:23 +10:00
Paul Riseborough
863f989130
AP_NavEKF3: Fix integration of GPS yaw options
...
AP_NavEKF3: fix failure to arm with EK3_MAG_CAL = 7
AP_NavEKF3: Fix failure to arm when not using magnetometer
AP_NavEKF3: Reduce yaw drift when EK3_MAG_CAL = 7
2020-04-24 09:43:22 +10:00
Paul Riseborough
410b5825fb
AP_NavEKF3: Enable use of EKF-GSF yaw estimate
...
AP_NavEKF3: Add emergency yaw reset using a Gussian Sum Filter estimate
AP_NavEKF3: Reduce default minimum GPS velocity noise for Copters
Enables fail-safe to be set with more sensitivity and improves tracking accuracy.
Origin values were set using typical GPS performance for receivers on sale 6 years ago. Receiver performance has improved since then.
AP_NavEKF3: Prevent constant mag anomaly yaw resets
Prevents constant magnetic anomaly induced resets that can be triggered when flying with vehicle generated magnetic interference.
Allows for two resets per takeoff. Allowance for two resets is required, becasue a large ground based magnetic yaw anomaly can cause a sufficiently large yaw innovation that two resets in close succession are required.
AP_NavEKF3: Add option to fly without magnetometer
AP_NavEKF3: Rework emergency yaw reset logic
Use a separate external accessor function to request the yaw reset.
Allow reset requests to remain active for a defined period of time.
Tidy up reset function to split out accuracy check.
AP_NavEKF3: Fix vulnerability to lane switch race condition
Prevents the situation where a lane switch results in a lane being selected that does not have the correct yaw. This can occur if the primary lane becomes unhealthy before the external failsafe monitor has time to react.
AP_NavEKF3: Fix EKF_MAG_CAL = 6 behaviours
Fix bug causing the yaw alignment to be performed at startup before the GSF had a valid estimate.
Fix bug causing emergency yaw message to be output for a normal reset.
Fix vulnerability to reported negative yaw variance.
Remove duplicate timer checks.
AP_NavEKF3: Update EK3_MAG_CAL documentation
AP_NavEKF3: Relax yaw gyro bias convergence check when not using mag
AP_NavEKF3: Reduce yaw drift in hover with no yaw sensor
Uses the GSF yaw estimate if available which is better than the EKF's own yaw when no yaw sensor is available.
2020-04-24 09:43:22 +10:00
Peter Barker
87108b86c8
AP_NavEKF3: add documentation for XKFM message
2020-04-21 09:48:43 +10:00
Andrew Tridgell
1f8cd830ea
AP_NavEKF3: fixed use of tabs
2020-04-11 21:14:31 +10:00
Paul Riseborough
eeac0a05b9
AP_NavEKF3: Improvements to on ground movement check
...
Reduce sensitivity and log test ratios.
Reduce base logging rate to 5Hz and log when status changes.
2020-04-11 21:14:31 +10:00
Paul Riseborough
ebb8bb4f6f
AP_NavEKF3: Enable use of yaw fusion before external yaw sensor starts
2020-04-11 21:14:31 +10:00
Andrew Tridgell
6f04fae4a0
AP_NavEKF3: added fallback to mag option with external yaw
...
this allows for a magnetometer to be used as a fallback yaw source in
flight when using an external yaw source such as a GPS. The
magnetometer bias is learned while the GPS yaw is available and
fallback is only done if the mag yaw and GPS yaw are consistent when
fallback is enabled
This also learns the Z gyro bias until first yaw alignment when
MAG_CAL is EXTERNAL_YAW_FALLBACK. This prevents large gyro bias
building while waiting for GPS lock
2020-04-11 21:14:31 +10:00
Peter Barker
4c19eb4bab
AP_NavEKF3: use compass reference rather than repeatedly asking AHRS for it
2020-03-13 08:26:18 +11:00
Peter Barker
4431d01230
AP_NavEKF3: stop relying on the presence of a RangeFinder
2019-12-11 08:09:01 +11:00
Andrew Tridgell
c6aad9b1ec
AP_NavEKF3: don't use WMM tables unless we have a compass scale factor set
2019-12-03 20:48:23 +11:00
Peter Barker
fe8599d6d7
AP_NavEKF3: adjust for renaming of RangeFinder files
2019-11-12 07:14:37 +08:00
Peter Barker
11b372a986
AP_NavEKF3: use enum-class for RangeFinder Status
2019-11-09 08:01:53 +11:00
Randy Mackay
b4a8691a9e
AP_NavEKF3: remove wheel encoder update limit
2019-10-22 07:15:48 +08:00
Jaaaky
54f8e1137e
AP_NavEKF3: added EK3_MAG_EF_LIM parameter
...
Adapted from EKF2 implementation as of commits
3835d2613
, e9ed3540f
and df4fc0fff
this sets a limit on the difference between the earth field from the
WMM tables and the learned earth field inside the EKF. Setting it to
zero disables the feature. A positive value sets the limit in mGauss.
2019-10-20 07:34:35 +11:00
Andrew Tridgell
c2067d5bc2
AP_NavEKF3: set a min yaw accuracy from GPS of 5 degrees
...
GPS modules tend to be rather optimistic about their yaw accuracy. By
setting a min or 5 degrees we prevent the user constantly getting
warnings about yaw innovations
2019-10-15 11:06:11 +11:00
Peter Barker
1c187d8feb
AP_NavEKF3: correct return of empty prearm string
2019-09-19 08:47:47 +09:00
Michael du Breuil
9a7d64e8fc
AP_NavEKF3: Allow the GPS to be responsible for logging
2019-09-10 09:09:17 +10:00
Andrew Tridgell
451fe840ee
AP_NavEKF3: ensure that EKF origin stays in sync on all cores
...
this prevents the EKF origin on different cores from being initialised
to different values. A common value is stored in the frontend and used
by a core if it doesn't have an origin
2019-07-29 10:08:22 +10:00
Andrew Tridgell
b56914b879
AP_NavEKF3: use GPS yaw if available and enabled
...
this allows a suitable GPS to be used as an external yaw source
2019-07-13 11:05:57 +10:00
priseborough
977a7b68ed
AP_NavEKF3: Add push to buffer for external yaw sensor data
2019-07-13 11:05:57 +10:00
priseborough
87c7649d09
AP_NavEKF3: Add interface for yaw angle measurements
2019-07-13 11:05:57 +10:00
Andrew Tridgell
634db441f8
AP_NavEKF3: origin handling fixes from Francisco
2019-07-11 06:40:55 +10:00
Andrew Tridgell
f3fc910abe
AP_NavEKF3: continuously update gpsGoodToAlign
...
use it to determine how to handle a height datum reset
2019-07-07 19:20:32 +10:00
Andrew Tridgell
209bca162c
AP_NavEKF3: added inactive bias learning
...
this allows for biases on inactive IMUs to be learned so that an IMU
switch within an EKF lane does not cause a jump in the IMU data
2019-07-07 19:03:01 +10:00
Peter Barker
ef2589738d
AP_NavEKF3: use beacon singleton
2019-07-01 07:20:58 +09:00
Michael du Breuil
b624f6f008
AP_NavEKF3: Reduce scope of AP_Baro.h
2019-06-27 14:56:21 +10:00
Michael du Breuil
be74b631fe
AP_NavEKF3: Fix AP_GPS.h include
2019-06-18 10:02:05 +10:00
Peter Barker
dce472745e
AP_NavEKF3: take EAS2TAS from AHRS rather than airspeed
2019-06-06 12:44:36 +10:00
Pierre Kancir
b3a1c9c90c
AP_NavEKF3: use get_distance_NE instead of location_diff
2019-04-08 08:00:52 -07:00
Arjun Vinod
f382a657bd
AP_NavEKF3: fixed typos
2019-02-26 08:33:39 +11:00
Tom Pittenger
55377b234f
AP_NavEKF3: remove HAL_CPU_CLASS_150 check, 150 is already a minimum requirement
2019-02-17 13:00:00 -08:00
Andrew Tridgell
39ffef1f08
AP_NavEKF3: fixed EKF compass switching
...
when we had 3 compasses the lack of the 'break' meant when we switched
compass in flight we would always switch back instantly to the one
that we had just rejected.
2019-02-09 13:04:52 +11:00
Andrew Tridgell
de58fb4637
AP_NavEKF3: support in-flight compass learning
2018-10-24 07:25:42 +10:00
Peter Barker
be9235a581
AP_NavEKF3: fix writeOptFlowMeas signature
...
const some of the vectors, stop taking references to scalars that aren't
being changed
2018-09-11 09:03:22 +10:00
Pierre Kancir
48c5a9b9c5
AP_NavEKF3: style change in BCN mesurements
2018-04-03 09:54:43 +09:00
Peter Barker
55b8a2288e
AP_NavEKF3: use ins singleton
2018-03-16 00:37:35 -07:00