Processing of built-in IMU data

And again to everyone good time of day!
For more than a week, I have been digging into all kinds of forums dedicated to IMU, but I have not found an answer to several critical questions for me.
There is a MPU-9255 that has a hardware DMP (“motion coprocessor,” if you like); judging by what I subtracted, a Kalman filter or complementary filter yields MUCH worse results than a DMP.
So here.
Question # 1: Are these engineers InvenSense reached such heights that they invented a unique algorithm (which was stuffed into a coprocessor), or have their hands simply “reached” to what everyone can do?
Question # 2: Is there anything like DMP for arduino? I tried all sorts of different libraries, such as SensorFusion or MadgwickAHRS, but I could not knock out the necessary results from the microcontroller (everything seems to work correctly, but the time for the angles to reach “steady values” sometimes reaches ten seconds (WHY???); in addition, I am confused by regular hikes (transitions through 90/180/360).
Question # 3: What is better - Teensy 4.0 (due to incredibly high performance) combined with large algorithms and MPU-9255 or nano 33 BLE is able to provide relatively accurate (up to a meter, suppose) inertial navigation in room for, for example, one minute of movement? In other words, how good is IMU on nano 33 BLE? Can anyone suggest a really good algorithm for processing data from sensors? As I realized, “raw” data is worth almost nothing, however, as I said earlier, all the algorithms that I managed to find (and this is the seven tabs of the GitHub site attached to the browser) do not work properly, and I do not understand what the problem is.
So what to do?: D
I will be incredibly grateful for your help!

It is very good, much better than the obsolete MPU-9250. However, to make use of it, you should use a decent AHRS fusion filter like Madgwick or Mahony, and each individual sensor must be carefully calibrated, or the results will generally be useless.

No Arduino IMU is “plug and play”, and with consumer grade IMUs, only 3D orientation is possible (inertial navigation is not).

According to TDK owner of InvenSense. The acquisition price was $13.00 USD per InvenSense share, and the total acquisition price was approximately $1.3 billion USD. It likely the company had some valuable intellectual properties. If you are really interested you could do a patent search.

Interesting. That is, theoretically, I can process the data so that the result will be better than on the most recent chip InvenSense?
I also saw an article (with a code) where people applied not only filters, but also AI (in a smartphone) for processing in real time, and got a pretty good result (the link needs to be searched). On the other hand, there is the X-io technologies, which managed to create an incredible device that perfectly copes with the task of navigation - https://x-io.co.uk/ngimu/.
That is, it turns out that it is not so much in IMU as in processing algorithms, and inertial navigation is still possible within reasonable limits?
If I may, the question is - do you know any other modules that could be used separately from nano 33 BLE, but which would not be inferior in quality? I know a couple of analogues from Russian manufacturers, but for me it is a black box.

Yes, not a little :slight_smile:
However, I believe that most of this amount belongs to the very method of building MEMS sensors, which, as far as I know, InvenSense patented. But of course you gave me food for thought, thank you!

And a little question - could the reason for the “floating” values ​ ​ at the exit of the filter be poor calibration of the IMU?

Improved 9DOF sensors are introduced from time to time, and many are available on breakout boards for hobbyists. They all outperform obsolete sensors like the MPU-9250. The Nano 33 BLE Sense uses the LSM9DS1, which you can buy separately from Sparkfun, for example.

I don’t know what you mean by “floating” values.

The filter should output reasonably stable and correct orientation values. If it does not, there are many possible reasons.

Thank you again for your answers!
And finally - what can you say about this IMU? https://www.ceva-dsp.com/wp-content/uploads/2019/10/BNO080_085-Datasheet.pdf
The manufacturer in its brochures says that this sensor is highly accurate, quite suitable for inertial navigation, and also has a number of “advanced” functions. Among other things, this is the sensor of 2019-2020, in contrast to the fact that it is built into the nano 33 BLE (it is from 2015). I am very interested in what exactly you can say on this issue :slight_smile:

I haven’t used the BNO-080, but its predecessor, the BNO-055, does not work very well. This is mainly due to a poor built in sensor calibration algorithm, over which the user has no control.

Thank you very much for your answers!