Commit Graph

216 Commits

Author SHA1 Message Date
Peter Barker
35a5a73f52 AP_NavEKF3: avoid using struct Location
clang reports this could be a problem when compiling under some EABIs.  Remove it from most places as it is just noise, replace with class where we want to avoid including Location.h
2023-02-04 22:51:54 +11:00
Peter Barker
8a312d4f34 AP_NavEKF3: use classes to fix MATH_CHECK_INDEXES 2023-01-25 19:58:54 +11:00
Peter Barker
da95985dd7 AP_NavEKF3: remove mag_state state
we don't need to persist this across multiple calls as we now fuse all axes on the one step.

I've moved the defintion of these variables to where they are initialised to make it clear they're not used uninitialised.
2023-01-25 19:58:54 +11:00
Peter Barker
063a041d22 AP_NavEKF3: add trailing comma to AidingMode enum, reindent same 2023-01-25 19:50:34 +11:00
Tatsuya Yamaguchi
366a325fc0 AP_NavEKF3: do not check the second range finder if RANGEFINDER_MAX_INSTANCES is 1 2022-12-20 10:05:24 +11:00
Stephen Dade
abcacec25f AP_NavEKF3: Add support for fixed height optical flow 2022-12-01 08:03:47 +09:00
Peter Barker
5cb6906968 AP_NavEKF3: add and use AP_BEACON_ENABLED 2022-11-16 08:16:31 +11:00
Andrew Tridgell
92f25150f6 AP_NavEKF3: fixed getLLH alt for local origin height
this fixes a bug introduced in #21834

this fix in #21834 was correct for getPosD, but should not have been
applied to getLLH

this caused cruise mode in plane to descend/ascend by the difference
between the public and local origins on mode entry

fixes #21984
2022-10-23 11:23:48 +11:00
Paul Riseborough
399f30bfce AP_NavEKF3: Allow reporting of airspeed consistency for a deselected sensor 2022-09-26 14:17:53 +10:00
Paul Riseborough
eb0e9230a1 AP_NavEKF3: Add accessor function for airspeed health monitoring 2022-09-26 14:17:53 +10:00
Paul Riseborough
608b4c0713 AP_NavEKF3: Enable monitoring of unhealthy airspeed sensors
Innovations and innovation test ratios will still be calculated and reported for an unhealthy sensor, but the EKF states wnd covariance matrix will not be modified.
2022-09-26 14:17:53 +10:00
Peter Barker
0665f9c32b AP_NavEKF3: store and use lastKnownPositionD
When returning our last-known-position we were supplying lat/lng but not
altitude.

This usually really doesn't matter as this result generally isn't used,
especially for altitude.  OTOH, it may prevent a bug into the future.
2022-08-22 19:48:03 +10:00
Peter Barker
0443c8561b AP_NavEKF3: stop using GCS_MAVLINK.h in header files
... by passing through a reference to a link object instead
2022-08-16 09:45:51 +10:00
Tamas Nepusz
8959d35b91 AP_NavEKF3: add EK3_GPS_VACC_MAX as a threshold that decides whether to use GPS as altitude source depending on vAcc 2022-08-03 17:57:05 +10:00
Randy Mackay
e37bf9ad53 AP_NavEKF3: drag fusion for att and velAiding
also add dragTimeout
2022-05-25 20:05:21 +09:00
Ruffalo-sunghwan
5a4d61e3a4 AP_NavEKF3 : correct comment spelling 2022-05-24 20:27:45 +09:00
Andrew Tridgell
9dcff1a23f AP_NavEKF3: set rejecting_airspeed flag
we report as rejecting airspeed when we have not fused airspeed for 3s
and want to use airspeed
2022-02-07 14:13:49 +11:00
Randy Mackay
e16a64383f AP_NavEKF3: getOptFlowSample returns latest correct flow data for use in calibration 2022-01-29 08:26:12 +09:00
Andrew Tridgell
a33febd90a AP_NavEKF3: fixed gaps in EKF logging
timestamps should not be static as otherwise some lanes will not be
logged
2021-12-28 16:03:47 +11:00
Andrew Tridgell
282209e3e6 AP_NavEKF3: add accessor for GSF yaw estimator 2021-11-01 09:00:27 +11:00
Andy Piper
bc0101e446 AP_NavEKF3: convert APM_BUILD_COPTER_OR_HELI() to APM_BUILD_COPTER_OR_HELI 2021-10-26 11:42:12 +11:00
Paul Riseborough
c828bdfbc9 AP_NavEKF3: Reduce output observer vertical velocity error when bad IMU 2021-09-23 18:55:28 +10:00
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
Randy Mackay
63e579d738 AP_NavEKF3: add using_extnav_for_yaw 2021-08-31 09:20:17 +10:00
Randy Mackay
0edfd2634f AP_NavEKF3: rename using_external_yaw to using_noncompass_for_yaw 2021-08-31 09:20:17 +10:00
Randy Mackay
d1f2acd813 AP_NavEKF3: rename varInnovOptFlow to flowVarInnov
also renamed innovOptFlow to flowInnov
2021-08-24 16:49:04 +09:00
Randy Mackay
85ade10e85 AP_NavEKF3: ofDataNew made local 2021-08-24 16:49:04 +09:00
Randy Mackay
11847cfcf5 AP_NavEKF3: always calculate optical flow innovations and variances 2021-08-24 16:49:04 +09:00
Randy Mackay
5779ebd177 AP_NavEKF3: remove unused Tbn_flow 2021-08-24 16:49:04 +09:00
Randy Mackay
2a2cde68ef AP_NavEKF3: skip GSF reset count check if source actively changed
also only fail all compass on emergency reset
2021-08-10 09:44:57 +10:00
Paul Riseborough
59d31cc7d5 AP_NavEKF3: Rework non-airspeed wind estimation
Faster wind estimation when not using airspeed with acceptable noise in wind velocity estimates.
2021-07-22 18:20:45 +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
e3bdbcd8ea AP_NavEKF3: Make bad IMU status more persistent 2021-07-22 18:20:45 +10:00
Paul Riseborough
ccc95d8726 AP_NavEKF3: Add accessor function for vibration affected status 2021-07-22 18:20:45 +10:00
Paul Riseborough
62d70a628e AP_NavEKF3: Use large accel process noise when IMU data is bad 2021-07-22 18:20:45 +10:00
Peter Barker
795f412264 AP_NavEKF3: pass NavEKF failures back up to callers 2021-07-21 18:02:26 +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
a8c6d742aa AP_NavEKF3: update earth field at 1Hz
this prevents large mag errors on long distance flights
2021-07-10 07:20:41 +10:00
Andrew Tridgell
885e518741 AP_NavEKF3: allow for double EKF build 2021-07-10 07:20:41 +10:00
Paul Riseborough
1281033931 AP_NavEKF3: Remove unused class variable rngBcnTimeout 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
b7aad13cc8 AP_NavEKF3: Protect against collapse of velocity and position variances 2021-06-23 13:26:02 +09: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
Peter Barker
dd3ab29b2f AP_NavEKF3: remove getFilterGpsStatus
Not needed after we moved logging into NavEKF3
2021-06-07 09:25:53 +10:00
Peter Barker
c00f110f3d AP_NavEKF3: use DAL APIs for takeoff/touchdown expected 2021-06-02 11:13:16 +09:00
Peter Barker
15658362b5 AP_NavEKF3: make time-horizon OF data a local variable
Saves 40 bytes of RAM per core on stm32
2021-06-01 09:56:19 +10:00
Paul Riseborough
b9abef37c3 AP_NavEKF3: Reset to GPS yaw if fusion times out when on ground. 2021-05-11 10:37:08 +10:00
Paul Riseborough
1018801522 AP_NavEKF3: White space and comment fixes 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