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
Daniel Agar
19a2b4ec31
ekf2: GNSS yaw only reset test ratio for new samples
...
- otherwise external test ratio monitoring could trigger a false positive
2023-03-14 21:49:24 -04:00
bresch
fd33e60f78
ekf: fix GNSS yaw fusion wrapping
2023-03-13 10:46:34 +01:00
Daniel Agar
b3cc945a5a
ekf2: merge runOnGroundYawReset() + runInAirYawReset() into unified magReset()
2023-03-09 09:08:27 -05:00
Daniel Agar
c1f244a6fd
ekf2: decrease EKF2_MAG_YAWLIM default 0.25 -> 0.2 rad/s ( #21264 )
2023-03-09 09:07:54 -05:00
Daniel Agar
4dda5a97d8
ekf2: mag_3d check mag bias variance before allowed to update all states (orientation)
2023-03-08 15:12:48 -05:00
Daniel Agar
d45aeae1de
ekf2: add and share centralized method to clear inhibited state Kalman gains
2023-03-07 13:27:57 -05:00
Beniamino Pozzan
b79578fa55
efk2: Force external vision vertical position if EKF2_HGT_REF=VISION
...
Signed-off-by: Beniamino Pozzan <beniamino.pozzan@phd.unipd.it >
2023-03-06 09:19:49 -05:00
Daniel Agar
3fac85369e
ekf2: gps control use adjusted velocity and position for reset
2023-03-06 09:03:39 -05:00
Daniel Agar
b5a6d6db0d
ekf2: fix controlEvYawFusion() yaw reset
2023-02-24 16:59:59 -05:00
Daniel Agar
98263de17b
ekf2: move aux vel helpers to auxvel_fusion.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
a199df78cc
ekf2: move mag control helpers to mag_control.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
c20e4e4421
ekf2: move stopFlowFusion() to optical_flow_control.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
3a317ec18c
ekf2: move gps helpers to gps_control.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
9ec3f30ae1
ekf2: move gps buffer pop to controlGpsFusion()
...
- controlGpsFusion() now owns yaw estimator update
2023-02-22 09:08:33 -05:00
Daniel Agar
a867bb7d88
ekf2: let controlAirDataFusion() update yaw estimator TAS
2023-02-22 09:08:33 -05:00
Daniel Agar
60856ebe62
ekf2: move range buffer pop to controlRangeHeightFusion()
2023-02-22 09:08:33 -05:00
Daniel Agar
08f111f694
ekf2: consolidate airspeed fusion logic and helpers
...
- pass new airspeed sample around when available
- can't completely eliminate _airspeed_sample_delayed until resetWind()
called from sideslip fusion is updated
2023-02-22 09:08:33 -05:00
Daniel Agar
241cee2bb7
ekf2: move airspeed buffer pop to controlAirDataFusion
2023-02-22 09:08:33 -05:00
Daniel Agar
0711a34d0e
ekf2: move flow buffer pop to controlOpticalFlowFusion
2023-02-22 09:08:33 -05:00
Daniel Agar
ed8cef6cf0
ekf2: move controlAuxVelFusion control.cpp -> auxvel_fusion.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
b4e845d7c0
ekf2: move controlDragFusion control.cpp -> drag_fusion.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
c08a387c5a
ekf2: move controlBetaFusion control.cpp -> sideslip_fusion.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
d61b8c21b2
ekf2: move controlAirDataFusion() control.cpp -> airspeed_fusion.cpp
2023-02-22 09:08:33 -05:00
Daniel Agar
d840f7f39f
ekf2: move controlGpsYawFusion() control.cpp -> gps_control.cpp
2023-02-22 09:08:33 -05:00
bresch
8ebf47edb1
ekf2: stop mag fusion when there is no data anymore
2023-02-17 08:51:55 -05:00
Daniel Agar
2ea25804a1
ekf2: allow filter init with only IMU ( #21041 )
...
- if mag enabled heading init is now pushed to controlMagFusion()
2023-02-13 22:07:15 -05:00
Hamish Willee
edb6c635d5
EKF2_MAG_TYPE - fix typos ( #20808 )
2023-02-10 14:39:57 +01:00
Daniel Agar
7b3befded5
ekf2: disable new gravity fusion by default
2023-02-07 13:57:10 -05:00
Daniel Sahu
fa6fda6cce
ekf2: new gravity observation ( #21038 )
...
Signed-off-by: Daniel M. Sahu <danielmohansahu@gmail.com >
2023-02-07 13:28:58 -05:00
Daniel Agar
04d3e549f5
ekf2: resetQuatStateYaw() set _time_last_heading_fuse
2023-02-03 10:03:09 -05:00
Daniel Agar
66ad7fd06c
ekf2: include 0 timestamp checks in helpers (isTimedOut(), isRecent(), etc)
...
- EKF isTimedOut(), isRecent(), and isNewestSampleRecent() need to handle the case where the timestamp has never been set
- reset() more thoroughly reset fields (mainly impacts unit tests)
2023-02-03 10:00:51 -05:00
Daniel Agar
264a99fb77
ekf2: new EKF2_IMU_CTRL parameter and gyro bias inhibit mechanism
...
- EKF2_AID_MASK accel bias inhibit moves to EKF2_IMU_CTRL
2023-02-03 09:52:24 -05:00
Daniel Agar
f668ea5aa6
ekf2: RingBuffer add reset method
2023-02-03 08:49:44 -05:00
Daniel Agar
e3d73cd837
ekf2: mag control reset mag_lpf on first sample
2023-02-02 16:12:09 -05:00
Daniel Agar
efe1d43550
ekf2: symforce codegen remove reserved identifier naming
...
- from the C standard, "All identifiers that begin with an underscore and either an uppercase letter or another underscore are always reserved for any use"
2023-01-30 09:24:32 -05:00
Hamish Willee
f25abbc80a
Fix magnetometer typo
2023-01-30 10:24:16 +01:00
Daniel Agar
8da993c30e
Update world_magnetic_model to latest Sat Jan 28 11:14:05 UTC 2023
...
Co-authored-by: PX4 BuildBot <bot@px4.io >
2023-01-28 11:41:03 -05:00
bresch
6e30f8f5cb
ekf2: use dedicated aid_src message for flow for terrain aiding
2023-01-21 15:31:19 -05:00
bresch
b4b48cae75
ekf2: terrain flow - migrate to Symforce
2023-01-21 15:31:19 -05:00
Daniel Agar
95300d5637
ekf2: refactor output predictor to class
...
- refactor all EKF backend output predictor pieces into new OutputPredictor class
- output states are now calculated immediately with new high rate IMU rather than after EKF update
- IMU delayed sample is passed as around as control data to avoid storing an extra copy and make the requirement clear
2023-01-18 10:59:34 -05:00
Daniel Agar
71d916dbcd
ekf2: PreFlightChecker fix vel_ne_innov_lpf index
2023-01-17 13:03:38 -05:00
Alex Klimaj
00bfd5436a
ekf2: increase optical flow preflight check innovation limit ( #20940 )
2023-01-15 17:52:12 -05:00
Daniel Agar
674a59e48f
ekf2: new gyro bias limit parameter EKF2_GYR_B_LIM
...
- default is now a more conservative 0.15 rad/s (~8.6 deg/s) instead of the previous hardcoded 20 deg/s
2023-01-14 09:15:46 -05:00
Daniel Agar
0f9bc351f1
ekf2: fix global_pos alt_reset_counter publish ( #20906 )
...
- fixes #20900
2023-01-11 14:15:07 -05:00
bresch
49f8bcfc69
ekf2: purge old ekf2 derivation
2023-01-06 18:35:19 -05:00
bresch
26122886ae
ekf2: drag fusion - improve parameter description
...
The user should refer to the online documentation for tuning guidelines
and not the parameter description.
2023-01-05 12:03:24 -05:00
bresch
06ef39d05e
ekf2: MC drag fusion - interpolate between X an Y "b" coefficients
...
Use the current sideslip angle to generate a drag coefficient that is a
mixture of X and Y coefficients, creating an elliptic distribution.
2023-01-05 12:03:24 -05:00
bresch
420f5ef2b7
ekf2: migrate drag fusion derivation to SymForce
2023-01-05 12:03:24 -05:00
bresch
04f76c932e
ekf2: decompose drag vector into x-y components
...
The drag force is a vector.
drag_x = drag.norm() * vx / v.norm()
2023-01-05 12:03:24 -05:00