sparkfun/SparkFun_ICM-20948_ArduinoLibrary

Drift in ICM20948 IMU.

abhilashv-ign opened this issue · 4 comments

I'm using ICM20948 IMU. This is the driver used

Expected output
The visualization should remain stationary when the IMU is at rest.
Actual output
The visualization is rotating about z-axis even when the IMU is at rest.

I'm using the ICM20948 IMU for getting the angular rotation of a robot. I'm using complementary filter for calculating the q values and the viasualization is done using rviz2.
The accurracy of the IMU sensor seems to be on point. When i rotate the IMU 90 degrees I'm getting 90degree rotation in visualization as well. The deviation in performance is when I'm keeping the IMU at rest.
The visualization is supposed be stable and not moving. But the output that I'm getting is a slight drift. i.e the visualization rotates about z-axis over time. The rate of rotation is minute but over the course of a minute a significant drift is visible.
I have tried adjusting the sensitivity as well.
The DMP is disabled and the sampling mode is set to continuous mode.

Thank you for the suggestions.

Did you have any luck with this issue?

Maybe I understand something incorrectly, but the gyrosensor will always have a drift see: https://electronics.stackexchange.com/questions/445787/what-actually-causes-gyroscope-drift-in-imu
I am not sure about calibrating the hardware, but for the project of my bachelor thesis, we programmed a kalman Filter (also sperate Particle Filter) in combination with the acceleration sensor to cancel out the drift. I think it is the common approach to handle the gyrosensor drift.

For more Information about the topic and parts of an IMU see:
https://headtracker.gitbook.io/head-tracker/getting-started/imu-calibration-and-drift