Vibration

Vibration can be a major problem in small UAVs (fixedwing and rotorcraft alike). Vibration can come from a variety of sources, but in UAVs the most significant source is rotating machinery, i.e. the primary powerplants in the airframe.
Major Sources of Vibration:
* Main electric motors
* Internal combustion (IC) engines
* Unbalanced propellers
Minor Sources of Vibration:
* Flutter or resonance in flight surfaces and airframe
* Actuators or servos for flight or payload control
In general, the main source of thrust will be the primary source of vibration. Electric motors generally do not introduce strong vibrations into the airframe, though an unbalanced propeller on an electric motor can be very noticeable. On the other hand, IC engines, whether glow or spark ignition, usually introduce extreme amounts of vibration into an airframe.
A brief introduction to vibration can be found on Wikipedia here.
=== Implications of Vibration ===
Vibration can have many detrimental effects on UAV airframes. Some examples are:
* airframe fatigue
** can affect glue joints or high stress locations
** reduces lifetime of servo actuators
** touching components can wear away at one another
*** fuel line or motor cable on sharp edge of bulkhead
* foaming fuel
* wiring fatigue (including RF connections)
** wire strands on sharp connector or crimp edges
** connectors rated for limited insertions, removals, as well as vibration
** switches can degrade, fail, switch in flight
***look for MIL spec parts with high vibration ratings
* lower flight and powerplant efficiency
* increased sensor noise and bias
** gyros, accelerometers, magnetometers, pressure transducers, etc
* potential for sensor saturation
** in particular, gyros and accelerometers in IMU
* degradation of payload sensor data quality
**especially imagery with CMOS sensors, increase in rolling shutter effects, motion blur, shaky video
Electronics (PCBs and components) are particularly affected by high frequency vibration. An interesting discussion about vibration isolation of PCBs and their transmissibility and dynamic response can be found in:
A. Veprik. Vibration protection of critical components of electronic equipment in harsh environmental conditions. Journal of Sound and Vibration, 259(1):161 – 175, 2003.
One of the most noticeable problems with high vibrations is in attitude estimation. MEMS gyros and accelerometers can be very sensitive to vibration, and the filtering algorithm can not always fix the problem. The vibration can sometimes cause significant drift or divergence of the filtering algorithm, making the attitude estimation useless.
Usually large amounts of vibration are obvious based on the feel and sight of a shaking airframe. Measuring the vibration can be very useful. It can provide insight as to the frequency of the vibration and the amplitude of the vibration. If vibration is proving problematic, making a baseline measurement is helpful to compare to vibrations after mitigation modifications. Often, modifications one may think would help deal with the vibration results in an even worse problem! In general, both the amplitudes and dominant frequencies of the vibration will change with modifications.
Note that vibrations are also quite important for gyro's. On accelerometers the standard deviation is a good measure for the noise band. However, on gyro's it is not the noise band that is detrimental, but the fact that vibrations can change the bias (rapidly). 
MEMS and piezo gyroscopes (actively vibrating elements in x-direction that measure residual vibration in the y-direction since during a rotation due to inertia the active x vibration will lag and be visible in y) are by design always sensitive to vibrations (it's a vibrating element that senses vibrations), temperature (material properties) and g-forces (bending causes capacitive changes while the capacity is used to sense vibrations). 
To limit the effect of external vibrations the resonating frequency is quite high and different on each axis. (20 to 30 kHz) and many other tricks are used. So to asses the damage of external vibrations on gyros you should check the average (bias) with and without external vibrations and look at the vibration spectrum. The biggest problem here is that we are looking at frequencies above the accelerometer measurement range. Anything above 15kHz will have "some" influence in "some" cases.
=== Mitigating Effects of Vibration ===
There are a number of strategies for mitigating vibration effects in the airframe. The best results are in a combination of both mechanical damping and software filtering. Please note these are NOT equivalent. For example, if the bias of the gyro seems to change significantly at certain throttle settings it can not be undone with filtering afterwards, while mechanical damping can help prevent the bias change in the first place.
Mechanical isolation is generally best, and can be applied (ideally) at the source of the vibration, or at the interface of a particularly sensitive component (i.e. IMU or camera). Isolating at the source helps all parts of the airframe, not just a single component.
Good vibration damping is not easy either. Some simple rubber bobbins on PCBs for instance can also increase the vibration amplitude. And the lighter the electronics, the harder it is to dampen it. Very little soft foam on the corners has so far been the best trick. When possible it is good to put the battery + autopilot + all weight that can be found that needs to fly on 1 piece of wood, which is mounted on the fuselage using 4 small corners of foam. The smaller the weight, the looser the dampers you need (i.e. lower spring constant). For example, to dampen a Lisa/M board four pieces of 4x4x10 millimeter of packing-foam in the 4 corners are probably stiff enough.
Unfortunately, mechanical isolation may not be sufficient under high vibration or for particularly sensitive components. It also may not be practical due to size and weight limitations. In these cases, digital (or analog) filtering may help sensor output. Filtering raw sensor data prior to use for the user or various algorithms has advantages and disadvantages. Depending on the filter chosen, one may lose important information in the signal, induce a time delay detrimental to real-time execution of algorithms, etc. Considerable discussion on digital signal processing and filtering can be found elsewhere. In some cases, small time delays or reduced information content are acceptable compromises for enhance performance elsewhere, like in an AHRS or INS estimator, or when processing or viewing images and video.
Note that a low-pass filter on the gyroscopes in an IMU is almost never useful, while filtering on the accelerometers is usually better.
=== IMU + Vibrations and attitude ===
Be sure to always mind following constraints:
* mechanical damping until all vibrations are at least withing measurement range at all frequencies : (careful in very small vehicles this vibration might be of higher frequency than the sensor can measure: e.g. 1kHz 20g vibration on aspirin will be seen as measurements of only 6 to 8g while gravity is becomes 0.5g instead of 1g, so not always obvious)
* accelerometer should be filtering BEFORE AHRS computations but with minimal lag (a sudden 45 deg roll should not be counter-compensated for 0.5 seconds just because the accelerometer is slow). With mechanical damping at least gyro and accelero feel the same motion.
* gyro filtering should be AFTER INTEGRTION in ahrs since simple filtering (e.g. xf = (xm-xf)/K ) can distort the integral
* in AHRS with V x omega as compensation for centripetal force: omega is often filled with gyro measurements while in theory it should be the turn rate or looping rate. Short period dynamics of the plane should be filtered out first: e.g. at 20m/s during a 10deg/sec turn (=0.35g) a gust easily makes a 300deg/sec short period oscillation (=10.5g which is not present and not measured either and very quickly screws attitude)
==== Complementary AHRS ====
In the AHRS type int_cmpl_quat there is a heuristic that scales down the usage of the accelerometer if deviations from 1g are measured. This can potentially improve the state estimate as dynamic accelerations are not compensated for in the filter. However, if large deviations from 1g are continuously measured due to vibrations, the accelerometer is not used most of the time. This will cause the attitude estimate to drift. In this case, it is better not to use the heuristic and define AHRS_GRAVITY_HEURISTIC_FACTOR to 0 in the airframe file.
=== Measuring Vibration ===
In the Telemetry tab of the Settings tool, enable the collection of scaled sensor messages (scaled_sensors). Remember to commit the selection by pressing the green checkmark button.
Once the data is logged, the report_imu_scaled tool is used to quickly analyze and generate metrics related to the captured flight data.
 
$ ./sw/tools/calibration/report_imu_scaled.py -h
Usage: report_imu_scaled.py [options] log_filename.data
Run report_imu_scaled.py --help to list the options.
Options:
 -h, --help show this help message and exit
 -i AC_ID, --id=AC_ID aircraft id to use
 -p, --plot Show resulting plots
 -s START, --start=START
 start time in seconds
 -e END, --end=END end time in seconds
 -v, --verbose 
 
 
./sw/tools/calibration/report_imu_scaled.py -p -s 100 -e 220 ../../paparazzi/var/logs/15_04_04__16_50_40.data
 
==== Accelerometer (Vibration)====
 
ACCEL : Time Range(100.006 : 220.982)
 ax ay az
Min [ -2.413 -2.507 -24.158] m/s2
Max [ 2.170 2.066 7.477] m/s2
Mean [ -0.019 -0.580 -9.549] m/s2
StDev [ 0.731 0.758 5.936] m/s2
 
==== Gyroscope ====
 
GYRO : Time Range(100.342 : 220.998)
 gp gq gr
Min [-50.358 -47.924 -38.048] deg/s
Max [ 51.574 47.000 25.668] deg/s
Mean [ 0.661 0.019 -0.849] deg/s
StDev [ 17.431 15.366 5.136] deg/s
 
==== Magnetometer (EMI) ====
 
MAG : Time Range(100.022 : 220.934)
 mx my mz
Min [ -0.534 -0.594 0.953] unit
Max [ 0.089 0.000 1.079] unit
Mean [ -0.201 -0.405 1.019] unit
StDev [ 0.163 0.083 0.019] unit
 
=== Case Studies ===
Feel free to add your own case study!
==== Senior Telemaster with Gas Engine ====
A Senior Telemaster ARF airframe was modified and equipped with a TWOG and Aspirin IMU (among others, see here for details). A 25cc single cylinder 2-stroke electronic ignition gas engine is used to power the aircraft. The light wooden airframe combined with the high power from this engine results in very heavy vibration in the airframe.
The airframe is configured to use the float_dcm AHRS algorithm. Under these vibration conditions, considerable drift in attitude estimation is visible.
To deal with this problem, a mount for the IMU and other electronics was quickly thrown together, with little design. When installed in the airframe, the mount helped reduce high frequency vibration (more than a few hundred Hertz), but did little to mitigate lower frequency vibration. In fact, at a few specific operating frequencies, the mount actually resonated, resulting in WORSE performance. This effect was verified in a controlled vibration environment.
PICTURE HERE OF SHAKER TABLE
Based on these results, further investigation was made into isolating the IMU. Two approaches were pursued: a more carefully designed mounting system and software filtering. A number of spring/damper materials were tested, and it was found that latex foam rubber provided good characteristics, with damping and a relatively low spring constant. It is also easy to obtain at model aircraft hobby stores or from memory foam sleep products (pillows, mattresses). After extensive testing, the following was concluded. It is desirable for the natural frequency of the mount to be driven as low as possible. This ensures lowest transmissibility of damaging high frequency vibrations and reduces the amplitude of vibration at lower forcing frequencies. This would imply a low spring constant and/or high mass for the IMU based on the equation for calculating natural frequency. On the other hand, the IMU can not be allowed extensive motion. Large amplitude linear motion increases accelerometer noise while large angular motions increases gyroscope noise. Thus, the mount must be fairly soft, but with a limited range of motion. The final design is illustrated.
none|400px|Illustration of IMU mount used in Senior Telemaster
Alone, this new mount was not sufficient in reducing the attitude estimation drift to an acceptable level. In particular, the accelerometers were experiencing considerable noise. An evenly weighted moving average filter was applied in software to all raw accelerometer readings. While this induced a small delay in the sampled data, the DCM algorithm can handle this, as the acceleration is used only as a correction in pitch and roll for the gyro rate data integration. As a comparison, the GPS data comes in at a much slower rate, with some level of delay, and is used to correct yaw. A window size of 8 samples was used in the moving average filter, which, when sampled at 100Hz, does not significantly delay the data. Using this filter, the improvement in the attitude estimation was quite dramatic.
For interest, the gyro data was filtered in a similar manner to the accelerometer data, and the performance of the DCM algorithm was considerably reduced due to the delay and loss of information for numerical integration from the averaging at these low frequencies.
A balance must be struck between the mechanical isolation and the filtering to achieve good performance. Work in progress for this aircraft will include designing a better engine mount to try to isolate the vibration at the source.