2
$\begingroup$

I am using the Matlab AHRS filter fusion algorithm with an InvenSense ICM-20948 to determine object orientation. I seem to be obtaining reasonable results however I am getting what appears to be substantial yaw/heading drift (please see attached plot).enter image description here

The Matlab AHRS filter fusion algorithm requires the following hardware/scenario specific parameters to be set (which I think is where my problem is stemming from):

  • Accelerometer noise - variance of accelerometer signal noise $(\frac{m}{s^2})^2$
  • Magnetometer noise - variance of magnetometer signal noise $T^2$

  • Gyroscope noise - variance of gyroscope signal noise $(\frac{rad}{s})^2$

  • Gyroscope drift noise - variance of gyroscope offset drift $(\frac{rad}{s})^2$

  • Linear acceleration noise - variance of linear acceleration noise
    $(\frac{m}{s^2})^2$

  • Linear acceleration decay factor (this appears to be dependent on the application/movement velocity)

  • Magnetic disturbance noise - variance of magnetic disturbance noise $T^2$

  • Magnetic disturbance decay factor - decay factor for magnetic disturbance

  • Expected magnetic field strength (I understand this as being location dependant)

  • Initial process noise - covariance matrix for process noise

(https://au.mathworks.com/help/fusion/ref/ahrsfilter-system-object.html)

I have calibrated my magnetometer to account for hard/soft iron effects. Additionally, I have found and am now using what I believe to be appropriate values for the Accelerometer noise and Gyroscope noise from the ICM-20948 data sheet.

Does anyone know where I may be going wrong or how I may obtain/set/measure any more of the above parameters to perhaps reduce this drift?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.