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
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
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
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
bresch
9183c479a5
ekf2: correctly compute vel variance from flow variance
...
Co-authored-by: Marco Hauswirth <marco.hauswirth@auterion.com >
2024-08-26 11:28:36 -04:00
Daniel Agar
ebbb880e92
ekf2: always use corrected accel/gyro for filtered metrics
2024-08-23 17:35:59 -04:00
Daniel Agar
56560726d3
ekf2: sensor simulator fix GPS replay scaling
2024-08-23 14:35:05 -04:00
bresch
1a0f97ebbd
ekf2-fake pos: add valid fake position fusion
...
This is similar to fake pos but is only used when the ekf has an
external information telling it that the vehicle is not changing
position. This information can then be used to keep a valid local
position even when the vehicle isn't exactly at rest.
2024-08-23 11:17:21 +02:00
bresch
64b0586dad
ekf2: return validity based on dead-reckoning time only
2024-08-23 11:17:21 +02:00
Daniel Agar
7250ee1b32
ekf2: organize gyro_bias/accel_bias param yaml
2024-08-22 10:56:16 -04:00
Daniel Agar
ebbd2c1825
ekf2: organize aid source parameters
2024-08-22 10:56:16 -04:00
bresch
0931179579
ekf2: extract WMM update logic
2024-08-20 10:32:27 -04:00
bresch
aad607e0dd
ekf2: send airspeed data to ekf backend regardless of sign
...
On ground the airspeed can sometimes be slightly negative but the ekf
should still know that airspeed data is flowing regularly
2024-08-13 17:43:45 +02:00
bresch
478875c006
ekf tools: compare gyro integral with attitude estimate
2024-08-12 15:26:08 +02:00
bresch
d2478d00cf
ekf2: only allow ref sensor to reset height
2024-08-06 10:19:13 -04:00
bresch
7b3d168af1
baro tuning: make hpf argument optional
...
This filter is often not needed. Setting the default value to -1 makes it
optional.
2024-07-29 14:20:41 +02:00
Marco Hauswirth
5808dac4bc
reset position-mode line following after position reset
2024-07-26 18:01:44 +02:00
bresch
0b1eba948a
ekf2-flow: add param to force using internal gyro
...
In some cases the vibration environment of the optical flow sensor is
worse than near the autopilot.
2024-07-25 19:54:19 -04:00