Daniel Agar
f0bea542d5
Update world_magnetic_model to latest ( #21533 )
...
* Update world_magnetic_model to latest Mon May 1 11:14:06 UTC 2023
* [AUTO COMMIT] update change indication
Co-authored-by: PX4BuildBot <PX4BuildBot@users.noreply.github.com >
2023-05-01 08:59:55 -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
bresch
17806a9608
ekf2: robustify wind init using airspeed
...
Tests showed that sideslip fusion often starts just before airspeed
fusion, resetting the wind states to 0 instead of using the airspeed
data. A quick look at the wind uncertainty allows to know if the current
wind estimate is meaningful or if we should rather reset it using the
airspeed data.
2023-04-08 14:12:21 +02:00
bresch
62770c43f9
[AUTO COMMIT] update change indication
2023-03-31 10:15:12 +02:00
Daniel Agar
4d9369dc67
Update world_magnetic_model to latest Fri Mar 24 11:14:06 UTC 2023
2023-03-24 09:39:26 -04:00
bresch
3e3307c0d0
ekf2: fix mag declination innovation angle wrapping
2023-03-21 21:07:28 -04:00
Matthias Grob
b0189d95af
Use new Vector4 class
2023-03-21 15:01:26 +01:00
bresch
fd33e60f78
ekf: fix GNSS yaw fusion wrapping
2023-03-13 10:46:34 +01: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
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
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
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
Paul Riseborough
1a9c358858
ekf2: Add unit tests for drag fusion
2023-01-05 12:03:24 -05:00
dagar
618ce9a865
[AUTO COMMIT] update change indication
2022-12-29 16:37:34 -05:00
bresch
3e4e5c991c
ekf2: add mag unit tests
2022-12-29 12:56:36 -05:00
bresch
0388c161e7
ekf2: compare yaw estimator sympy vs symforce
2022-12-23 10:28:19 -05:00
Daniel Agar
54a32eb2f7
ekf2: EV overhaul yaw and position fusion ( #20501 )
...
- move EV yaw and EV position to new state machines
- EV yaw and EV pos now configured via EKF2_EV_CTRL (migrated from EKF2_AID_MASK)
- new EV position offset estimator to enable EV position while GPS position is active (no more EV pos delta fusion)
- yaw_align now strictly means north (no more rotate external vision aid mask)
- automatic switching between EV yaw, and yaw align north based on GPS quality
2022-12-20 10:23:56 -05:00
Daniel Agar
696eeb9a49
ekf2: update EV height state machine (small piece of EV overhaul)
...
- respect new EKF2_EV_CTRL parameter for VPOS usage
- EV hgt rotate EV position before usage (there's often a small offset in frames)
- EV hgt reset use proper EV velocity body frame
- try to keep EV hgt and EV vel state machines consistent
- small incremental piece of https://github.com/PX4/PX4-Autopilot/pull/19128
2022-12-13 13:29:18 -05:00
bresch
41abf695a8
ekf2: use more efficient covariance update computation
...
KSK' is faster to compute than KHP and is mathematically equivalent
2022-12-12 12:31:54 -05:00
Daniel Agar
f3884d5835
Update world_magnetic_model to latest Fri Dec 9 11:14:09 UTC 2022
...
Co-authored-by: PX4 BuildBot <bot@px4.io >
2022-12-09 11:40:30 -05:00
Mathieu Bresciani
a187bb3b80
ekf2: predict covariance before predicting state ( #20715 )
...
* To predict the covariance, the jacobian from the previous to the current state is required.
2022-12-07 09:34:19 -05:00
bresch
16a3fee54f
ekf2_test: check behavior of GNSS yaw fusion at singularities
2022-11-22 09:59:31 -05:00
bresch
4116de31ad
ekf2: compare GNSS yaw fusion sympy vs symforce
2022-11-22 09:59:31 -05:00
bresch
c67f03f383
ekf2: update change indicator
2022-11-14 11:51:32 -05:00
bresch
2a83dbf81d
ekf2_test: compare flow fusion sympy vs symforce
2022-11-14 11:51:32 -05:00
Daniel Agar
bd5bc9d207
ekf2: cleanup terrain estimator init (shouldn't be valid by default)
...
- with Ekf::initialiseFilter() resetting _time_last_hagl_fuse the terrain estimate was technically valid regardless of any range or flow data availability and as a result optical flow fusion is able to start and stay active
- only consider terrain estimate valid based on control status flags and recent fusion
2022-11-14 09:29:46 -05:00
Daniel Agar
5239993c88
ekf2: move EV vel to new state machine, introduce EKF2_EV_CTRL param
2022-11-08 11:46:41 -05:00
Daniel Agar
a242a0210e
Update world_magnetic_model to latest Mon 24 Oct 2022 09:29:11 PM EDT
2022-10-25 09:20:01 -04:00
Daniel Agar
6f861ba889
ekf2: pos/vel reset helpers pass new variance
...
- optical flow velocity reset use already computed _flow_vel_ne
2022-10-24 10:59:58 -04:00
bresch
f0a0a3e545
ekf2_test: compare mag decl fusion sympy vs symforce
2022-10-20 18:16:25 -04:00
bresch
2f3ea88099
ekf2: migrate mag declination to SymForce
2022-10-20 18:16:25 -04:00
Daniel Agar
f9509b442c
ekf2: height aid source consistency ( #20405 )
...
- working towards keeping all height source (baro/ev/gnss/rng) handling as consistent as possible, possibly refactoring these out into separate classes later
2022-10-19 15:35:07 -04:00
bresch
f77d7d9413
[AUTO COMMIT] update change indication
2022-10-19 17:34:31 +02:00
bresch
e33215b61c
ekf2_test: compare yaw fusion sympy vs symforce
2022-10-19 17:34:31 +02:00
bresch
42f683fa64
ekf2_test: test using positive definite covariance matrix
...
A covariance matrix needs to be positive definite
2022-10-19 17:34:31 +02:00
bresch
a41b6f416e
ekf2_test: verify heading innov variance in all orientations
2022-10-19 17:34:31 +02:00
bresch
f11908a266
ekf2: generate yaw fusion jacobians using symforce
2022-10-19 17:34:31 +02:00
Daniel Agar
0d2ff6e224
ekf2: test ekf_logger further reduce std::precision to minimize false positives
2022-10-18 14:19:16 -04:00
bresch
77a36219c6
ekf2_test: compare 3D mag fusion sympy vs symforce
2022-10-17 16:14:56 -04:00
Daniel Agar
116bb6049f
ekf2: fusion helper consistency
...
- yaw fusion use measurementUpdate()
- fuseVelPosHeight() respect _accel_bias_inhibit (like measurementUpdate())
2022-10-17 10:17:31 -04:00
bresch
458e5a6b0e
ekf2: update change indicator
2022-10-14 11:42:23 -04:00
bresch
df084d65e3
ekf2_test: compare covariance prediction sympy vs symforce
2022-10-14 11:42:23 -04:00
Daniel Agar
2de990fd4b
estimator_aid_source split GNSS pos (3d) -> pos (2d) + hgt
...
- per estimator air source status only keep a single set of flags and
timestamp that applies to the entire source
2022-10-13 11:28:50 -04:00
bresch
f7c749c9cd
ekf2_test: compare sideslip fusion of Sympy and SymForce
2022-10-12 09:55:35 -04:00
bresch
d0f92bfbd5
ekf2_test: create helper functions for auto-generated code diff
2022-10-12 09:55:35 -04:00
bresch
299e6058e3
ekf2_test: test airspeed symforce vs sympy generated code
2022-10-03 10:59:42 -04:00
bresch
20b46ad33f
ekf2_test: test validity of local position when not at rest
...
At rest, the zero velocity update keeps the local position valid all the
time. Deactivate it to be able to test the validity checks
2022-09-29 14:16:36 -04:00
Daniel Agar
38d332a553
ekf2: inhibit accel bias dynamically when fake position/height fusion active
...
- inhibit accel bias learning dynamically depending on the angle between an accelerometer and the vertical axis when fake position fusion is active
2022-09-22 20:32:20 -04:00
bresch
34d8bd7988
update EKF2 change indicator
2022-09-10 12:29:29 -04:00