Fixing Yaw (particularly for Tricopters)

I'm opening this up to try and get all the discussion about yaw problems into one place so that it's not scattered.  I'm working very hard to fix the yaw control because it seems to be the #1 complaint about the general flight characteristics currently.  It seems like everything else related to "just flying around" is doing quite well, except for yaw.

I'd like to start by enumerating the individual problems.  Please feel free to let me know if I missed any.

1) Copter "bounces" after entering a yaw command and then stopping.

2) Copter oscillates back and forth when yaw stick is centered.  This is predominantly a Tricopter problem, but I'd like to know if any quad/hexa/octos have this problem.  Any amount of oscillation is too much.  So if you have logs to show it's oscillating 1°, I'd like to see it.

3) Yaw is too slow.  Currently, yaw speed is controlled in a round-about way by Stab_Yaw_P.  So to yaw faster, you increase Stab_Yaw_P, but if it's too high, it can lead to steady-state oscillation.  This is obviously a problem.  I think I have also just identified a situation where the yaw rate is also capped, no matter how high you turn Stab P.  

4) Copter turns the wrong way if I try to turn it slowly to the left or right.  This usually only happens in one direction.  For helicopters, it's usually when you try turning to the right slowly, it will go left at first, until you feed it a lot of yaw stick, then it will start turning right, and then may turn right too fast. After releasing the stick, it will often turn left again before stopping.  I believe this also really affects Tris, but should not affect quad/hexa/octo unless your frame is bent/motors not straight.  But I'd like to hear about it if you have a problem.

5) Copter rotates when I punch up throttle.  This is largely a TradHeli problem, and we already have a fix (Coll-Yaw) but I would like to know if it affects others.  I would bet that it affects Tris too.

So far, I have already boiled down a lot of these problems and understand them very well.  I had made a yaw fix that was in 2.6Delta, but it was pulled before release because come people didn't like the way it felt (it was a little slow and "springy", but it is VERY precise).  I am working on something that will make everybody happy.  Dave has a copy of that and I'm waiting for him to test it.  It includes a somewhat radical change: gain scheduling.  This is an attempt to make the copter STOP NOW when you release the stick.  Basically, if you are yawing, and then return the stick to center, and it is yawing too fast (overshooting) it doubles the output from the yaw controller.  I have no idea if it's going to work and haven't even flown it myself.  Hopefully it's not too screwed up and just causes a crash, I don't like trying to code without testing myself, but that's the situation I'm in right now.

I did just check in a small change into trunk that is pretty simple, and targets a number of these problems.  Hopefully this should be tested and go out in 2.6.1.  Basically, there was a bit of code that constrained the output from the yaw controller excessively (I think) when the stick is in the middle.  This prevented the copter from being able to stop yawing, and contributed greatly to the "bounce".  I already got rid of this for TradHeli, and it helped a lot.  So I've also gotten rid of it for all other Copters and that will get tested soon.

Now, problem number 3) is going to require a new parameter, where you rigidly set the yaw speed relation to full stick.  I'd like to set the default to something that most people are happy with and won't even have to worry about that parameter.  Can we get a consensus on how many rotations/second most people want?  1 rev/second?  2?  1/2?

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • @Rob I only found this thread now that it was revived. 
    Issues 2 and 3 are still real issues for me, even with the latest firmware. I had to lower Stab_yaw_P to some ridiculously low value to stop the oscillations. My tricopter is at my vacation address so I can't verify the actual value now, but MP wouldn't let me set the value that low in the normal PID tuning page, so I had to do it in the full parameters list.
    It flies reasonably well like that though and the yaw rate is ok. But it isn't ideal.

    It would be nice to have a tuneable deadband value for Stab_yaw_P because top heavy yaw mechanisms combined with medium to short arms are the causes of these oscillations. Think of something like the throttle PID attenuation feature in Baseflight and CleanFlight, but then applied to Stab_yaw_P where Stab_yaw_P is attenuated when yaw deviation is below a certain threshold.

    P.S. what for values do you want to see in the logs so that I can collect them the next time?

    • undefinedHi turdsurfer, you say you have issue 2 & 3. My friend has issue 2, upon spooling up the servo oscillates right to left, back and forth. Even after a succesful autotune it is still there. This happens throughout the flight. Surprisingly the tri stays on track but the oscillation is constant. Have you managed to make your oscillation go away? I have the exact same tri, a:

      Fortis Titan

      Motor    - Sunnysky 2212 980kV

      ESC      - 30A SimonK

      FC        - APM 2.6

      Servo    - Hitec HS82MG

      only difference I am using a Pixhawk.

      Any ideas buddy?

  • Hi, I am new to this field and I am completely stuck at this yaw issue. I am using an APM 2.6 for my tricopter. All motors are functioning properly. My servo is not at all responding wen connected to output pin 7, but when connected to channel 4 of the receiver directly it is responding perfectly, which means there is some problem with the output pin 7 of the APM 2.6. I dont know what to do.

    I have connected the servo power pin to esc and all grounds pins i.e servo and all esc's to the apm

    • Have you tried arming? I don't have my tricopter with me now, but I think the yaw servo only works after arming it.
      B.t.w. here's a nice thread on setting up APM for a tricopter:

      • I follwed the thread but problem still exist. I m attaching the parameter list of my apm board. Please check and let me know if there is any irregularities in out settings. It would be very kind of u if you can come on "Team viewer" and see my work and find out wer we went wrong. I am stuck at this issue and have no idea wat to do next, so please help.

        para list.param

      • Thanks for the quick reply and thread....I will follow the thread and let u know if the problem is solved.

  • Hey Rob, I have an issue currently with the tail servo on tricopter being pitched over to the left side (roughly 10-15 degrees?) so when I lift off, it will yaw round and around, truly concerning lol. fortunately, my first flight ended up in a tree relatively undamaged, and my second attempt I was able to just set it back down but got a better idea of what was causing it, the tail servo not being centered at take-off. will this rate_yaw_i adjustment be effective in solving the issue of centering the tail you think? any other advice you can offer? would truly appreciate it as I am sooooo clooooooooose to having a flight worthy copter..

    • to add some detail, I have a TGY-306g digital tail servo, 690kv motors and 12" props. APM 2.5 and current firmware. GPS is mounted on a boom and all calibrations have been completed. When I arm it without props and do a mock test in hand rolling and yawing it, things are working properly tail included, just not 100% accurate with the tail and cannot find the proper adjustment to make it take off and hold a heading properly. thanks again in advance.

  • I am going to have to try this.  Thank you.

    Just put together a QAV500 quad with APM1 and am seeing problems #1,#4 and #5.

  • The latest code is now in my clone.  Just another little improvement to help the copter stop yawing a little better. 

This reply was deleted.