10
$\begingroup$

I have seen people say that the MPU6000 is the superior gyro chip, even though the ICM chip has a faster refresh rate and is technically superior in any other use.

Why is it better to have a lower refresh rate on a drone’s gyro?

$\endgroup$
5
  • $\begingroup$ I think you mean gyro, not accelerometer? $\endgroup$
    – QuadMcFly
    Apr 20, 2020 at 13:57
  • $\begingroup$ @QuadMcFly yep - I was reading that post about 3 axis vs 6axis gyros and I guess I had accelerometer stuck in my head - thanks for pointing it out! $\endgroup$ Apr 20, 2020 at 15:00
  • 1
    $\begingroup$ Technically the chip is an IMU (inertial motion unit) that contains both an accelerometer and a gyroscope, but for what we're doing we care more about the gyro. The accelerometer is typical read/updated at a lower rate than the gyro. $\endgroup$
    – QuadMcFly
    Apr 20, 2020 at 16:58
  • $\begingroup$ Technically, technically it's an Inertial Measurement Unit. ;) They're also gyrometers, not gyroscopes, and don't get me started on "Degree of Freedom" vs "Axis" marketing. Putting my pet peeve pedantry aside, @QuadMcFly your answer below is excellent. $\endgroup$ Jul 31, 2020 at 20:25
  • $\begingroup$ I knew that :P I'll blame it as a typo. I think I was mixing MPU (Motion Processing Unit) and IMU (Inertial Measurement Unit)! And yeah the whole degree thing is dumb marketing and meaningless from any real standpoint for sure. $\endgroup$
    – QuadMcFly
    Sep 24, 2020 at 17:42

2 Answers 2

7
$\begingroup$

It's not superior, it's just good enough, cheap enough and may be more noise resistant than ICM20602.

There's a bunch of flight controllers with dual IMUs onboard. For example, Lumenier Lux F7 has MPU6000 and ICM20602, you can choose which one to use. SP Racing F7 and H7 series use two ICM20602s fused together.

Also, there's BrainFPV Radix which uses BMI160 from Bosch Sensortec. It should, in theory, provide a more clean and noise resistant signal without the need for complicated software filtering.

Refresh rate is another thing in itself. Things start to get worse with higher refresh rates: you get all sorts of noises internal and external to the IMU, which can negatively affect motor speed regulation, which in turn might make motors run hot or even fry. Also, higher refresh rates require more processing power to filter the noise. Running IMU at 8+ kHz with RPM filtering gobbles up CPU pretty quick to the point that the quad even refuses to arm.

$\endgroup$
2
  • $\begingroup$ That’s interesting - thanks! $\endgroup$ Apr 21, 2020 at 17:52
  • $\begingroup$ I generally agree with this answer, except for the part about the refresh rate. That's incorrect, pretty much nothing gets worse with higher refresh rate and even Shanon information theory tells us that a fast noisy signal is frequently better than a slow perfect one (how well could you ride a bike if you had exactly one perfect position update per second?). The issue isn't the update rate, it's poor algorithms or tuning parameters. $\endgroup$ Aug 29 at 12:40
7
$\begingroup$

There has been a good deal of discussion on this topic, and it has been no small source of conflict between several of the main firmware players in the high-performance DIY drone flight controller world. The short version is that based on evidence gathered from flight recorder logs, the ICM series gyros are more sensitive to electrical and mechanical noise than the MPU6000 gyro.

One of the major issues is that the MPU6000 is considered NR/ND (Not recommended for new designs) since 2017-ish, and there is some question as to how much longer it will be available. This makes manufacturers hesitant about using it in new designs.

The core of the argument around the ICM gyro has to do with the DLPF bypass mode that enables 32 Khz read rates (see section 9.17 in the datasheet for the ICM 20602). There is one school of thought that this mode simply gives lower-level access to the same data that is used by the internal DLPF to create the 8 Khz data output, and external software filters can do a better job than the internal DLPF used to create the hardware-given 8 Khz data. There seems to be a good deal of support however that this is not the case. It appears that moving the gyro into 32 Khz read mode actually reduces the fundamental accuracy of the readings being taken. Mark Spatz has done a good deal of work logging and analyzing data recordings from multiple gyros with the conclusion that 32 Khz in experimental mode is producing data that is both different and dramatically less accurate than when not in experimental mode, though why disabling the internal DLPF would have this impact still remains a question.

Even taking this into account, the ICM series gyros can perform essentially as well as the MPU600 when care is taken. Many of the issues seen with the ICM gyros result from poorly executed filtering on the 3.3v power supply. See this research article for an exploration of why this is a problem. Essentially if the power supply lines can be kept clean, and the internal DLPF is kept on, the gyro seems to perform decently.

All that being said, having been involved in support in the drone industry for a while though, my personal experience has been that flight controllers that use the ICM gyro have a higher failure rate and a higher chance of having issues than flight controllers with the MPU6000. I have a shelf full of flight controllers I pulled due to ICMs that became too sensitive to tune, and much larger number of folks I've helped debug with the same issue, but I've not had that issue with MPU6000. While this is purely anecdotal, it aligns with the experience of enough pilots that it has become a common thought in the DIY drone hobby, hence the reason why this question even came up.

$\endgroup$
5
  • $\begingroup$ Apparently I missed this answer when it came in - so a belated thank you for answering! $\endgroup$ Aug 1, 2020 at 23:38
  • $\begingroup$ Is this knowledge still the state of the art, now, more than 3 years, later @QuadMcFly? Or have there been new insights into the ICM gyro's internal workings? $\endgroup$
    – Sixtyfive
    Sep 15 at 11:57
  • $\begingroup$ There are some newer gyros that have come out that are being experimented with, but the MPU6000 still seems to be the most noise resistant. The problem we're running into now is that a lot of the MPU6000s that are still available are seconds or old stock, so the QC on the MPU6000 boards has dropped a bit. Unfortunately that results in a bit higher failure rate than we used to see with them. The two current alternatives are the BMI270 and the ICM42688p which both have their compromises. $\endgroup$
    – QuadMcFly
    Sep 16 at 21:38
  • $\begingroup$ The BMI270 only has a 3.2 khz refresh rate, and that can complicate tuning some of the filter settings compared to an 8khz loop, but it can be dialed in pretty well. It's more finicky than the MPU6000, but once you've got it, it's not bad. It just different enough that a lot of folks have trouble tuning it, since it takes a slightly different approach. People tend to not realize that over filtering can cause as many problems as under filtering, and so folks tend to go the wrong direction on the filters and never get any better results. $\endgroup$
    – QuadMcFly
    Sep 16 at 21:43
  • $\begingroup$ The ICM42688p seems to be extremely reliant on clean 3.3v power, and a lot of the less expensive boards that used them seemed to have trouble as a result of poorly implemented power regulation. There was also some issues with the Betaflight code implementation of the IMU, some registers set that resulted in less than ideal performance, but that should be all fixed now as of Betaflight 4.4. With a well manufactured board and the latest code the ICM42688p gives good results, but again it's somewhat picky so if anything goes wrong on the power regulation side you could end up with noise issues. $\endgroup$
    – QuadMcFly
    Sep 16 at 21:47

Your Answer

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

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