Testing internal IMU damping solutions of popular flight controllers

For some time now I’ve been interested in how effective the vibration damping of flight controllers has been when applied to larger, heavy lift UAVs such as large multicopters and helicopters. I’ve always been a bit suspicious that the damping is not actually effectively at low frequencies, and may even be detrimental. After all, it’s incredibly hard to effectively isolate a small mass such as a PCB.

My main goal was to find the most suitable controller for a helicopter or multirotor with a rotor speed of 1800rpm (30Hz). In general, we can expect vibration to be worst in the 1st, 2nd and 4th harmonic (30Hz, 60Hz and 120Hz) of that rotor speed.

Leaning heavily on @andyp1per’s work here https://github.com/ArduPilot/ardupilot/pull/11795#issuecomment-527620873 I devised a test to try to quantify the magnitude of the vibrations picked up in several flight controllers at those frequencies plus a few more.

The layout of the testing hardware is:


1- Vibration speaker: Produces a repeatable vibration if volume isn’t changed. https://www.amazon.ca/Resonance-Speaker-Frequency-Vibration-Louderspeaker/dp/B074H4S71B/
2- Flight controller
3- Amplifier https://www.amazon.ca/Nobsound-Bluetooth-Digital-Amplifier-Supply/dp/B07CWMHTCM/
4- Laptop running an online tone generator https://www.szynalski.com/tone-generator/

Things that were held constant throughout the tests:

  • Weight was added to the flight controllers to ensure that they all saw the same magnitude of vibration from a given sound setting.
  • Arducopter 4.0.3 uploaded to all.
  • Amplifier volume set to 100%; computer volume set to 30%
  • Double sided foam fixed the base of the speaker to the bench; the foam attaching the flight controller to the moving part of the speaker was also the same between tests.

Variables that may or may not have affected data:

  • Different IMUs may produce different results. I’ve noted those in the table.
  • The USB cable attaching the flight controller to the computer may have amplified or reduced vibration.


To test the flight controllers, I attached them one by one and sent a frequency to the speaker in a range of 30-180Hz in 30Hz increments. I connected to the flight controllers in Mission Planner and read live readings of VibeZ (since that’s the axis of excitation). These are the results:


Note that there is a marked difference in the value of VibeZ between different frequencies; this is due to a combination of how VibeZ is calculated, effectiveness of the vibration damping at different frequencies and the speaker system itself. Therefore we can’t make comparisons between different frequencies, but we can compare different flight controllers at the same frequencies. Also note that I we are only testing in the Z-axis; we can’t draw any conclusions whatsoever about the effectiveness in the other axes.

Conclusions from the data:

  • The CUAV Pixhack V3 is quite a bit better than the others at frequencies up to 120Hz. This has been known anecdotally by the community but it’s nice to verify.
  • The Cube Black is noticeably worse at the 60Hz and 90Hz frequencies. This also has been known of; the damping is said to have a resonance at ~60Hz but to me it looks like that value may be anywhere from 60-90Hz.
  • The Cube Black seems to have excellent damping characteristics at >120Hz. It surprises me that it’s so much better than the others but that could be errors in testing.
  • The Cube Orange seems to have similar damping to the Cube Black which makes sense.
  • The Pixhack V5+ has slightly more effective damping than the Cubes. They also use foam damping but it seems like they add ballast to the IMU board to increase effectiveness of the damping.
  • Based on the above data, the Pixhack V3 would be the best choice at an 1800rpm rotor speed because it outperforms the others at 30, 60 and 120Hz.

I was particularly interested in the results from the Cube Black because the vibrations seemed so bad. I devised a further test so that I could compare vibrations on the first (damped) IMU against the vibration of the third (undamped) IMU. To do this, I changed the parameter INS_ENABLE_MASK to 4 which meant that IMU1 and IMU2 were disabled. The results of the side-by-side comparison of IMU1 and IMU3 resulted in:


From this data, it’s plain to see that for frequencies less than 120Hz, the foam damping is amplifying the vibration that the IMUs see, thus confirming my suspicions. So while the manufacturer claims that frequencies of 60Hz should be avoided, I would expand that to include all frequencies less than 120Hz. This means that the Cube Black (and therefore most likely the Cube Orange) is not a good choice for large helis and multis.

Some takeaways I have from these experiments:

  • Internal damping is a great concept for and highly effective for small to medium size copters.
  • Internal damping is hard to execute for large copters; the weight of the IMU PCB is just too light to be able to effectively damp out low frequency vibrations. The best bet for large copters is to use external damping options, whereby the weight of the isolated components can be increased by using ballast or adding other components (eg. radios, GPSs etc.)
  • It would be nice to be able to choose which IMU was the default IMU in Arducopter (unfortunately though the Cube Black’s third IMU is unheated which is less than ideal up here in Canada).
  • I would like to get my hands on some other flight controllers such as the Durandal and the CUAV X7 Pro and Nora.

Hope this has been insightful,



Very nice!. The Durandal also has resonance around 100Hz. I think I posted some numbers on a PR somewhere.The problem with 60-120Hz is that this is exactly the range that the first or second harmonic will appear in a 450mm class copter (and larger). So it’s quite a problem. I think internal damping is good for high frequency vibes. For low frequency I still think software can make the different :slight_smile:

I have two concerns. The additional lead weight didn’t affected measurements of the undampened IMU? And are you sure that the frequency response of the speaker+FC combo is the same for all tested frequencies ?

Last year I replaced a black cube or that time Pixhawk 2.1 with the CUAV Pixhack V3x on my TREX600 and never looked back.
I wrote about it under Traditional Helicopter, with photos.

Hi @andyp1per, thanks and I agree, the work you’ve done with the harmonic and static notches has been a leap forward. Do you know if there are plans to incorporate the notch filter into the Z-axis accelerometers for altitude control? In light of the good work you’d done on the control loop side of things, I guess I’m now interested in how the vibrations affect the attitude estimation (one thing I did notice was although the excitation was confined to the Z-axis, the attitude estimation while I was running the test seemed to wander all over the place). I’ll have to do some more logging to shed more light.

@Eosbandi, I tried to reduce the variables between the tests as much as I could. If you look at the simplified spring-mass system here, as long as the mass of the sprung load remains the same the system response should remain roughly the same between tests. So as long as the lead was coupled/bonded well to the Pixhack frame it shouldn’t affect things too much. Likewise with the other flight controllers, if the mass is the same the response of the speaker should be the same.


@FRED_GOEDDERT, I think I may have read your post at the time, glad we’re getting the same results in both theory and practice. From memory one thing I couldn’t get working on the V3 (or maybe wasn’t supported?) was Canbus, have you had any luck there?

1 Like

This is great info. I noticed very similar results between the cube orange and the CUAV v5+. Glad to see this validation

Nice to have some data behind this, many thanks for sharing!

Good day,
you have done a good test… which parameters are necessary to adjust for a good results?
me I’ve always set on my fc the ins_acc and ins_gyro

Hi, just to make it a bit prettier on ardupilot.org i copied one of the images to the top, hope that’s OK.

I’d love to see how the mRo control zero does. In flight it has the lowest vibe numbers i’ve seen.

1 Like

No, I do not have anything to connect via Canbus, yet.

Good call, I’d like to see that too. I suspect that despite it’s tiny size it would be very well suited to large quads. A lot harder to integrate into helis though without a servo rail.

Pretty interesting test. In my tests (in real-world piston helicopters) the Pixhawk 3 Pro is the equal of the V3x . It has the sensors in a damped module like this, connected with a ribbon cable


The PH3 Pro is available either plastic case or aluminum case. The aluminum case one is better than the plastic at damping vibes, but it costs $55US more than the plastic one. The first one I got was aluminum. Then I got a plastic one (the one the photo). I ordered an aluminum case for the plastic one after I found out it did not handle vibes as good, put it in the aluminum case - problem solved. The aluminum case has a much stiffer base.

The PH2.1 does not work on piston helicopters. I had three of them fail. They fell apart internally within 50 hours of flight time. The CUAV V5 also does not handle piston helicopters. It’s ok on an electric machine. But not piston power. The PH2-style controllers exhibit a very weird coupling of engine-frequency vibration that destroys them within 50 hours.

To-date, only the CUAV (Pixhack) V3/V3x and PH3 Pro have proven they can last 500+ flight hours in piston helicopters without failure. And they both have IOMCU. 8 on the I/O, 5 on the FMU (V3), 6 on the FMU (PH3 Pro).

The new Nora that’s supposed to replace the V3x is a non-starter. It has no IOMCU. It’s not a replacement for the V3x (although CUAV is sporting an illusion that it is).


Thanks for the insight Chris, I didn’t realize there was an aluminum case option for the Pro 3.

Yep. There is. You have to talk to Jerome at Drotek and order one. Ready Made RC is the US dealer and you’ll get a plastic one from them. They don’t think that anybody thinks it’s worth the extra $55 bucks for the aluminum case. But it is.

It’s interesting with the PH2-style controllers. In a two-stroke piston machine, with the engine idling at 5,000 rpm, if you touch the top of the “Cube” module it feels like touching a buzzer. You can touch any other part of the frame, the engine itself, servos, whatever, and you don’t get that feeling. The CUAV V5 and PH2.1 are the same. The flat-case controllers with aluminum case do not exhibit that phenomenon.

1 Like

The Control Zero comes with a servo rail adapter breakout. It comes with a lot of cable accessories that make it pretty easy to build your connectors as you need.

Good day, control zero is awesome with customizable cables wiring, unfortunately due the restrictions coz of covid 19 its not possible post logs…

I liked your experience! When I was a student, my teacher said that all the great discoveries in science were made on primitive equipment. You wrote in English with a Russian style of your thoughts, so I understood this on Russian. Thank you for your useful work on the rational use of air FC I’m going to use a flight controller Holybro Pixhawk 4 on a large model with an internal combustion engine. My flight controller will be adjusted with the addition of ballast until the vibration is reached the optimum value

Awesome work! Thanks for sharing.

As I understand it, for a rotor speed of 1800 rpm (30 Hz) we need to look at the values for 30Hz, 60Hz and 120Hz).

Can this same approach be applied to fixed wing/VTOL aircraft primarily operating repititive and predictable autonomous missions? What I anticipate is:

  1. Propeller RPM would be varying. However, for predictable and repititive AUTO missions, we could:
    a) Optimize for the average range of cruise RPM in case of fixed wing or fixed wing flight modes (in case of VTOL)
    b) For the climb and descent during VTOL flight sections, use a similar approach but precedence be given to fixed wing modes since that’s where the aircraft will spend most of its time.

  2. In this case we’d need to look at the values of 90Hz to 180Hz (and maybe some harmonics of the cruise RPMs)?

Would this be a valid way to approach this?

@ChrisOlson RMRC had a couple of aluminum cased Pro 3s in stock so I ordered one, will post results once I can. Very impressed with the form factor/layout, I do wonder how the non-temperature controlled IMUs will go in the cold up in Canada. In saying that I haven’t been particularly impressed with the Cube Black’s heating, it seems that to me that IMU1 is heated way quicker than IMU2 which causes a few inconsistent gyro/accel messages when I’m itching to get flying.

@egunak95 thanks for the kind words, with your approach I think you should be able to find good results.

@Arunabha42 with a fixed wing I doubt that you’ll have a consistent rpm with a fixed wing platform due to wind etc. In all new builds I would recommend firstly reducing mechanical vibration as much as possible before then choosing a good flight controller for the application, isolating the flight controller well if necessary and then targeting the specific vibration frequencies using all the tools available; the harmonic notch filter (https://discuss.ardupilot.org/t/tuning-the-harmonic-notch) to target mechanical frequencies (prop rpm etc), the static notch filter to target control system instability frequencies and the low pass filter to filter all other noise.