This repository has been archived by the owner on May 1, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 510
High susceptibility to noisy mag data #525
Labels
Comments
For vehicles using EKF2_MAG_TYPE = 1 (only heading fusion) this is now even worse. |
bresch
added a commit
that referenced
this issue
Nov 8, 2019
* ekf_control: Inhibit mag fusion when field magnitude is large Move mag inhibition check in separate function * ekf_control: pull out of functionalities out of controlMagFusion - yaw abd mag bias observability checks - mag 3D conditions - load mag covariances - set and clear mag control modes * ekf_control: refactor mag heading/3D start/stop. Move mag declination, mag 3d and mag heading fusion out of the main function * ekf_control: extract mag yaw reset and mag declination fusion requirements * ekf_control: use WMM in isStronMagneticField for mag fusion inhibition - Correct units of WMM strength table * ekf_control: extract mag_state_only functionality of AUTOFW (VTOL custom) Also split inAirYawReset from onGroundYawReset * ekf_control: extract mag automatic selection - transform if-else into switch-case for parameter fusion type selection * ekf_control: extract run3DMagAndDeclFusion, reorganize functions, fix flag naming in Test script * ekf_control: do not run mag fusion if tilt is not aligned. Reset some variables on ground even if mag fusion is not running yet. It could be that it runs later so we need to make sure that those variables are properly set. * ekf_control: move controlMagFusion and related functions to mag_control.cpp * ekf control: check for validity of mag strength from WMM and falls back to average earth mag field with larger gate if not valid * ekf control: remove evyaw check for mag inhibition * ekf control: change nested ternary operator into if-else if * Ekf: create AlphaFilter template class for simple low-pass filtering 0.1/0.9 type low-pass filters are commonly used to smooth data, this class is meant to abstract the computation of this filter * ekf control: reset heading using mag_lpf data to avoid resetting on an outlier fixes ecl issue #525 * ekf control: replace mag_states_only flag with mag_field_disturbed and add parameter to enable or disable mag field strength check * ekf control: remove AUTOFW mag fusion type as not needed This was implemented for VTOL but did not solve the problem and should not be used anymore * ekf control: use start/stop mag functions everywhere instead of setting the flag * ekf control: Run mag fusion depending on yaw_align instead of tilt_align as there is no reason to fuse mag when the ekf isn't aligned * AlphaFilter: add test for float and Vector3f
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
At bootup we filter the mag measurements and then use the filtered value to initialize the earth magnetic field measurements, and if this is merged, also to initialize the heading.
However, as soon as we get GPS lock we again reinitialize the earth magnetic field states and heading, this time without filtering. The same is true also for the reinitializiation of the heading at every takeoff if EKF2_MAG_TYPE = 0 (automatic switching between heading and 3D axis mag fusion).
The obvious issue here is that two times every flight the raw value of the magnetometer is super important. There is no auto rejection of these samples, so if they are wrong the heading and mag states can be arbitrary far away from reality.
We of course also use the raw sensor measurement from e.g. GPS every time we reset the vel/pos states, but that should mostly happen if something is wrong, not every flight as is the case with the mag.
The text was updated successfully, but these errors were encountered: