Daniel Agar
ca893e55a5
ekf2: allow yaw estimator to run on ground (not at rest) and init yaw align
...
- add a common resetMagStates() that uses the WMM to reinit mag states (I & B) if possible
2022-04-04 10:42:56 -04:00
Daniel Agar
2f0c2fa126
ekf2: replace _inhibit_ev_yaw_use with local flag
2022-04-04 10:42:56 -04:00
Daniel Agar
cdf9e6d35a
ekf2: merge runOnGroundYawReset() and runInAirYawReset()
2022-04-04 10:42:55 -04:00
Daniel Agar
f8a33e551c
ekf2: allow yaw estimator to run when disarmed (if not at rest)
2022-04-04 10:42:55 -04:00
Daniel Agar
741310bc36
ekf2: reset mag_lpf (by zeroing _mag_counter) when resetting mag bias (or changing mags)
...
- so that there's new filtered data avaiable for reset
2022-04-04 10:42:54 -04:00
Daniel Agar
4234e9a390
ekf2: clear test ratios, flags, etc when stopping mag fusion
2022-04-04 10:42:54 -04:00
Daniel Agar
a8824b4e60
ekf2: resetMagHeading() split out simple init case
2022-04-04 10:42:53 -04:00
Daniel Agar
7ef38112d2
ekf2: return saved mag bias variance when not in 3d magnetometer fusion
...
- the estimated mag bias was requiring > 30 seconds of continuous 3d
mag fusion to be reported stable (and saved back to mag cal), this
restores the original intent requiring 30 seconds of accumulated valid
3d mag fusion
2022-03-14 21:03:41 -04:00
Daniel Agar
a430f0ccae
ekf2: add simple zero velocity update when vehicle at rest ( #19149 )
...
- further decreases initial tilt alignment time (now down to 2.5 seconds if still) and improves initial bias estimates
2022-03-12 12:56:31 -05:00
Daniel Agar
b7e0f17c6a
ekf2: minor position/velocity reset cleanup
...
- try to use avoid resetVelocity() call where possible
- reset timeouts centrally
2022-03-08 11:16:35 -05:00
Daniel Agar
c10ea97967
ekf2: fusion helpers return success/fail and set pos/vel update timestamps centrally (if healthy)
2022-03-08 11:16:35 -05:00
Daniel Agar
d6d529539d
ekf2: consolidate and simplify gnd effect logic
2022-02-22 16:59:10 -05:00
Daniel Agar
1d7791dad6
commander: monitor GPS validity and EKF2 dead reckoning
...
- ekf2: expose dead reckoning as control status flags
- commander:
- add GPS validity check
- in AUTO MISSION if dependent on GPS then a loss of GPS will
2022-02-22 09:46:21 -05:00
bresch
edabfd2f0e
ekf_hgt: call specific height reset function instead of generic one
...
- Also use the delayed current data instead of newest that might not be
available (gps buffer is sometimes empty if the dt between samples is
larger than the delayed horizon).
- Separate "baro fault" from "baro intermittent": intermittent is a
temporary failure and should prevent from switching to baro right now,
but "fault" means that it should never be used anymore
- In case of height timeout, check for metrics but not for consistency
as the filter is likely to have diverged already.
2022-02-22 11:49:25 +01:00
bresch
cba73585e1
use recorded last sensor timestamp for intermittent check
2022-02-22 11:49:25 +01:00
Daniel Agar
591b7b6934
ekf2: add new estimator_gps_status.msg
...
- includes the estimator status check fail bits broken out as descriptive booleans
- absorbs ekf_gps_drift.msg
2022-02-21 08:58:59 -05:00
bresch
917910f3e2
ekf: pass a float by copy instead of a constant ref
2022-02-02 17:43:25 -05:00
Daniel Agar
88ffc177f7
ekf2: utils add getEulerYaw() that uses the best rotation sequence
2022-02-02 08:54:03 -05:00
Daniel Agar
999737ddd5
ekf2: refactor mag control
...
- remove class _mag_sample_delayed
- update mag fusion call graph to use mag sample delayed functionally
- Ekf::resetMagHeading()
- use low pass mag directly, but check if valid (magnitude)
- MAG_FUSE_TYPE_INDOOR treat like auto if heading required
2022-01-31 11:47:10 -05:00
Daniel Agar
90358f078f
add odometry reset counter (ekf2, mavlink, etc)
2022-01-31 09:19:36 -05:00
Daniel Agar
ae3070bbf1
ekf2: make filter update period configurable
...
- introduces new parameter EKF2_PREDICT_US to configure the filter
update period in microseconds
- actual filter update period will be an integer multiple of IMU
2022-01-26 10:57:09 -05:00
bresch
e89e3c1b0c
ekf2: extract logic to test yaw emergency estimate quality
2022-01-19 09:05:41 -05:00
bresch
ea80c5027e
ekf2: split yaw estimator state getter into several functions
2022-01-19 09:05:41 -05:00
Daniel Agar
92a5bbe97f
ekf2: improve ring buffer sizing and dynamically allocate
2022-01-19 09:04:53 -05:00
Daniel Agar
35502c249d
ekf2: don't use Vectors for height innovations (baro, rng, etc)
2022-01-03 09:20:20 -05:00
bresch
9147d5ea5c
ekf2: use ground as ekf altitude datum when in range primary hgt mode
2021-12-10 15:18:10 +01:00
bresch
5e790da634
ekf2: reset the timeout timer in the reset function directly
2021-12-10 15:18:10 +01:00
bresch
0d874cf00a
ekf2: move aiding start details in dedicated function
...
When an aiding source needs to be started, simply call the corresponding
starting function and any required reset is handled in there.
2021-12-10 15:18:10 +01:00
Matthias Grob
68e2940f58
math: support max of three values additional to min and use it everywhere
2021-12-07 21:06:51 +01:00
Matthias Grob
10ceea2fe6
geo: refactoring on comments and usage
2021-12-06 14:30:14 +01:00
Thomas Debrunner
8db7a6225b
geo: Moved the map_projection_* functions and state into a self-contained C++ class
2021-12-06 14:30:14 +01:00
bresch
8aae39e82a
ekf2: move GPS control logic to separate source file
2021-11-01 13:59:34 +01:00
bresch
9afc390552
ekf2: move gps yaw reset in starting function
2021-11-01 13:59:34 +01:00
bresch
d0f89f7fff
ekf2: refactor wind reset functions
2021-10-26 10:18:56 +02:00
bresch
6e8f0e92ff
ekf2: refactor airspeed fusion control logic
2021-10-26 10:18:56 +02:00
bresch
8873e92c7c
ekf: force fallback to baro if GPS is stopped while in GPS height mode
...
Otherwise, no height aiding source is used
2021-10-26 10:05:28 +02:00
bresch
01d0b8800e
commander: report GNSS yaw fault to user
2021-08-05 11:10:02 +02:00
bresch
11cd51c132
EKF: allow emergency reset in GNSS yaw and EV yaw aiding modes
2021-08-05 11:10:02 +02:00
Daniel Agar
93aa6e3f78
ekf2: baro bias publish minor cleanup
...
- naming consistency (estimator prefix as "namespace")
- only publish if baro is available and bias is changing as a small logging optimization
- avoid unnecessary copying (get const reference to status directly)
- trivial code style fixes
2021-08-02 13:59:38 -04:00
bresch
54c7e74de3
EKF: add baro bias estimator using GNSS altitude
2021-07-19 16:53:45 -04:00
Daniel Agar
c8e6d93cc0
ekf2: backend apply code style (generated code still exempt)
2021-07-15 21:15:41 -04:00
Daniel Agar
2cf66a5d8f
ekf2: move EKF out of ecl
2021-07-15 10:38:24 -04:00