Daniel Agar
e194a52907
ekf2: derivation.py remove sideslip small angle approximation
2024-11-25 08:53:57 +01:00
bresch
14fe6c2167
ekf2: resetHeightTo -> resetAltitudeTo
...
The vertical position state is now an altitude, not just a local height
2024-11-22 15:13:47 +01:00
bresch
93c690f133
ekf2: do not inline getPosition
2024-11-22 15:13:47 +01:00
bresch
a224d38e52
lla: move implementation to cpp file
...
This reduces flash usage
2024-11-22 15:13:47 +01:00
bresch
aeb182a8ed
ekf2: rename resetAltitudeTo to initialiseAltitudeTo
...
This is to better show that the altitude is also used to set the origin.
2024-11-22 15:13:47 +01:00
bresch
30d98885b7
update change indicator
2024-11-22 15:13:47 +01:00
bresch
814a2706f5
ekf2: compensate for coriolis and transport rate accelerations
2024-11-22 15:13:47 +01:00
bresch
842212df6c
ekf2: update earth rate also without GNSS
2024-11-22 15:13:47 +01:00
bresch
6becccb217
update change indicator
2024-11-22 15:13:47 +01:00
bresch
a492457322
ekf2-derivation: build state struct based on type
2024-11-22 15:13:47 +01:00
bresch
13c5bd4412
ekf-flow: do not reset position when resetting to flow
...
Flow only provides velocity information
2024-11-22 15:13:47 +01:00
bresch
b19a6ee3b5
ekf2: store position state as lat/lon/alt
...
The position error state is still defined in a body-fixed NED frame but the
position state itself is latitude-longitude-altitude.
2024-11-22 15:13:47 +01:00
Andrew Brahim and Jacob Dahl
834af98992
uavcan: support GNSS heading from relposheading with offset configurable in estimator
...
* uavcan: add GNSS heading from relposheading
* ekf2: new EKF2_GPS_YAW_OFF parameter to configure any offset in GNSS heading
Signed-off-by: dirksavage88 <dirksavage88@gmail.com >
Co-authored-by: Jacob Dahl <dahl.jakejacob@gmail.com >
2024-11-08 21:52:55 -05:00
bresch
651675fed0
ekf-yaw-est: do not store full S_inverse
2024-11-07 11:37:56 -05:00
bresch
7b04ea0dca
ekf-yaw-est: wrap_pi when updating yaw
2024-11-07 11:37:56 -05:00
bresch
3ad4b57315
ekf-yaw-est: do not reset when all weights collapse
...
The likelyhood can be really small when the innovation is suddenly
large. This can occur during a GNSS velocity glitch and shouldn't reset
the filter as it would bring it back to a really vulnerable state.
2024-11-07 11:37:56 -05:00
bresch
aa5fdd3bb3
ekf2-rng-kin: allow invalidating at any vertical speed
...
The issue is that when the HAGL is low, the drone will usually
decelerate and then the check would run anymore. If the low HAGL
estimate is due to bad sensor readings (e.g.: reflections), it will be
stuck in that state.
2024-11-05 16:51:49 +01:00
bresch
d579fb540c
ekf2-terrain: do not consider negative hagl as valid
2024-10-30 12:14:43 -04:00
Marco Hauswirth and Mathieu Bresciani
0c451552c7
EKF2: add validity flags to global pos message ( #23787 )
...
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2024-10-23 10:19:04 +02:00
Daniel Agar
f971c0e617
ekf2: reduce bad acc probation time 10s->3s
2024-10-07 10:37:33 +02:00
Daniel Agar
9ddac762e3
ekf2: stricter GNSS vel rejected innovation override
...
- in the special case of bad vertical acceleration detected
(bad_acc_vertical) only allow overriding rejected GNSS 3D velocity
if horizontal innovations are accepted
2024-10-07 10:36:09 +02:00
Daniel Agar
9238656a33
ekf2: configurable velocity state constraint (EKF2_VEL_LIM)
...
- replace hardcoded 1000 m/s velocity state constraint with new EKF2_VEL_LIM parameter (default 100 m/s)
- new velocity limit also used for GPS checks and external vision velocity
2024-10-07 10:35:48 +02:00
Marco Hauswirth
7d0e93b779
ekf2: always publish global position when origin has been set
2024-10-04 11:41:20 -04:00
Daniel Agar
34ee097f02
ekf2: tighten terrain validity requirements
...
- require valid fusion from a range finder or optical flow before
considering terrain valid again
2024-10-04 10:31:20 +02:00
bresch
dbf51da99e
ekf2: rework amsl to ellipsoid altitude conversion
2024-10-01 10:40:18 -04:00
bresch
5bfa6b3359
ekf2: remove redundant ned_origin_initialised flag
2024-10-01 10:37:20 -04:00
Marco Hauswirth and Mathieu Bresciani
fe40ccd193
EKF2: publish wind after external wind init ( #23747 )
...
* publish wind after external wind init
* move ext-wind-init to estimator-interface
* Update src/modules/ekf2/EKF/estimator_interface.h
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
* Update src/modules/ekf2/EKF/estimator_interface.h
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
---------
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2024-10-01 14:33:30 +02:00
bresch
35efe44a6b
ekf2: fusion always succeeds, do not return boolean
2024-09-24 10:48:14 -04:00
bresch
23f343aa3a
ekf2-rng: consider height covariance for terrain reset to range
...
Range does not provide a direct terrain observation but a measurement
relative to the height state. Correlation between height and terrain
must be set properly.
2024-09-24 10:18:25 -04:00
Marco Hauswirth
454ded1b25
EKF2: ev-vel refactoring ( #23577 )
2024-09-24 14:09:11 +02:00
Marco Hauswirth
8afd267509
move more ekf function implementations to cpp
2024-09-23 12:18:41 -04:00
Marco Hauswirth
e3f138862a
move implementation of updateAidSrcStatus to cpp file, saves flash
2024-09-23 12:18:41 -04:00
bresch
15ddd94349
ekf2: move implementation to ekf_helper to reduce flash usage
...
saves about 4.8kB of flash on FMUv5
2024-09-23 10:27:42 -04:00
BazookaJoe1900
4d83badba1
fix files tags on the header comments ( #23564 )
2024-09-19 09:25:18 +03:00
Marco Hauswirth
22c2878cf8
send acknowledgement after receiving vehicle wind cmd
2024-09-12 09:34:08 +02:00
Marco Hauswirth
44967bdaab
ekf2: uncorrelate position covariance after velocity reset ( #23644 )
2024-09-06 08:51:15 -04:00
Marco Hauswirth
7dcea6b2e4
EKF2: range measurement rejection in rain/fog ( #23579 )
2024-08-30 17:25:56 +02:00
Daniel Agar and Mathieu Bresciani
5b0014cb06
ekf2: remove legacy accel z bias checks ( #23341 )
...
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2024-08-29 11:51:27 -04:00
bresch
bab256bfe6
ekf2: handle external altitude resets
2024-08-28 11:02:26 +02:00
bresch
cd2170deea
ekf2-origin: backcompute based on lpos validity
2024-08-28 11:02:26 +02:00
bresch
130fefb1e7
ekf2: initialize origin from corrent position when possible
2024-08-28 11:02:26 +02:00
bresch
af752536b9
ekf2: extract setting origin from current lat/lon/alt
...
This is not only needed when GNSS is available but also for other global
sources of position (e.g.: aux global pos and manual pos updates)
2024-08-28 11:02:26 +02:00
bresch
9169a7c5fc
ekf2: split horizontal and vertical origin reset
...
Allow partial resets (only lat/lon or only altitude)
2024-08-28 11:02:26 +02:00
Daniel Agar
f3d58cdf10
ekf2: resetFlowFusion() pass flowSample by const ref
2024-08-27 10:38:17 -04:00
Daniel Agar
6c24413888
ekf2: filter flow vel (used for flow velocity reset)
...
- individual flow samples can be quite erratic
2024-08-27 10:38:17 -04:00
dagar
5ff4eea870
[AUTO COMMIT] update change indication
2024-08-27 16:16:55 +02:00
Daniel Agar
ac48b8b51d
ekf2: mag declination fusion always if there is no aiding
2024-08-27 16:16:55 +02:00
Daniel Agar
2a9e205442
ekf2: fuseDeclination respect mag update_all_states
...
- when both mag_hdg/mag_3d are inactive we should be able to continue
updating mag without any possible impact on other states
2024-08-27 16:16:55 +02:00
Daniel Agar
9d57a3c02f
ekf2: split resetMagCov() and skip mag reset if negligible change
2024-08-27 16:16:55 +02:00
Daniel Agar
bbcf741e9e
ekf2: make mag control responsible for WMM
...
- this further untangles mag control (which requires the WMM) from GPS
2024-08-27 16:16:55 +02:00