Introducing the Holybro Pixhawk 6X Pro

Holybro Pixhawk 6X Pro

Welcome to the future!

Over the last few weeks I have been working with the team at Holybro on a new flight controller - the Holybro Pixhawk 6X Pro. What is it all about you might wonder? The answer is noise.

If you have watched any of my videos then you will know that I place quite a lot of emphasis on reducing noise in multirotor builds. The reason for this is pretty simple - noise interferes with the operation of a crucial part of any flight controller - the IMU(s). The IMUs generally measure acceleration and rotation rates - so let’s look in a little more detail at what is done with these measurements and how they affect flight performance.

Summary

For those of you who just want the tl;dr in this blog I look in detail at the role of IMUs in measuring rotation and acceleration for drone control. I then go on to describe the various ways in which noise can prevent these sensitive components from working properly and what can be done about it in both hardware and software. I then describe the physics of the Pixhwak 6X Pro and the different ways that its response to noise can be measured. Finally I look at some experimental results for the Pixhawk 6X Pro design using both a vibration table and real flight tests concluding that this is a great step forward in flight controller design.

Alright, on with the show …

How inertial sensors are used to control Vehicles

Acceleration

Measuring acceleration allows a vehicle to perform inertial navigation. In the simplest case when the vehicle is stationary there will be no acceleration in the horizontal axes (X&Y) and the force of gravity in the up-down (Z) axis.
When the vehicle starts to move it has to accelerate to do so. By integrating the measured acceleration the vehicle velocity can be estimated. Repeating this process and integrating velocity its position can be determined. The same algorithm can be applied in the Z axis - measured acceleration can be used to determine whether the vehicle is going up or down and the altitude. The EKF does all of this using some clever maths and data from other sensors that might be relevant to determining overall velocity, position etc.

Excess vibration kills all of this.

Vibration is essentially a rapid back and forth movement, so the vehicle is constantly accelerating and decelerating. This acceleration is not part of the overall motion of the vehicle that we are interested in for flight control, so the EKF has to somehow filter it out. The more vibration the harder this gets. It gets particularly bad when “clipping” occurs. Clipping is when the actual acceleration is greater than the limits of the sensor. The sensor limits are measured in g’s - so a typical sensor might have 16g limits. On very noisy builds with excess vibration these limits are exceeded and clipping occurs - the sensor reads 16g but the actual value is higher than this. This is very bad for the EKF because it can no longer integrate the acceleration values to arrive at sensible answers for velocity and position.

This is generally what causes flyaways.

You can see estimates for vibration and clipping by looking at the VIBE log messages in a flight log. So noise is universally bad for the IMUs measuring acceleration and the EKF as a whole.

Rotation

Measuring rotation rates means that it is possible to tell how fast a vehicle is spinning. In a similar way to acceleration the rotation rate can be integrated to determine angular position and differentiated to determine angular acceleration. These three components in each of three axes comprise the attitude of a vehicle - and control of the attitude is what allows vehicles to turn, flip and respond to disturbances such as wind and propwash.

Excess rotational noise - usually caused by vibration - kills all of this.

In a similar way to acceleration - noise means that the attitude cannot be determined accurately and results in poor performance or even crashes. The attitude controllers will react to noise as if it is pilot input and cause the vehicle to bounce and weave. In pathological conditions PIDs that are too high can cause the noise to be amplified so that all control of the vehicle is lost. This is why tuning vehicles with a lot of noise requires lower PIDs to avoid this possibility - but lower PIDs also compromises control.

Handling noise and vibration

Vibration and noise are bad - so how should they be handled?

The primary - really the only - way to handle these two is via filtering. Filtering can be done in software via digital IIR filters and in hardware via vibration isolation mounting.

So why don’t we just mount our flight controllers on really soft foam and set our software filters really aggressively? Well there is a problem - the more we filter the less movement is observed by the flight control software - and a lot of this movement needs to be measured in order to effect good flight control. This is particularly true for the attitude controllers - these have to react very quickly to movements and instabilities that could cause the vehicle to crash - it’s their speed and responsiveness that makes flying multirotors possible in the first place. Very aggressive filtering means that this precision is simply not possible - the controllers cannot react quickly enough to prevent catastrophe.

So really aggressive filtering is bad for the gyros but lots of noise is bad for control. The accelerometers are generally ok with more aggressive filtering, but there is another problem. All soft mountings have resonance - this is a frequency at which vibration is amplified rather than damped. The stiffer the mounting the higher the resonant frequency, the softer the mounting the lower the resonant frequency. In the worst case the resonance is at a frequency that needs to be measured to do effective flight control.

So what to do? Enter the Pixhawk 6X Pro!

Pixhawk 6X Pro

The premise of the Pixhawk 6X Pro is that Pro users want effective vibration isolation without compromising performance and are prepared to go to a little extra effort to achieve that. The Pixhawk 6X Pro introduces a new kind of IMU vibration isolation that is a combination of special silicone-based vibration absorbing material and mass. Foam and silicon can bed used to filter vibration but so can mass - the heavier the mass the more force is required to accelerate it and this can be used to reduce the effect of vibration.

Here’s how the construction of the Pixhawk 6X Pro looks - the IMUs are attached to a mass which is suspended in soft vibration absorbing silicone:

The Pixhawk 6X Pro also includes a high-quality ADIS16470 IMU with a very large dynamic range of ± 40g which can be used to avoid clipping events.

All well and good, but how heavy should the mass be and how thick should the silicon be?

This is where testing comes in. We are trying to balance several different requirements - softer mounting of accelerometers, more rigid mounting of gyros, size and weight.

So how do we go about testing the different options? We obviously can do flight tests, but this is not a very rigorous way of comparing different options as factors like weather can produce different outcomes. Some of you may have seen my video of testing resonant frequencies using a vibration speaker:

there is a more “industrial” way of doing these tests - and that is to use a vibration table. Holybro acquired one of these and did much of the flight controller testing for this analysis:

A vibration table can be used to apply vibration in specific directions at specific amplitude. More sophisticated tables can also be used to apply rotational movement to excite the gyros. A vibration speaker, in contrast, can only really effectively apply vibration in a single (Z) axis.

So how are we going to test this? In reality it’s quite simple - we attach the flight controller to the vibration table and apply a range of frequencies on all axes - commonly known as a sine sweep. Typically we want to cover the range of frequencies that is relevant to the IMU, so for example from 10Hz to 500Hz might be quite representative. In order to see the effect we need to switch on disarmed logging, log the gyros at full rate, enable batch logging and enable the on-board FFT so that we can use that to analyse the instantaneous noise. The appropriate parameters are these:

FFT_ENABLE 	1
FFT_MINHZ  	5
FFT_MAXHZ  	495
FFT_SNR_REF 	10
FFT_WINDOW_OLAP	0.75000000
FFT_WINDOW_SIZE	256
INS_GYRO_FILTER 0
LOG_DISARMED	1
LOG_BITMASK	2273278
INS_LOG_BAT_MASK 7
INS_LOG_BAT_OPT 1

Note that we are switching off the gyro filter so that we can see the noise without additional filtering (remember we are only concerned about the effectiveness of the physical filtering at this time).

So how should the logs that this produces be evaluated? There are a number of aspects:

Accelerometer vibration

Our primary tool for looking at accelerometer affects is the VIBE log message. The elements we are looking for are low VibX/Y/Z values and zero to low clipping. Here is an example:

You can see that vibration is averaging around 15 and that clipping is zero. The clipping for IMU2 has been hidden in the graph because it shows two clipping events right at the end of the log - this is quite common when a copter lands quite hard as the shock of landing creates quite a high instantaneous acceleration.

Gyroscope noise and vibration

When we want to measure gyro noise the process is a little more complicated. Normally in a test flight noise is at a predefined level for a given throttle value. We can fly at this level, get a log, run an FFT and look at the results. The problem is that we want to look at the response of the physical filtering for a range of frequencies - and we don’t want to run endless FFTs to achieve this. Fortunately the in-flight FFT gives us a way out - it is able to run continuous FFTs on the changing gyro values and give us an estimate of the associated noise. What we are looking for is excess energy at specific frequencies (which will usually represent the resonance) as well as well-defined peaks - rather than a general smush - which will be easy for the software notch filters to attenuate. The elements we are looking for are contained the in the FTN2[0].PkX/Y/X and FTN2[0].EnX/Y/Z messages which represent the frequency and energy of the highest energy noise. Here is some example output:

You can see in this log that there is a spike in energy at 25Hz and this represents the resonant frequency. There are also other resonances at 17Hz and 56Hz. Resonances are not necessarily bad if they can filtered effectively, so what we want is nice clean spikes rather than no spikes. The spikes are quite spread out however and the vibration is not coming through clearly - almost certainly because this is a softer silicone. Here is a different kind of stiffer silicone:

You can see that there are strong resonances at 29Hz and 234Hz, but the peaks are much cleaner. Further testing showed that the 234Hz resonance was actually a product of the vibration table itself rather than anything to do with the type of silicone being used.

Aliasing

The final thing we want to check on is aliasing. Aliasing is a feature of sampling in digital filters. Any digital filter is applied to successive samples that are taken at a particular rate. For example many accels and gyros sample the sensor data at 2Khz. This means that due to Nyquist’s law the digital filters can only see noise at frequencies of 1Khz and below (1/2 of 2Khz). All well and good if there is little noise at these higher frequencies, but what happens if there is actually noise? This is where aliasing comes in - the high frequencies are folded down into lower frequencies - so 1122Hz will look like 122Hz to the filters. Fortunately, physical filtering is not subject to the vagaries of aliasing - there is no sample rate in the physical world - the sample rate is effectively infinite. Thus physical filtering is a very important tool in reducing aliasing. We can assess aliasing using the MAVExplorer.py tool which has a specific graph for showing aliasing. Here is an example:

If there was sensor aliasing going on then we would expect to see a divergence in the graphs for each of the sensors.

Pixhawk 6X Pro Vibration analysis

With all these tools in our kitbag we can effectively test different physical filtering options for the Pixhawk 6X Pro. The options at our disposal are a range of weights XXXXX and a range of different types of silicon. We can run our tests against this range and assess whether there is a “best option”. In order to simplify this process for the purposes of this discussion we will simplify this to considering the lightest and heaviest weights.

Here are the representative graphs for 4.3g weight:


Here are the representative graphs for 24.5g weight:


So our general conclusion is perhaps one we might expect - the use of heavier weights has a similar effect to softer silicone and results in more aggressive filtering that pushes the resonance down to lower frequencies. It also results in noise profiles that are more spread out and therefore more difficult to filter effectively. Conversely lighter weights have a broadly similar effect to more rigid silicone - it results in less aggressive filtering, but also resonances at higher frequencies that is less broad and therefore significantly easier to filter in software. The clipping and vibration seems to be largely unaffected, although some benefit is seen from heavier weights. Thus in the context of a “Pro” flight controller it is more appropriate to use lighter weights and stiffer silicone.

Final flight testing

We have a candidate for vibration isolation. The final step is to do some real-world analysis on flights using the new isolation. In order to do this we want to take a scientific approach as much as possible so that we can compare apples to apples. We want to use equipment that is representative of the kind of vehicle that might be used with such a flight controller and that might exhibit problems that the vibration isolation could help address. For that reason, larger vehicles - which tend to have more complex noise profiles and lower frequency vibration - are more representative.

In light of this a 650mm class vehicle was used for the testing.

In terms of the actual test we want to fly a standard pattern at different throttle levels (since noise is directly correlated with the output of the motors and hence the input throttle). Thus a box pattern at hover, mid and full throttle was flown in both stabilize and loiter and the logs recorded. Let’s have a look at the logs:






It is apparent that as the throttle is increased the acceleration vibration increases, but the gyro noise is somewhat constant. Also in the full throttle log you can observe some clipping on the second IMU. This is down to the sensor limits. The high quality sensor being used for IMU1 has 40g limits and IMU3 has 32g limits, but IMU2 only has 16g limits - hence why clipping is observed.

So it seems the new vibration isolation is working well and allows effective software filtering and thus flying.

Conclusion

In this blog we have looked at the various causes of flight instability and how these can be mitigated through physical and software filtering. We then looked at the new Pixhawk 6X Pro and its novel approach to vibration isolation. We then examined the different ways that we can analyse the effectiveness of vibration isolation and applied these techniques to evaluating different variants of isolation for the Pixhawk 6X Pro. Finally we did some flight testing and evaluated the results.

Happy Flying!

(As a bonus, here is a video review I did of the mounting and how you can change it)

16 Likes

Wow Andy, you sure have been busy!

Very interesting topic. I appreciate the scientific approach. I hope these results will help others in the future to develop isolated imu systems like what Holybro have achieved here.

2 Likes

@andyp1per Thanks for helping out with the analysis!

2 Likes

I finally found time to read through the article. Thanks a lot @andyp1per for taking the time to write this report. It’s really nice to see that more and more autopilot and UAS manufacturers are seriously taking the open-source software community into account and establishing relationships with it.

A question: You write

Do you mean that if one sensor was subject to aliasing, it would show different readings, compared to the other two?

And one more: Indeed mechanical filtering in our class of equipment can only perform low-pass filtering (at best); the softer the foam and heavier the ballast, the heavier the filtering and the shorter the effectively remaining control bandwidth.
In that aspect, isn’t it always better to have as “light” of a hardware filter as your digital sensors and processors let you get away with? Regardless of the aircraft you fly in.

Do you mean that if one sensor was subject to aliasing, it would show different readings, compared to the other two?

If you lowpass filter it - yes - the aliasing shows up as phantom vibrations which you can see as an offset in the aliasing check

And one more: Indeed mechanical filtering in our class of equipment can only perform low-pass filtering (at best); the softer the foam and heavier the ballast, the heavier the filtering and the shorter the effectively remaining control bandwidth.
In that aspect, isn’t it always better to have as “light” of a hardware filter as your digital sensors and processors let you get away with? Regardless of the aircraft you fly in.
[/quote]

I think yes, but the capabilities of the sensors vary as well as the axis of measurement - so the foam might have different stiffness along different axes and accel Z axis is a different direction to the gyro Z axis (because the latter is a rotation). Also if you are pushing the sensors to their limits you might run into quantizing errors - for instance 16-bit readings across a 32g range are less sensitive across a 16g range even though they will not clip as much

1 Like

I know this is a bit off-topic for this post, but… I’m replying to you because I have some questions.

What silicone and counterweight does the current Pixhawk 6X Pro that is being sold come with?

And what is the nature of the black silicone that is included in the package? Unfortunately, the additional counterweight is not an included option?

My current airframe has a rotor speed of 29-32Hz, so I’m afraid of getting close to the resonant frequency in certain combinations.

Additionally, I’m guessing that additional dampers would still be required when attached to a highly vibrating airframe (30G+), would there be any interference with the vibration isolation system inside the FC?

The production model I was sent does not include any additional silicon. I believe they are using 4.3g and relatively stiff silicon on the pro (15deg) and slightly softer silicon on the Rev 8 (8deg). The silicon changed several times during testing because of supply issues. I would think for 29-32Hz the pro will work well. At 30G only the ADIS will really cope, but you are right it is marginal and you might need extra damping.

Thank you for your quick response.

That’s a disappointing result… I was hoping for a softer option.

But I’m glad I don’t have to worry about the resonant frequency issue though.

I’ll still have to keep thinking about damping apart from FC.

Hello @andyp1per !
I was wondering if you could share a log file of the Pixhawk 6X Pro. I’m tinkering with a CUAV X7+ Pro, which also has a ADIS16470 IMU, and I was surprised that the base noise level of the ADIS logged by Ardupilot is greater than the ICM42688 in the X7+ Pro. What I mean by “base noise level”, is the noise when the flight controller is not moving and on solid ground. From the specsheets, that seems normal:

  • ADIS: 2.3 mg RMS and 0.17 deg/s RMS,
  • ICM: 0.65 mg RMS and 0.028 deg/s RMS),

but I was wondering if that was something you observed as well.

Unfiltered Gyro example (ADIS logged sample and logged at 2 kHz, ICM sampled and logged at 1 kHz):


Accel example:

Side question: The X7+ Pro is also unable to reach it’s internal target temperature, whether it is in a -5C environment or a 22C environment. I hope that’s not the case with the Pixhawk 6X Pro?

But yes, I’d be interested if you could share a log where the 6X Pro is not moving. Thanks!

Let me know if you’d rather I create a separate topic to keep the discussion here about the 6X Pro.

I think create a new topic - I have a couple of Pros I can try, but I don’t doubt they are the same. The ADIS has a number of drawbacks over the 42688 and other Invensense parts - low sample rate, lack of AA filters and SPI speed - and because of the software filtering we do the drawbacks of the 42688 can be mostly mitigated. That said the temperature drift on the 42688 is not great at all - I have not tested that aspect of the ADIS but I probably should since stability is one of the key features.