20948 DMP 9-Axis Quaternion output

I’m using https://github.com/sparkfun/SparkFun_IC … inoLibrary with DMP enabled. Has anyone had any success getting valid 9 axis quaternion, or geomag rotation vector data? I’m able to get results but I don’t see any changes in the data in the presence of a changing magnetic field. Device motion is pretty accurate, but the north orientation is wrong. In addition the raw magnetic raw data looks fine. The 9 axis data reacts the same as the 6 axis data but is not the identical! I’m thinking that the i2c pass thru has to be enabled somewhere to feed the magnetic data into the DMP processing. Any help is appreciated. I used “Example9_DMP_MultipleSensors” as my starting point for exploring this device.

I’ve already migrated to a Bosch IMU, but had some time on my hands to get back to the 20948 as I own a few, and they are rocketing in price.

I managed to get this working, unfortunately not using the sparkfun library. I remounted and wired the IMU on a surface that is away from metal, to an esp32. I used the library “https://github.com/Twometer/ICM-20948-Arduino”, and the latest download for “ICM-20948 eMD 1.0 for Nucleo Board”. I modified twometer’s ICM20948.h file to process “INV_SENSOR_TYPE_ORIENTATION” data. It outputs roll, pitch, and yaw. If I place a small high powered magnet in the vicinity of the IMU it changes yaw, and restores itself when the magnet is removed. I wasn’t happy with the performance of the yaw reading. Pitch and Roll work well. I need to figure how to calibrate the magnetometer. Hope this helps or drives new interest in the 90248…

Quick and dirty magnetometer calibration: https://www.appelsiini.net/2018/calibrate-magnetometer/

Much better, more time consuming and more accurate (tutorial and links): https://forum.pololu.com/t/correcting-t … eter/14315