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
