Daniel Agar
4cb293020a
ekf2: remove sensor sample uORB::Subscription missed perf counters
...
- these served their purpose, but are no longer useful
- still worth keeping the IMU subscription missed perf count to catch any scheduling issues
2024-01-11 11:52:29 -05:00
Roman Bapst
603c3f6636
added support to reset vehicle position based on external position ( #22444 )
...
via command MAV_CMD_EXTERNAL_POSITION_ESTIMATE
Signed-off-by: RomanBapst <bapstroman@gmail.com >
2024-01-11 13:09:22 +01:00
bresch
a653073d4f
ekf2: perform GNSS checks at delayed-time horizon
...
- never fuse a measurement that is not passing the checks
- cleanup and simplify GNSS vel/pos control logic
2023-12-18 18:11:20 +01:00
bresch
fe7988672f
ekf2: auxiliary position fusion
...
Co-authored-by: Daniel Agar <daniel@agar.ca >
2023-12-01 11:50:22 +01:00
bresch
1c3a1183c8
ekf2-flow: refactor control logic
...
Use flow rates instead of integrals in backend. This allows us to delay
the data to the mitpoint integration time and simplifies the code in
general.
Gyro compensation can still be done in EKF2 if needed, but the
flow module normally already appends the correct gyro data to the flow
message.
2023-11-21 21:56:34 -05:00
Daniel Agar
62027b0965
ekf2: remove EKF2_HGT_MODE VerifyParams() transition helpers
...
- in theory these are helpful to ensure EKF2_HGT_MODE configuration is
consistent with the relevant aid source (GPS, baro, etc), but it can
be a little awkward with users having to fight manual parameter
changes in the right order
2023-11-16 15:02:43 -05:00
Daniel Agar
3b2d766573
ekf2: purge remaining EKF2_AID_MASK references
2023-11-16 09:36:58 +01:00
Mathieu Bresciani
0d6c2c8ce9
EKF2: Error-State Kalman Filter ( #22262 )
...
* ekf derivation: change to error state formulation
* ekf2: update auto-generated code for error-state
* ekf2: adjust ekf2 code for error state formulation
* ekf2_tests: adjust unit tests for error-state EKF
* update change indicator for error-state EKF
* ekf2_derivation: allow disabling mag and wind states
---------
Co-authored-by: bresch <[brescianimathieu@gmail.com ](mailto:brescianimathieu@gmail.com )>
2023-10-31 10:02:18 -04:00
bresch
eed2870fd8
ekf2: fix optical_flow_vel publication
...
We should otherwise call this publication before the aid_src publisher
that sets the timestamp. Having it separate avoids this ordering
constraint.
2023-10-25 09:59:56 -05:00
Daniel Agar
408c30de13
ekf2: delete redundant aid src status getters
2023-10-18 15:21:51 -04:00
Daniel Agar
3d238b0275
ekf2: add kconfig to disable gravity fusion ( #22231 )
2023-10-18 10:50:51 -04:00
Daniel Agar
6eae9fb371
ekf2: fix barometer kconfig
2023-10-18 09:43:27 -04:00
Daniel Agar
d2b3e7fe16
ekf2: new kconfig to enable/disable GNSS (enabled by default)
2023-10-11 14:02:34 -04:00
Daniel Agar
5f87f3a046
ekf2: drag fusion add aid source status topic
2023-10-09 09:26:28 -04:00
Daniel Agar
028733e1c7
ekf2: add kconfig to disable wind estimation (off by default)
2023-10-09 09:22:29 -04:00
Mathieu Bresciani
d61743412c
ekf2: fix flow gyro bias corrections ( #22145 )
...
* ekf2-flow: fix flow gyro bias compensation
* ekf2-flow: apply flow gyro bias when used
* ekf2: log optical flow gyro bias
* ekf2: optical flow control always use provided flow gyro (with bias applied)
* ekf2-flow: log flow gyro and gyro reference
* ekf2-flow: support senrors with XY flow gyro
---------
Co-authored-by: Daniel Agar <daniel@agar.ca >
Co-authored-by: bresch <[brescianimathieu@gmail.com ](mailto:brescianimathieu@gmail.com )>
2023-10-05 10:51:30 -04:00
bresch
99197919d7
ekf2: access state covariance using helper functions
2023-09-26 06:41:04 +02:00
bresch
dac337efc4
ekf2: auto-generate state vector size constant
2023-09-19 09:37:50 -04:00
Daniel Agar
1e9f0ad2c6
ekf2: add kconfig for barometer support (enabled by default)
2023-09-15 10:02:09 -04:00
Daniel Agar
10b54d08fc
ekf2: add dedicated EKF2_CONFIG_TERRAIN in kconfig
...
- new estimator_aid_src_terrain_range_finder for HAGL RNG
2023-09-15 10:02:09 -04:00
Daniel Agar
845b01a00d
ekf2: add kconfig for magnetometer support (enabled by default)
2023-09-15 10:02:09 -04:00
bresch
0aa4afdbce
ekf2: add unaided_yaw for more resilient yaw control
...
This estimate doesn't converge to the true yaw but can be used as a
more consistent but drifting heading source.
It can be used by a setpoint generator to adjust its heading setpoint
while the true yaw estimate is converging in order to keep a constant
course over ground.
2023-08-30 09:56:19 +02:00
Mathieu Bresciani
74a54b3b12
EKF2: improve resilience against incorrect mag data
...
- when GNSS is used require low mag heading innovations during
horizontal acceleration (yaw observable) to validate the mag
- only fuse mag heading just enough to constrain the yaw estimate
variance to a sane value. Leave enough uncertainty to allow for a
correction when the yaw is observable through GNSS fusion
2023-08-17 09:55:15 -04:00
Daniel Agar
d75bb62a65
ekf2: separate mag and mag heading control logic ( #21212 )
...
- split mag_3d into new standalone mag fusion and mag fusion allowed to update all states (full mag_3d)
- new dedicated control logic for mag/mag_3d fusion and standalone mag heading fusion
- if WMM available use for mag_I and mag_B init
- mag states reset if external yaw reset (yaw estimator, GPS yaw, etc)
- mag reset if declination changed (eliminate _mag_yaw_reset_req)
- mag fusion (but not mag_hdg or mag_3d) can be active during gps_yaw or ev_yaw (if yaw aligned north)
Co-authored-by: bresch <brescianimathieu@gmail.com >
2023-08-04 10:39:16 -04:00
bresch
72be724b86
ekf2: log mag inclination and strength for tuning
2023-07-24 10:16:37 -04:00
bresch
357bf024f6
ekf2-mag: add inclination check
2023-07-24 10:16:37 -04:00
bresch
e4a16bfc80
ekf2-mag: rework mag strength check
2023-07-24 10:16:37 -04:00
Sergei Grichine
f000238987
SensorGps.msg: switch to double precision for lat/lon/alt
...
To match https://github.com/PX4/PX4-GPSDrivers/pull/132 - adding high precision RTK lat/lon/alt components
2023-07-13 07:50:09 +02:00
bresch
9e2e888f5e
ekf2-bias_cal: reduce required stability period
...
For the mag, 30s of bias learning is a lot, given that it is only active
during turns and that it usually converges in < 5 seconds
2023-07-11 11:33:53 -04:00
bresch
2f52926972
mag_cal: fix mag bias estimate to mag cal
...
- since last_us is set to 0 every time the bias is not observable, the
total time was also reset -> needed 30 consecutive seconds in mag 3D
to be declared "stable"
- after landing, the mag_aligned_in_flight flag is reset. Using this for
bias validity makes it invalid before we have a chance to save it to
the calibration.
2023-07-11 11:33:53 -04:00
bresch
f5edff2647
ekf2 - preflt checks: scale flow innovation checks
...
Opt flow raw innovations can be really large on ground due to the small
distance to the ground (vel = flow / dist). To make the pre-flight check
more meaningful, scale it with the current distance.
2023-07-11 08:18:32 -07:00
bresch
672b29d555
ekf2: report dist bottom also when using flow for terrain
...
Terrain height can be estimated using a range finder and/or optical flow
2023-07-11 08:18:32 -07:00
alexklimaj
03528a6200
Add EKF2_OF_QMIN_GND to handle 0 optical flow quality when on ground
2023-07-11 08:18:06 -07:00
Silvan Fuhrer
81764c43a1
EKF2: use timestamp from argument of PublishEvPosBias() ( #21822 )
...
* EKF2: use timestamp from argument of PublishEvPosBias()
Signed-off-by: Silvan Fuhrer <silvan@auterion.com >
* Update src/modules/ekf2/EKF2.cpp
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
---------
Signed-off-by: Silvan Fuhrer <silvan@auterion.com >
Co-authored-by: Mathieu Bresciani <brescianimathieu@gmail.com >
2023-07-11 11:07:39 +02:00
Antonio Sanjurjo C
c1cb48c2ea
EKF2 cleanup. Use MAX_NUM_x constants instead of hard-coded numbers
...
Signed-off-by: Antonio Sanjurjo C <74329840+antonio-sc66@users.noreply.github.com >
2023-07-06 09:36:27 +02:00
Daniel Agar
8222cbca2c
ekf2: last range sensor simple timestamp protection
...
- sanity check againist potential timestamp issues with incoming
distance_sensor data
2023-05-09 12:02:42 -04:00
bresch
521abecbbf
ekf2: remove all remaining uses of EKF2_AID_MASK
2023-04-28 22:31:17 -04:00
bresch
2a2e43b620
ekf2: move flow fusion activation from AID_MASK to OF_CTRL
2023-04-28 22:31:17 -04:00
bresch
39c2f95669
ekf2: move drag fusion activation from AID_MASK to DRAG_CTRL
2023-04-28 22:31:17 -04:00
Silvan Fuhrer
d532578ecc
EKF2: only check for EKF2_BETA_FUSION when corresponding kconfig option is set
...
Signed-off-by: Silvan Fuhrer <silvan@auterion.com >
2023-03-22 10:05:32 +01:00
Silvan Fuhrer
98d07ad1f3
disable side slip fusion for tailsitters
...
The attitude frame is wrong for tailsitters doing side slip fusion for wind estimation.
It doesn't take into account that the frames is 90deg tilted in FW flight.
Signed-off-by: Silvan Fuhrer <silvan@auterion.com >
2023-03-22 10:05:32 +01:00
Daniel Agar
32a5bd32ad
ekf2: add kconfig option to enable/disable range finder fusion (and terrain estimator)
2023-03-21 11:25:34 -04:00
Daniel Agar
0784901a66
ekf2: add kconfig option to enable/disable optical flow fusion
2023-03-21 11:25:34 -04:00
Daniel Agar
4363b09421
ekf2: add kconfig option to enable/disable external vision fusion
2023-03-20 10:12:17 -04:00
Daniel Agar
d47f96f1a5
ekf2: add kconfig option to enable/disable AUX velocity fusion
2023-03-20 10:12:17 -04:00
Daniel Agar
4270a303ab
ekf2: add kconfig option to enable/disable airspeed and sideslip fusion
2023-03-20 10:12:17 -04:00
Daniel Agar
98ff1afc19
ekf2: add kconfig option to enable/disable GNSS yaw
2023-03-20 10:12:17 -04:00
Daniel Agar
8b2205810b
ekf2: add kconfig option to enable/disable baro compensation
2023-03-20 10:12:17 -04:00
Daniel Agar
fe0e3acf09
ekf2: add kconfig option to enable/disable drag fusion
2023-03-20 10:12:17 -04:00
Daniel Agar
f0a95f9572
ekf2: add new kconfig option for multi-EKF
...
- disabled if flash constrained or memory constrained
2023-03-15 09:32:47 -04:00