I'm currently working on a project that involves obtaining pitch, roll, and yaw angles using the accelerometer, gyroscope, and magnetometer data from the ICM-20948 sensor. After some research, I came across references to the built-in Digital Motion Processor (DMP) in the ICM-20948 that can handle sensor fusion internally.

I'm seeking guidance and more information from experienced individuals who have worked with the ICM-20948's sensor fusion and DMP capabilities. Specifically, I would like to know how to utilize the DMP to obtain the fused pitch, roll, and yaw angles without having to implement the sensor fusion algorithm myself.

Here are some specific questions I have:

  1. How can I configure the ICM-20948 to enable the sensor fusion mode and activate the DMP?

  2. Which registers should be set to enable the fusion mode and select the fusion algorithm parameters? What are the necessary steps to retrieve the fused pitch, roll, and yaw angles from the ICM-20948 once the DMP is activated?

  3. Are there any calibration procedures or additional settings that need to be considered for optimal sensor fusion performance? I have struggled to find detailed documentation specifically focused on utilizing the sensor fusion and DMP capabilities of the ICM-20948. Any guidance, reference materials, or code examples would be greatly appreciated.

  • \$\begingroup\$ Main question from me: Wouldn't these be questions for an FAE or for the company, directly? Or is that information already present in the datasheet (didn't read it, yet) and you want us to read it for you? Secondary from me: Also, I'd tend to not trust data fusion that wasn't based upon a application-customized Kalman or Kalman-Bucy filter. What exactly are they doing for data fusion in that device? Does the datasheet disclose the general approach it takes? \$\endgroup\$ Jun 23, 2023 at 18:03
  • \$\begingroup\$ @periblepsis While consulting an FAE or the manufacturer directly for detailed technical information would be ideal, I was hoping to gather insights from individuals with hands-on experience with the ICM-20948's sensor fusion and DMP capabilities. From what I have read in the datasheet, I think it is very unclear how to use the DMP for sensor fusion. I need the pitch roll and yaw for a device that will be sitting on a golf driver club, so there will be some high accelerations which complicates things. \$\endgroup\$
    – Gripen
    Jun 23, 2023 at 18:12
  • \$\begingroup\$ Okay. Understood. Just me, but I would not post a question on this without having first done the obvious -- contact FAE or company -- and secured as much extra information as possible. Some of that could then be provided here as part of the question. I do get your point that you are hoping that someone has already done all that and has also practical experience to draw from and further inform the FAE/company sources. But I still wouldn't post a question without doing basic due diligence, first. I consider it 'good practice,' even if in the end it is duplicative. You may get lucky. \$\endgroup\$ Jun 23, 2023 at 18:24

1 Answer 1


I might be wrong, but the DMP is not used for fusion, only for "motion processing". This can be advanced filtering, gesture recognition, fall detection etc.

The datasheet says the same: "run-time and background calibration of the accelerometer, gyroscope, and compass, maintaining optimal performance of the sensor data"

Their "SmartMotion" library that provides sensor fusion can run on external ARM MCU. If you take a look at DK-42688-V evaluation board, it uses Microchip ATSAMG55J19 controller to do exactly that.

If you want fusion to run on the sensor itself, you need different chip, like BNO055 or BNO085 (which is the same chip but running fusion software by Hillcrest Labs/CEVA). Their performance is subpar, though. If you want something better you are moving into $$$ zone, with chips like VectorNav's VN-100.

  • \$\begingroup\$ Thanks for your reply! I am kind of new to this, what is the difference between sensor fusion and motion processing? And for pitch, roll, yaw calculations, which one of them do I need? \$\endgroup\$
    – Gripen
    Jun 23, 2023 at 18:39
  • \$\begingroup\$ Motion processing means analyzing the motion. It is more relative thing. For example, you pick up a tablet and it's screen lights up. The Sensor Fusion is more absolute thing. It uses outputs from several sensors to calculate the required data as fast and as precise as possible. This includes spatial data like pitch roll and yaw. \$\endgroup\$
    – Maple
    Jun 23, 2023 at 19:02
  • \$\begingroup\$ Okay thanks for clarifying! So in my case, I would be more interested to just get the raw acc gyr and mag data and then do a Sensor Fusion algorithm on my MCU? \$\endgroup\$
    – Gripen
    Jun 23, 2023 at 19:05
  • \$\begingroup\$ Only if you can find good fusion code online or are capable of writing your own. It is not a trivial task, and most of what I saw on the web is good enough to balance something on your desk, but falls apart as soon as you add linear motion to it. Also, your MCU must be fast enough to run your application in addition to fusion. \$\endgroup\$
    – Maple
    Jun 23, 2023 at 20:37
  • \$\begingroup\$ I'll be using ESP32-S3 chip and the only thing it will do is to take acc/gyr/mag data and do calculations, so I think it will be capable of managing the calculations for the fusion. \$\endgroup\$
    – Gripen
    Jun 24, 2023 at 8:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.