Commit Graph

121 Commits

Author SHA1 Message Date
Paul Riseborough c0d88e2673 AP_NavEKF3: Fix vertical velocity reset
Fixes bug that prevents the vertical velocity being reset to the GPS if the position aiding has already timed out and improves sensitivity of the bad IMU data check.
2021-09-23 18:55:28 +10:00
Paul Riseborough 17c2ba5ac1 AP_NavEKF3: Fix bug causing too frequent resets if bad IMU data detected 2021-09-23 18:55:28 +10:00
Josh Henderson 3006d50f97 AP_NavEKF3: use vector.xy().length() instead of norm(x,y) 2021-09-14 10:43:46 +10:00
Paul Riseborough 5fa3ed5755 AP_NAvEKF3: use #define value for bad IMU hold time 2021-07-22 18:20:45 +10:00
Paul Riseborough 3e123c0a30 AP_NavEKF3: Use sensor variance when checking for bad IMU 2021-07-22 18:20:45 +10:00
Paul Riseborough e3bdbcd8ea AP_NavEKF3: Make bad IMU status more persistent 2021-07-22 18:20:45 +10:00
Paul Riseborough ed61287410 AP_NavEKF3: Don't update accel bias states if vibration affected 2021-07-22 18:20:45 +10:00
Andrew Tridgell fc2118f42b AP_NavEKF3: process GPS yaw independently of GPS fix
this processes GPS yaw with its own timestamp and as a separated step
from fusing position and velocity. This makes the yaw time handling
more accurate as yaw for moving baseline GPS comes in as a separate
piece of data from the position and velocity
2021-07-21 17:59:49 +10:00
Andrew Tridgell 6b73c2151a 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-14 17:34:40 +10:00
Andrew Tridgell 885e518741 AP_NavEKF3: allow for double EKF build 2021-07-10 07:20:41 +10:00
Paul Riseborough 9d85a4292e AP_NavEKF3: Ensure postion timeout flag and timer is always reset 2021-06-23 13:26:02 +09:00
Paul Riseborough de3c6d6e5c AP_NavEKF3: Fade each vert vel variance clip count over 1 second 2021-06-23 13:26:02 +09:00
Paul Riseborough ac92182153 AP_NavEKF3: Clean up initialisation of boolean array 2021-06-23 13:26:02 +09:00
Paul Riseborough b0763f04f1 AP_NavEKF3: Remove unwanted line 2021-06-23 13:26:02 +09:00
Paul Riseborough b7aad13cc8 AP_NavEKF3: Protect against collapse of velocity and position variances 2021-06-23 13:26:02 +09:00
Paul Riseborough 36160ba9ce AP_NavEKF3: Fix bug preventing horizontal position reset if badIMUdata 2021-06-23 13:26:02 +09:00
Paul Riseborough 5d00b7d042 AP_NavEKF3: Fix bug preventing height reset if badIMUdata 2021-06-23 13:26:02 +09:00
Paul Riseborough e4eb8339d0 AP_NavEKF3: Fix bug preventing velocity reset if badIMUdata 2021-06-23 13:26:02 +09:00
Paul Riseborough a5a25411da AP_NavEKF3: Remove unnecessary baro limiting 2021-06-02 11:13:16 +09:00
Paul Riseborough 124f016e5b AP_NavEKF3: Use parameter to set baro ground effect dead-zone 2021-06-02 11:13:16 +09: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 ac87cab6bc AP_NavEKF3: constify array index variable 2021-03-23 10:05:59 +11:00
Paul Riseborough 1498b516a3 AP_NavEKF3: Don't try to learn gyro biases that are poorly observable 2021-03-23 10:05:59 +11:00
Paul Riseborough 918606e71d AP_NavEKF3: Don't use fake measurements to learn dvel bias 2021-03-23 10:05:59 +11:00
Paul Riseborough c709ad9c80 AP_NavEKF3: Add missing axis specific dvel bias update inhibit 2021-03-23 10:05:59 +11:00
Paul Riseborough a07427fd30 AP_NavEKF3: Don't learn poorly observed IMU dvel bias states before flight 2021-03-23 10:05:59 +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
chobitsfan 26a3a02c81 AP_NavEKF3: use posxy_source in all places 2021-01-14 16:49:12 +09:00
chobits e73d28fe19 AP_NavEKF3: remove redundant extnav code 2021-01-12 21:56:36 +09:00
Peter Barker b79a26135c AP_NavEKF3: move posvel fusion health booleans 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
Andrew Tridgell 603e0c090d AP_NavEKF3: don't reset EKx_GPS_TYPE when GPS has no vertical velocity
setting the parameter to 1 causes the following issues:

 - the GPS may not have vertical velocity at the time the parameter
   set happens, but may get it later when the GPS is fully configured

 - we may switch between GPS modules which do/don't have vertical
   velocity

 - the user may download parameters after the set(1), and end up with
   incorrect parameters they may later load onto the vehicle,
   permanently disabling use of vertical velocity
2020-12-01 10:33:50 +11:00
Randy Mackay 5eb3875ebb AP_NavEKF3: rename posxy_source_last and posxy_source_reset 2020-11-20 16:43:44 +09: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 58aa6086df AP_NavEKF3: always calculate GPS innovations and variances 2020-11-20 16:43:44 +09:00
Randy Mackay e7e91b1c3b AP_NavEKF3: always calculate extNav innovations and variances 2020-11-20 16:43:44 +09:00
Randy Mackay 6b2b5c4ca0 AP_NavEKF3: add CalculateVelInnovationsAndVariances 2020-11-20 16:43:44 +09:00
Randy Mackay 2505fd5c1c AP_NavEKF3: body and wheel odometry check source 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 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 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 b726630ef4 AP_NavEKF3: pos timeout or glitch does not reset vel if fusing successfully
vel is not reset if GPS velocity, optical flow, visual odometry or wheel
encoders are successfully being fused
2020-10-28 19:06:53 +11:00
Randy Mackay 3b38aa6d7b AP_NavEKF3: GPS change pos reset uses ResetPositonNE and ResetPositionD
Using these existing functions removes some code duplicate
non-functional change
2020-10-28 19:03:34 +11:00