pub struct Params {Show 25 fields
pub tau_acc: Float,
pub tau_mag: Float,
pub motion_bias_est_enabled: bool,
pub rest_bias_est_enabled: bool,
pub mag_dist_rejection_enabled: bool,
pub bias_sigma_init: Float,
pub bias_forgetting_time: Float,
pub bias_clip: Float,
pub bias_sigma_motion: Float,
pub bias_vertical_forgetting_factor: Float,
pub bias_sigma_rest: Float,
pub rest_min_t: Float,
pub rest_filter_tau: Float,
pub rest_th_gyr: Float,
pub rest_th_acc: Float,
pub mag_current_tau: Float,
pub mag_ref_tau: Float,
pub mag_norm_th: Float,
pub mag_dip_th: Float,
pub mag_new_time: Float,
pub mag_new_first_time: Float,
pub mag_new_min_gyr: Float,
pub mag_min_undisturbed_time: Float,
pub mag_max_rejection_time: Float,
pub mag_rejection_factor: Float,
}Expand description
Struct containing all tuning parameters used by the VQF class.
The parameters influence the behavior of the algorithm and are independent of the sampling rate of the IMU data. The constructor sets all parameters to the default values.
The parameters motion_bias_est_enabled, rest_bias_est_enabled, and mag_dist_rejection_enabled can be used to enable/disable
the main features of the VQF algorithm. The time constants tau_acc and tau_mag can be tuned to change the trust on
the accelerometer and magnetometer measurements, respectively. The remaining parameters influence bias estimation
and magnetometer rejection.
Fields§
§tau_acc: FloatTime constant $\tau_\mathrm{acc}$ for accelerometer low-pass filtering in seconds.
Small values for $\tau_\mathrm{acc}$ imply trust on the accelerometer measurements and while large values of $\tau_\mathrm{acc}$ imply trust on the gyroscope measurements.
The time constant $\tau_\mathrm{acc}$ corresponds to the cutoff frequency $f_\mathrm{c}$ of the second-order Butterworth low-pass filter as follows: $f_\mathrm{c} = \frac{\sqrt{2}}{2\pi\tau_\mathrm{acc}}$.
Default value: 3.0 s
tau_mag: FloatTime constant $\tau_\mathrm{mag}$ for magnetometer update in seconds.
Small values for $\tau_\mathrm{mag}$ imply trust on the magnetometer measurements and while large values of $\tau_\mathrm{mag}$ imply trust on the gyroscope measurements.
The time constant $\tau_\mathrm{mag}$ corresponds to the cutoff frequency $f_\mathrm{c}$ of the first-order low-pass filter for the heading correction as follows: $f_\mathrm{c} = \frac{1}{2\pi\tau_\mathrm{mag}}$.
Default value: 9.0 s
motion_bias_est_enabled: boolEnables gyroscope bias estimation during motion phases.
If set to true (default), gyroscope bias is estimated based on the inclination correction only, i.e. without using magnetometer measurements.
rest_bias_est_enabled: boolEnables rest detection and gyroscope bias estimation during rest phases.
If set to true (default), phases in which the IMU is at rest are detected. During rest, the gyroscope bias is estimated from the low-pass filtered gyroscope readings.
mag_dist_rejection_enabled: boolEnables magnetic disturbance detection and magnetic disturbance rejection.
If set to true (default), the magnetic field is analyzed. For short disturbed phases, the magnetometer-based
correction is disabled totally. If the magnetic field is always regarded as disturbed or if the duration of
the disturbances exceeds mag_max_rejection_time, magnetometer-based updates are performed, but with an increased
time constant.
bias_sigma_init: FloatStandard deviation of the initial bias estimation uncertainty (in degrees per second).
Default value: 0.5 °/s
bias_forgetting_time: FloatTime in which the bias estimation uncertainty increases from 0 °/s to 0.1 °/s (in seconds).
This value determines the system noise assumed by the Kalman filter.
Default value: 100.0 s
bias_clip: FloatMaximum expected gyroscope bias (in degrees per second).
This value is used to clip the bias estimate and the measurement error in the bias estimation update step. It is further used by the rest detection algorithm in order to not regard measurements with a large but constant angular rate as rest.
Default value: 2.0 °/s
bias_sigma_motion: FloatStandard deviation of the converged bias estimation uncertainty during motion (in degrees per second).
This value determines the trust on motion bias estimation updates. A small value leads to fast convergence.
Default value: 0.1 °/s
bias_vertical_forgetting_factor: FloatForgetting factor for unobservable bias in vertical direction during motion.
As magnetometer measurements are deliberately not used during motion bias estimation, gyroscope bias is not observable in vertical direction. This value is the relative weight of an artificial zero measurement that ensures that the bias estimate in the unobservable direction will eventually decay to zero.
Default value: 0.0001
bias_sigma_rest: FloatStandard deviation of the converged bias estimation uncertainty during rest (in degrees per second).
This value determines the trust on rest bias estimation updates. A small value leads to fast convergence.
Default value: 0.03 °
rest_min_t: FloatTime threshold for rest detection (in seconds).
Rest is detected when the measurements have been close to the low-pass filtered reference for the given time.
Default value: 1.5 s
rest_filter_tau: FloatTime constant for the low-pass filter used in rest detection (in seconds).
This time constant characterizes a second-order Butterworth low-pass filter used to obtain the reference for rest detection.
Default value: 0.5 s
rest_th_gyr: FloatAngular velocity threshold for rest detection (in °/s).
For rest to be detected, the norm of the deviation between measurement and reference must be below the given
threshold. (Furthermore, the absolute value of each component must be below bias_clip).
Default value: 2.0 °/s/
rest_th_acc: FloatAcceleration threshold for rest detection (in m/s²).
For rest to be detected, the norm of the deviation between measurement and reference must be below the given threshold.
Default value: 0.5 m/s²
mag_current_tau: FloatTime constant for current norm/dip value in magnetic disturbance detection (in seconds).
This (very fast) low-pass filter is intended to provide additional robustness when the magnetometer measurements are noisy or not sampled perfectly in sync with the gyroscope measurements. Set to -1 to disable the low-pass filter and directly use the magnetometer measurements.
Default value: 0.05 s
mag_ref_tau: FloatTime constant for the adjustment of the magnetic field reference (in seconds).
This adjustment allows the reference estimate to converge to the observed undisturbed field.
Default value: 20.0 s
mag_norm_th: FloatRelative threshold for the magnetic field strength for magnetic disturbance detection.
This value is relative to the reference norm.
Default value: 0.1 (10%)
mag_dip_th: FloatThreshold for the magnetic field dip angle for magnetic disturbance detection (in degrees).
Default vaule: 10 °
mag_new_time: FloatDuration after which to accept a different homogeneous magnetic field (in seconds).
A different magnetic field reference is accepted as the new field when the measurements are within the thresholds
mag_norm_th and mag_dip_th for the given time. Additionally, only phases with sufficient movement, specified by
mag_new_min_gyr, count.
Default value: 20.0
mag_new_first_time: FloatDuration after which to accept a homogeneous magnetic field for the first time (in seconds).
This value is used instead of mag_new_time when there is no current estimate in order to allow for the initial
magnetic field reference to be obtained faster.
Default value: 5.0
mag_new_min_gyr: FloatMinimum angular velocity needed in order to count time for new magnetic field acceptance (in °/s).
Durations for which the angular velocity norm is below this threshold do not count towards reaching mag_new_time.
Default value: 20.0 °/s
mag_min_undisturbed_time: FloatMinimum duration within thresholds after which to regard the field as undisturbed again (in seconds).
Default value: 0.5 s
mag_max_rejection_time: FloatMaximum duration of full magnetic disturbance rejection (in seconds).
For magnetic disturbances up to this duration, heading correction is fully disabled and heading changes are
tracked by gyroscope only. After this duration (or for many small disturbed phases without sufficient time in the
undisturbed field in between), the heading correction is performed with an increased time constant (see
mag_rejection_factor).
Default value: 60.0 s
mag_rejection_factor: FloatFactor by which to slow the heading correction during long disturbed phases.
After mag_max_rejection_time of full magnetic disturbance rejection, heading correction is performed with an
increased time constant. This parameter (approximately) specifies the factor of the increase.
Furthermore, after spending mag_max_rejection_time/mag_rejection_factor seconds in an undisturbed magnetic field,
the time is reset and full magnetic disturbance rejection will be performed for up to mag_max_rejection_time again.
Default value: 2.0