Commit Graph

146 Commits

Author SHA1 Message Date
Andrew Tridgell 579e4566c6 AP_NavEKF3: implement moving origin
this shifts EKF_origin to the current location at 1Hz, while leaving
public_origin alone. All output APIs and logging are relative to
public_origin.

The effect of this change is to remove the distortion caused by a
spherical earth, which allows the EKF to operate without errors at
very long distances from the public_origin.
2021-07-23 10:19:46 +09:00
Andrew Tridgell e409202bef AP_NavEKF3: update earth field at 1Hz
this prevents large mag errors on long distance flights
2021-07-23 10:19:46 +09:00
Andrew Tridgell 1119ffe6ba AP_NavEKF3: allow for double EKF build 2021-07-23 10:19:46 +09:00
Josh Henderson 64dc3bbe41 AP_NavEKF3: Fix #17789 core's ekf origin altitude different if flying 2021-06-22 12:01:10 +10:00
Josh Henderson 0ae3730f11 AP_NavEKF3: non_GPS modes ensure EKF origin set only once and stays in sync
ekf3
2021-06-22 12:01:10 +10:00
Paul Riseborough 76d0dcc25c AP_NavEKF3: Use common method for handling baro ground effect 2021-06-02 11:13:16 +09:00
Andrew Tridgell dc9435a88d AP_NavEKF3: don't limit baro change when we are in fixed wing mode 2021-06-02 11:13:16 +09:00
Peter Barker c00f110f3d AP_NavEKF3: use DAL APIs for takeoff/touchdown expected 2021-06-02 11:13:16 +09:00
Paul Riseborough 53c4b163ce AP_NavEKF3: Allow adjustment of on ground not moving test sensitivity
Also re-tune default sensitivity based on user supplied logs with noisy gyro data.
2021-03-23 10:05:59 +11:00
Peter Barker 4605870788 AP_NavEKF3: remove separate calls to get delta-times for vel and ang 2021-03-13 11:29:29 +11:00
Paul Riseborough 3634a942a1 AP_NavEKF3: Fix bug causing unwanted use of default airspeed 2021-03-05 12:10:01 +11:00
Paul Riseborough 9a5a264aa0 AP_NavEKF3: Improve wind estimation without airspeed sensing
Enable default airspeed variance to be specified externally
Improve control of sideslip fusion
Don't modify non wind states unnecessarily when using synthesised air data measurements
2021-03-05 12:10:01 +11:00
Andrew Tridgell ddc4d08e8f AP_NavEKF3: make drag fusion optional 2021-01-24 11:56:52 +11:00
Andrew Tridgell 1ccda938cb AP_NavEKF3: make external navigation optional 2021-01-24 11:56:52 +11:00
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