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
oravla5
b76c1c97b3
ekf2: Optical flow enabled by default
2024-07-25 10:01:35 +02:00
Daniel Agar
fd72578e98
ekf2: avoid constraining parameters every iteration
2024-07-25 09:51:35 +02:00
bresch
79e0e00d8c
ekf2: block process noise increment without constraining the variance
...
The wind variance can be reset to a value larger than the wind init
variance (e.g.: when the reset occurs when flying close to the N or E
axis). Constraining the variance after a covariance initialization would
artificially increase the correlation and could destabilize the filter.
2024-07-24 17:11:53 +02:00
Matthias Grob
f2bca92221
Fix duplicate newlines at the end of files
2024-07-19 14:33:36 +02:00
Roman Bapst
1b9f1b78e5
Added support for resetting wind states to external observation ( #23277 )
...
* added support for resetting wind states to external observation
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* moved wind related functions into separate file
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* added VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* correctly compute variances
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* ekf2: implement wind reset
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* only allow VEHICLE_CMD_EXTERNAL_WIND_ESTIMATE during wind dead-reckoning
and increase horizontal velocity variance to allow velocity states to move
towards solution that is aligned with the newly set wind
Signed-off-by: RomanBapst <bapstroman@gmail.com >
* only reset wind on ground
* still use wind reset using airspeed when it wasn't initialized
* exclude func for rover, change reset interface
* handle wind reset in drag-fusion
* replace state reset with variance reset in sideslip/drag fusion
* remove resetWind function
---------
Signed-off-by: RomanBapst <bapstroman@gmail.com >
Co-authored-by: Marco Hauswirth <marco.hauswirth@auterion.com >
2024-07-19 14:33:08 +02:00