Commit Graph

201 Commits

Author SHA1 Message Date
Thomas Watson
f9fa2565c4 AP_NavEKF3: document provenance of tilt error variance equations
This is also from the older version of the generator.

Note that as documented, some of the equations have been removed and
rearranged slightly as it is assumed their terms are zero. Additionally,
the result is taken as the sum of the diagonal entries of the matrix.
2024-10-01 09:28:54 +10:00
Thomas Watson
ad5da01077 AP_NavEKF3: document provenance of covariance matrix equations
Validated that the generated code matches exactly the code in AP_NavEKF3
(except for the early exits).

Delete `covariance_generated.cpp` as we know exactly how to generate it
now (and it was out of date anyway).
2024-10-01 09:28:54 +10:00
Peter Barker
53c50b6bc7 AP_NavEKF3: re-order initialiser lines so -Werror=reorder will work 2024-09-24 22:50:28 +10:00
Peter Barker
4782ace3b9 AP_NavEKF3: rename lastPosPassTime_ms to lastGpsPosPassTime_ms 2024-09-03 10:34:02 +10:00
Peter Barker
a51614f360 AP_NavEKF3: use reference for dal in frontend
in place of method calls
2024-09-03 10:16:59 +10:00
Peter Barker
02c6784c11 AP_NavEKF3: add and use pr/EK3_FEATURE_OPTFLOW_FUSION 2024-09-02 11:53:12 +10:00
Clyde McQueen
630d3fa8a7 AP_NavEKF3: log mag fusion selection to XKFS 2024-07-11 16:16:27 +10:00
Peter Barker
c8a20726ff AP_NavEKF3: do not store prediction-enabled as state
this is only used in one place, and that place is called from the same routine setting the persistent state.  The only other place which calls readIMUData shouldn't be running the prediction step, but mmay, depending on the previous setting of the prediction step.

We are not initialising this state on filter reset, so it's possible that the state will be set when we do an InitialiseFilterBootstrap, which is probably not desired
2024-07-09 10:45:03 +10:00
Peter Barker
ce48932f4d AP_NavEKF3: remove storedRange member variable if rangefinder measurements disabled 2024-07-04 19:21:44 +10:00
Peter Barker
13e7d04497 AP_NavEKF3: make AP_RANGEFINDER_ENABLED remove more code 2024-07-02 09:17:26 +10:00
Paul Riseborough
61874da020 AP_NavEKF3: Rework method of synthesising airspeed for dead reckoning
The previous method resulted in data incest and fusion of predicted airspeed on every EKF internal time step.
This was not apparent during flight where the vehicle was turning, but during long straight legs did not constrain along track drift.
2024-06-09 14:25:02 +10:00
Paul Riseborough
ffde7f815c AP_NavEKF3: Allow wind to relearn rapidly when GPS is re-enabled 2024-06-09 14:25:02 +10:00
Paul Riseborough
87bf8d9997 AP_NavEKF3: Treat wind as truth when deadreckoning with no airspeed sensor 2024-06-09 14:25:02 +10:00
Paul Riseborough
324d5da811 AP_NavEKF3: Use last observed wind states to enable dead reckoning
These changes enable the EKF to use the last observable wind velocity vector estimate to synthesise an airspeed measurement if operating without an airspeed sensor and when all other measurement types that can constrain velocoty drift are lost. This enables the EKF to use dead reckoning to continue after loss of GPS when there is no air speed sensor fitted and without the need to set a default airspeed value.
The logic used to fuse a default airspeed value has also been cleaned up and the call to FuseAirSpeed() from inside SelectBetaDragFusion() has been removed.

AP_NavEKF3: Fix error in default airspeed observation variance

AP_NavEKF3: Enable shadow fusion of airspeed when sensor is disabled
2024-06-09 14:25:02 +10:00
Paul Riseborough
e53416e77b AP_NavEKF3: Apply GPS quality checks following loss of 3D fix if velocity error is bounded 2024-06-09 14:25:02 +10:00
Andrew Tridgell
94cbd7cbfb AP_NavEKF3: use NEW_NOTHROW for new(std::nothrow) 2024-06-04 09:20:21 +10:00
Andrew Tridgell
dce2492321 AP_NavEKF3: use filtered gyro in INS position correction
this reduces the impact of IMU noise on the output velocity from the
EKF
2024-04-17 14:53:59 +10:00
Peter Barker
ce04d69d53 AP_NavEKF3: correct compilation in SITL when logging is disabled
this code is gated on HAL_BOARD_SITL already, and usually we have logging in SITL.  But not always
2024-03-12 09:25:17 +11:00
Peter Barker
2df3cb98c6 AP_NavEKF3: move initialisation of rngBcn into BeaconFusion method 2024-02-27 12:04:14 +11:00
Paul Riseborough
c91909032f AP_NavEKF3: Increase delta velocity bias state process noise
Required due to state variance collapse on ground with some systems using RTK GPS.
2023-05-24 10:31:26 +10:00
Paul Riseborough
1053daaf90 AP_NavEKF3: Strengthen recovery from bad delta velocity bias learning 2023-05-24 10:31:26 +10:00
Paul Riseborough
ef76890f9b AP_NavEKF3: Retune and fix delta velocity bias state variance protection 2023-05-24 10:31:26 +10:00
Peter Barker
ce8afaf57b AP_NavEKF3: use quat.to_euler(Vector3f&) 2023-04-19 14:24:45 +10:00
Peter Barker
5d68f44694 AP_NavEKF3: move beacon variables into structure
AP_NavEKF3: change beacon variable names
2023-04-18 09:28:02 +10:00
Paul Riseborough
5ab17496f6 AP_NavEKF3: Improve protection against GPS glitches during yaw alignment 2023-04-17 08:48:03 +10:00
Paul Riseborough
a25aa8d2ac AP_NavEKF3: Lock in wind state estimates when using srag to dead reckon 2023-04-04 09:22:23 +10: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
5cb6906968 AP_NavEKF3: add and use AP_BEACON_ENABLED 2022-11-16 08:16:31 +11:00
Paul Riseborough
481bec5ff5 AP_NavEKF3: Allow wind states to recover faster when airspeed sensor failed 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
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
Andrew Tridgell
a4da65ea05 AP_NavEKF3: fixed constrain indexing bug
fixes #20180

thanks to @liyue75 for spotting this!
2022-03-01 17:06:44 +09:00
Hwurzburg
970e5f829b AP_NavEKF3: remove user unintelligible GCS message 2022-01-12 08:11:18 +11: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
Paul Riseborough
5178f4a7d0 AP_NavEKF3: Add missing covariance row reset 2021-12-20 09:28:37 +11:00
Josh Henderson
67eb6d17eb AP_NavEKF3: initialize stateStruct.quat to unit length 2021-09-28 19:09:16 +10: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
Peter Barker
b66fd214f0 AP_NavEKF3: move from HAL_NO_GCS to HAL_GCS_ENABLED 2021-09-22 21:37:00 +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
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
7497590363 AP_NavEKF3: Increase lower state variance limit when vibration affected
This makes state corrections from GPS and baro observations more aggressive
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
62d70a628e AP_NavEKF3: Use large accel process noise when IMU data is bad 2021-07-22 18:20:45 +10:00
Paul Riseborough
72dc998509 AP_NavEKF3: Allow smaller dvel bias state variances for improved tuning 2021-07-22 18:20:45 +10:00
Paul Riseborough
ce4d13091a AP_NavEKF3: Fix bug preventing learning of XY IMU dvel bias in flight 2021-07-22 18:20:45 +10:00
Paul Riseborough
6242ce19fa AP_NavEKF3: Change powf(x,2) to sq(x) 2021-07-22 18:20:45 +10:00
Paul Riseborough
bb9eed28a9 AP_NavEKF3: Update covariance prediction equations 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