bresch
12fefbcfbd
ekf2: use global definition of quaternion error
2024-04-05 22:26:03 -04:00
bresch
7c6ecd95a8
mc_wind_estimator_tuning: optionally use GNSS velocity
...
Sometimes GNSS is logged but not used
2024-03-14 21:06:24 +01:00
bresch
b2f1122372
ekf2: remove old yaw 321 and 312 derivations
2024-03-14 11:33:45 -04:00
bresch
e3f67d5c1a
ekf2: new yaw derivation
...
Instead of euler angles, compute measurement jacobian using a small
global perturbation around the vertical axis
2024-03-14 11:33:45 -04:00
bresch
37a40d3fc2
baro static pressure compensation tuning: remove dependency to baro bias
...
`estimator_baro_bias` requires to have GNSS and baro hgt active and GNSS as the reference. This is quite restrictive. Instead, we can simply use a high-passed version of the baro error.
2024-02-23 10:07:13 +01:00
muramura
f636414ca7
tuning_tools: Change 1G to a more accurate value
2024-02-09 10:26:57 -05:00
bresch
17d55dddd6
ekf2-drag: do not generate Kalman gain to save flash
2024-02-06 12:16:33 +01:00
bresch
1efb08375a
ekf2: let drag fusion affect the complete state vector
...
This improves tilt estimation and can extend the inertial dead-reckoning
validity period
2024-02-06 12:16:33 +01:00
bresch
7c7a3c117a
ekf2-gravity: nomalize gravity fusion and proper sequential fusion
2024-01-18 20:39:16 -05:00
Matthias Grob
4c0b6dbe86
Remove trailing whitespaces and trailing duplicate newlines
2023-12-01 13:11:00 -05:00
Mathieu Bresciani and bresch
efa12ad224
EKF2 simplify covariance propagation ( #22344 )
...
* ekf2-derivation: optimize before generating cpp code
* update EKF2 change indicator
Slight changes due to simplifications done in the covariance prediction
---------
Co-authored-by: bresch <[brescianimathieu@gmail.com ](mailto:brescianimathieu@gmail.com )>
2023-11-14 11:22:16 -05:00
bresch
00568985c0
yaw_est: use error-state covariance prediction
...
Convergence improvements in high yaw rate conditions
2023-11-13 11:37:27 -05:00
Mathieu Bresciani and bresch
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
1c9373e83b
update baro static pressure compensation tuning script
...
Field name changed in vehicle_gps_position
2023-10-16 09:45:28 -04:00
Daniel Agar
9676af2fe6
ekf2: predict covariance avoid explicit temporary nextP
2023-10-13 20:57:33 -04:00
bresch
ec15fe3d90
ekf2-derivation: fix terrain and yaw estimator derivations
...
fix compatibility issues with symforce-0.9.0
2023-10-11 09:49:17 -04:00
bresch
cf1c6a8b84
ekf2-derivation: remove old wind covariance derivation
2023-10-11 09:49:17 -04:00
Daniel Agar
5352a64042
ekf2: symforce derivation allow optionally disabling mag and wind states
2023-10-10 17:31:11 -04:00
bresch
fc32820e19
ekf2: initialize wind covariance using symforce
2023-10-09 21:03:38 -04:00
05fd8c5976
EKF2: centralized auto-generated state ( #22183 )
...
* ekf2_derivation: use single source of state definition
The state is defined as an ordered dictionary of group elements and
everything else is generated using that state definition
* ekf2: generated state sample add const reference getter
---------
Co-authored-by: bresch <[brescianimathieu@gmail.com ](mailto:brescianimathieu@gmail.com )>
Co-authored-by: Daniel Agar <daniel@agar.ca >
2023-10-06 10:28:21 -04:00
bresch
dac337efc4
ekf2: auto-generate state vector size constant
2023-09-19 09:37:50 -04:00
bresch
779ea3f4d1
ekf2: access state covariance using enum
2023-09-19 09:37:50 -04:00
Daniel Agar
016db84d69
ekf2: covariance update use IMU sample dt ( #22032 )
...
- usually the delta angle and delta velocity dt is the same, but they can be slightly different
2023-09-13 09:58:56 -04:00
bresch
0282f85cd4
ekf2: compute quat tilt variance using SymForce
2023-08-29 10:57:49 -04:00
bresch
b6fb95247b
ekf2_derivation: fix typo
2023-08-08 12:09:56 -04:00
bresch
de702a2e63
ekf2: fix function to increase yaw variance
2023-08-08 12:09:56 -04:00
bresch
cd77d52dc1
ekf2: calcRotVecVariances using SymForce
2023-08-07 14:28:06 -04:00
Daniel Agar and bresch
84b6b472b4
ekf2: change delta angle and delta velocity bias states to accel and gyro bias ( #21901 )
...
* ekf2-test: remove outdated codegen comparison
The definition of states changed so the comparison with the old
derivation cannot work anymore.
---------
Co-authored-by: bresch <brescianimathieu@gmail.com >
2023-07-28 09:31:44 -04:00
bresch
eb70c9f6f3
ekf2: update auto-generated code to SymForce 0.9.0
2023-06-26 14:10:54 -04:00
bresch
fdf7867a3e
ekf2: update derivation to SymForce 0.9.0
2023-06-26 14:10:54 -04:00
Daniel Agar
d9ae2ed7ac
ekf2: regenerate yaw estimator symforce
...
- remove underscore uppercase variable naming that can be problematic
2023-06-19 21:00:25 -04:00
bresch
9d7abf2552
ekf2: symforce - use builtin Rot3 and Quaternion operations
2023-06-05 11:58:42 -04:00
bresch
3e3307c0d0
ekf2: fix mag declination innovation angle wrapping
2023-03-21 21:07:28 -04:00
bresch
fd33e60f78
ekf: fix GNSS yaw fusion wrapping
2023-03-13 10:46:34 +01: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
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
bresch
b4b48cae75
ekf2: terrain flow - migrate to Symforce
2023-01-21 15:31:19 -05:00
bresch
49f8bcfc69
ekf2: purge old ekf2 derivation
2023-01-06 18:35:19 -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
bresch
86a3d2459a
ekf2: remove old yaw estimator generated code
2022-12-23 10:28:19 -05:00
bresch
7c33019510
EKF2: move yaw estimator to symforce
2022-12-23 10:28:19 -05:00
bresch
4cb327fba3
ekf2: remove old GPS yaw autogenerated code
2022-11-22 09:59:31 -05:00
bresch
eff2c6adcf
ekf2: migrate GNSS yaw fusion to SymForce
2022-11-22 09:59:31 -05:00
bresch
f319cc528b
ekf2: remove old flow fusion generated code
2022-11-14 11:51:32 -05:00
bresch
b54a4417fa
ekf2: migrate flow fusion to SymForce
2022-11-14 11:51:32 -05:00
bresch
96e7ea7a08
ekf2: remove old mag declination auto-code
2022-10-20 18:16:25 -04:00
bresch
2f3ea88099
ekf2: migrate mag declination to SymForce
2022-10-20 18:16:25 -04:00
bresch
cf9859965a
ekf2: remove old yaw fusion auto-code
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