Slight shake of drone

Hi!

I have a quadcopter that was tuned with AMC some time ago. The drone carries a MILC camera for aerial photography. The drone flies good, except one thing: in the air it shakes a little bit. At fast shutter speeds it can be tolerated but in lower light with slower shutter speeds this is an issue.
The camera is mounted on a gimbal, the gimbal controller is Storm32BGC. This is also configured and tuned.

Drone parameters:

  • TOW: 4500g
  • Motors: EMAX ECO2 3115 400kV
  • Battery pack: 15000mAh, 6s
  • Prop: 14x7inch 3-blade
  • FC: Micoair H743

Flight log of a hover without gimbal attached: https://drive.google.com/file/d/19b4xeKRrzJ1trjqF4icoL-ZnLHtZnr8X/view?usp=drive_link
Flight log of a hover with gimbal attached: https://drive.google.com/file/d/1wJAJTv853tuCDgYwaxLWTPyiq7S79NQ1/view?usp=drive_link
Video feed from the gombal camera: https://www.youtube.com/watch?v=rV6syK1S1Gg

Whithout gimbal there is a small vibration on Y axis, with gimbal this vibration reduces and the vibration on X axis increases. However, the vibration on the mentionex axes is also acceptable, according to Ardupilot documentation: well below 30m/s/s

Can you please point me some direction, where to move forward to reduce (the best would be to eliminate :slight_smile: ) this shaking behaviour?

Thank you!

It’s not slight shaking, it’s a lot of shaking, at least to my taste.

But your case is not the typical “junk frame flying with defaults” thing with trivial advice. In particular, as video is involved - and apparently not in a commercial sealed package that can fly on a internal combustion engine plane and still manages all vibrations on its own - you need to get deeper.


First, on vibration objectives. If you want to have a smooth crisp clear footage, you have to become stricter on vibrations. Vibes of “below 30” is a requirement for the flight controller to still see the gravity vector. For video, you want them much lower than “below 30”, I would say that “at most 5 in hover” is a better objective, especially because they typically get somewhat higher when not hovering.

Your vibrations are not extremely bad, though the vibe profiles with and without the gimbal are remarkably different, and the “without” profile is worse. Which indicates to me that it’s not the gimbal which adds more vibrations, but that the machine was tuned with the gimbal present, and it feels unhappy without it. In which exactly configuration did you AMC your machine?


There is at least one indicator that the machine is tuned suboptimally. The value of ATC_RAT_YAW_FLTE is 1.0, which is its minimum, which means autotune of YawE essentially failed. One of the possible causes is poor yaw authority. From my observations, in such cases the result of autotune really depends on the initial values (a term “attractor” is not totally inappropriate for this process), and this is something one has to perform some guesswork about.

Related to that, in the flight with the gimbal, P and D contributions in pitch and roll are very low (the I contribution frequently outdoes them), which on its own is not yet too bad - but again in my experience with reasonably well-built machines this is an indicator that you are filtering too much, and the controller does not care about high-frequency noise - which may be reaching your gimbal, and which may have been compensated by reducing the amount of filtering applied and achieving tighter control.

In the flight without the gimbal, the contributions are still not extreme, but unlike the gimbal case, there is much more D-term than the P-term. This is what made me think you were tuning with the gimbal attached. Removing mass from a tightly tuned machine typically makes it unhappy about that. If you need both operation modes, either tune for the lightest one, or for both separately and switch tunings.


On “filtering too much”: I see you have configured the filters based on propeller diameter only, which is a sensible start, but it does not necessarily reaches best results. This is beyond the scope of default AMC procedures, so - while still being methodical - you need to learn more about your machine.

One way is to perform system identification flights, and to tune the machine according to what you actually see. @amilcarlucas has processes for this and I believe he can consult you, perhaps not for free though.

Another way is to start becoming an expert yourself, at least an expert in your particular machine. For this, you need to start paying attention to details, and to have enough courage to get beyond default parameter suggestions.

One such detail can be seen clearly in the noise plots. There is something in roll, which is seen as an uncompensated red-and-blue peak spanning 25-40 Hz here:


As not too much of different flight regimes were tested, I cannot say it with 100% confidence, but most likely it is a physical resonance. Before trying to fix this in software (with FILT1_* and ATC_RAT_RLL_NEF), you should try to eliminate the mechanical source, which will give better results. (By the way, it is not in the gimbal, because on the gimbal-less flight it is still present).

And returning to filtering too much, I think it is almost unavoidable that you eventually have to try increasing INS_GYRO_FILTER and the ATC_RAT_*_FLTD values and to see what this makes to your machine. The defaults are fail-safe recommendations that one starts with, but does not necessary stick to them. Unfortunately, this will require a bit more than three flights to nail down. But the results may be very exciting.

Thank you for the long and exhausting answer!

Regarding mechanical things:

Thank you for pointing out the right vibration targets for camera applications!
Actually, videography is not in my plans, I just took a test footage to be able to show what I see on the ground station while I’m taking pictures. Long exposure times are in my plans - so it’s impotant.

The frame is from Aliexpress, and as I assembled it, noticed that it’s not very rigid. I haven’t flown in this state of the frame.
I added a 100x250x3mm carbon fiber plate to the bottom of the copter to improve frame rigidity. It helped a lot!

There are two protruding parts from the frame (besides the gimbal) :

  • GPS holder rod, on the top of the quadcopter
  • Four legs, at the bottom of the drone

I can make test flights without the legs and I try to fix the GPS holder with some adhesive tape to see the effect.


Regarding tuning:
I made test-flights without gimbal. This is the lightest, most agile configuration of the drone.
After performing notch filter tuning and autotune I have decreased the RATE parameters to the correct value with the additional weight of gimbal.

I can’t remember YawE tuning, I think this was not tuned during autotune.


  • As far as I understand, first I need to check the hardware what can resonate (landing gear, GPS holder) - and fix it.
  • If that does not help, or I’m unable to find the source I need to start increasing INS_GYRO_FILTER and ATC_RAT_*_FTLD parameters. With or without gimbal?
  • Do I have to tune YawE? If yes, I need to tune it manually.
  • I have checked Adupilot documentation for SysID. Huh, a little bit complicated! :slight_smile:

That is something that comes after roll and pitch, but before YawD. There are two autotune steps for yaw, commonly known as: YawE (because it tunes ATC_RAT_YAW_FLTE) and YawD (because it tunes ATC_RAT_YAW_D). You definitely did the second of them because you have a non-zero D term. Because yaw’s FLTE is neither at default (2.5) nor at the initial recommended value for autotune (2.0) - and, after all, because I assume you followed the AMC process - then you absolutely had that step too.

These flimsy legs with some weight at the end can indeed contribute to the performance in a negative way, you would surely benefit from using something else. For the GPS holder, I have no idea how impactful this one in particular is - my gut feeling is “not so much”.

For “with or without gimbal”, this technically depends on a gimbal, which might dislike twitches performed by autotune. My choice would be to start without a gimbal, then to tune down maximum angular accelerations once we have a nice tuning for the machine, and then, if you only intend to fly it with a gimbal and we feel that the result is not too crisp, we may retune with a gimbal as a final step.

We may continue in private messages if you wish, then we may share the results here once it’s ready. I’m trying to improve my remote drone manipulation skills this way :slight_smile:

There’s wireless telemetry on the drone, I can see and set parameters while it is flying.
Can I start setting filter and ATC_RAT_*_FPTD parametes while it’s in the air?
Can I crash the copter if I increase these parameters too high?

I would do these without gimbal for financial reasons if the device crashes :slight_smile:
The other reason is simple: more flight time without gimbal.

Tuning without any payloads is the recommended way. Ardupilot has a documented way of adjusting tune after payload is added.

If you want to increase torsional rigidity of the center section, you should add side walls instead.

Technically you can, but one accidentally wrong number, and your motors are burned.

I suggest doing that in careful steps, roughly one change at a time, and of course you (or your pilot, if you have multiple people) have to be vigilant, so that a misbehaving machine does not make any damage. After each test flight, logs should be checked for whether the intended effect took place.

My initial idea for the sequence of changes, based on my experience with a couple of machines that had funky yaw tuning problems, is as follows.

  1. Replace those legs with something sensible, and perform a flight with existing settings to confirm the roll peak goes away (if not, continue searching for where that comes from). This would also be a baseline for the following step.
  2. Increase INS_GYRO_FILTER, in steps like 50 => 80 => 120, and watch the overall noise profile for any additional peaks. Based on the existing noise profile, 120 is just shy of 2nd harmonic kicking in, so should be a reasonably safe target. Each of these changes ideally should result in no significant change to the noise profile, except that the post-filter curves would descend less quickly with each change - but ideally no new peaks etc.
  3. Carefully try lifting ATC_RAT_YAW_FLTE from 1.0 to the range of [1.5; 2.5], while simultaneously manually decreasing ATC_RAT_YAW_D. This D term is currently enormous, and the motors are not burning solely because the signal is enormously dampened twice, by both FLTE and FLTD. For the lack of personal experience with this machine, I would suggest steps of 0.1 for FLTE, listening for the change in sound and watching for increasing PIDY.D contributions, any major change in these => divide YAW_D by two.
  4. Then it would be time to increase FLTD and FLTT in pitch and roll. Here my preferred sequence is to increase them for one axis and then re-run autotune for that axis. My suggestion for the sequence, given Step 1 succeeded in full, is 25 => 40 => 60. In the ideal situation, each increase would result in a higher rate PIDs, all three of them, a higher ATC_ACCEL_*_MAX, and likely a slightly lower ATC_ANG_*_P. Don’t get the latter below, say, 15, that would be an indicator of increased noise. Also watch for the noise profile, the task here is to check for any new peaks, which might relate to some other physical resonances, which are again better to deal with in hardware.
  5. Finally, a similar sequence in yaw. You can safely set ATC_RAT_YAW_FLTT to the same values as in pitch and roll, this would not matter much. But since we have two D-like components to track, I would first set ATC_RAT_YAW_D to something like 0.001, and work with YawE (AUTOTUNE_AXES = 4) until it normally sets _FLTE to something sensible (at least 1.5, I would say, the more the better), and only then perform the YawD tuning (AUTOTUNE_AXES = 8). If this arrives at a non-zero YAW_D, then you may forget about _FLTE and YawE unless we see issues (specifically, low-freq oscillations in yaw at a scale of couple degrees, that would indicate that _FLTE is too small for this machine).

For the non-autotune flights, the sequence is:

  • always Stabilize
  • gently hop for up to half a meter first, and look for obvious signs of problems like oscillations or control lags, always being ready to land and disarm
  • if OK, perform a second lift-off, to a slightly higher altitude to get out of the ground effect, hover a bit, then perform few step inputs in pitch and roll, smaller first, larger next, then the same for yaw. If problems arise (even as much as “I suddenly don’t like how it feels”), land and disarm. We want a slightly higher motor output range for each motor than just while hovering.

I acknowledge that this is frightening to read and seems to be infinitely long. This is true, but it would not take so much time in real life, because many of the required flights are short, and the analysis can be performed in the field. This sequence is obviously not as polished as AMC guidelines, but we are dealing with a machine that already resisted standard AMC procedures to some extent…

If needed, I can help - that’s my tuning sequence anyway, and I can use my gut feeling to shortcut some of the steps. It would be ideal if someone records videos of the short flights.

In my experience those frames are known for flex. You can buy another frame kit and double up the top and bottom plate, I do this and add a bit of glue between the plates and this has made massive differences with frame vibrations and rigidity.

Hi @MaxBuzz

I had a little time out on the field.

  • Gimbal was never on the drone.
  • I started with removing/fixing components on the drone.

The top chart is with landinggear and with GPS holder
Second chart is without legs, with GPS holder
Third one, the bottom: without legs with duct-taped GPS holder.

It was a little bit surprise, that fixing the GPS holder did not made it better.
Removing the long wobbly legs was slight improvement - so I let the drone in this state when I started to change parameters.

Next I started to change parameters and arrived to this state:

  • INS_GYRO_FILTER,120
    Actually, this parameter change shifted the filtered signals in Filter Review close to -50dB.
  • ATC_RAT_YAW_FLTE,2
  • ATC_RAT_YAW_D, 0,031851

Flight log: https://drive.google.com/file/d/1voV0rllS60GTm0joxB7Mlp4NT_IYd9YJ/view?usp=sharing

As mentioned above, the GPS holder was not fixed with duct-tape, when the drone started to slightly oscillate, the movement of GPS holder was a good indicator.

Unfortunatelly I needed leave the field, so I can continue fine-tuning at a later time.

@LupusTheCanine thanks for the hint! I can solder a strip of FR4 PCB to the standoffs between the two plates. I’ll definitely give it a try!