Motion Tracking Device ICM20948

The ICM20948 is a motion tracking device with a 3-axis

  • accelerometer
  • gyroscope
  • compass

The functionality is similar to the MPU9250 device however with a different programming interface.

To gain some insight how the ICM20948 could be used with the Raspberry Pi I did some basic tests described in this document:

https://github.com/michaelbiester/icm-20948/blob/master/icm_20948_getting_started.pdf

The document describes

  • how to connect the ICM20948 via I2C to the Raspberry Pi
  • how to do basic test / reading data from the chip with I2C tools of operating system on the Raspberry Pi
  • how to access the device with Python
  • calibration of the accelerometer without requiring a test-bench (in-situ calibration)

A mini-project is available on GitHub. A Python program retrieves data of accelerometer, gyroscope and compass. A Jupyter notebook does some postprocessing on these data to show some properties of the accelerometer and the gyroscope. The Jupyter notebook and (for better readability) a PDF document are available:

https://github.com/michaelbiester/icm-20948/blob/master/jupyter_nb/ICM20948/trace_plot.ipynb

https://github.com/michaelbiester/icm-20948/blob/master/jupyter_nb/ICM20948/trace_plot.pdf


Calibration of the accelerometer

Very recently I have read a lot about calibrating the accelerometer without a test-bench. Some of the details and the mathematics behind this calibration approach have been summarised in https://github.com/michaelbiester/icm-20948/blob/master/icm_20948_getting_started.pdf. A Jupyter notebook and a PDF document provide some code examples how to perform this calibration.

https://github.com/michaelbiester/icm-20948/blob/master/jupyter_nb/ICM20948/calibration_acc.ipynb

https://github.com/michaelbiester/icm-20948/blob/master/jupyter_nb/ICM20948/calibration_acc.pdf


Calibration of the gyroscope

I am still looking for methods to calibrate the gyroscope without needing a dedicated test-bench. But first I must get familiar with some kinematic concepts of motion in 3D involving rotations around an arbitrary axis (not just elementary rotations around x, y and z-direction).

I found a book which may be helpful to learn about the fundamentals of kinematics:

Computer-Aided Kinematics and Dynamics of Mechanical-Systems; Volume II Modern Methods-Fourth Edition (2024) ; author: Edward J. Haug.

I bought a copy from Amazon. An older version can be found here:

https://www.researchgate.net/profile/Edward-Haug-2/publication