Triflight 0.6 RC1

@lkaino lkaino released this Nov 5, 2016 · 9 commits to master since this release


Based on Triflight 0.5 (Cleanflight v1.14.0).

This is a release candidate for testing CF 1.14 rebased Triflight.


  • Rebased on Cleanflight v1.14. Notch filter and other awesome features included, see
  • Changed dynamic yaw default values
  • Slightly increased in-flight tail tune DPS limit (6.0 dps to 6.5)
  • Default gyro update frequency set to 1600 Hz for all targets.
  • F3FC target renamed to RCEXPLORERF3


Triflight 0.5

@lkaino lkaino released this Jul 24, 2016 · 662 commits to master since this release

Based on Triflight 0.5 Beta 3 (Cleanflight v1.13.0).


Reminder to everyone updating to 0.5 (or any other version that wipes the configuration) and using a servo feedback wire: Remember to re-run the servo speed calibration! If you don’t do this the FW doesn’t know the position of the servo. Pitch back in unarmed tail tune mode. This will rewrite the servo calibration to configuration. The calibration parameters are not in CLI so you can’t copy them from previous version.

I finally got the time to do enough flight testing to be sure that Triflight is ready for 0.5 release.

Triflight has come a long way since the 0.4 over half a year ago. Here's just a summary of the changes compared to 0.4, please check the beta releases below for more information about the changes.

Please view the awesome setup video made by David Windestål:

New features compared to 0.4

  • Rebased on Cleanflight v1.13.
  • Support for servo reversing (alpha)
  • Dynamic yaw output based on tail motor speed, replaces TPA for yaw (beta 3)
  • Tail motor acceleration/deceleration produced error estimation and correction (beta 3)
  • Support for wired servo feedback signal for accurate position measurement (beta 1, beta 2)
  • Unarmed tail tune mode for setting up servo end-points, center position and speed calibration (beta 1)
  • More precise in-flight tail tune (beta 1)
  • Many small improvements.


  • Defaults are tuned for RCExplorer Baby tricopter (170mm sized). Should work okay for larger copters as well.
  • Display feature has been disabled for NAZE and CC3D targets due to memory constraints.


TriFlight 0.5 Alpha 2 - servo reverse test

@lkaino lkaino released this May 30, 2016 · 1275 commits to master since this release

Based on Triflight 0.5 Beta 3 (Cleanflight v1.12.0).

This is an alpha release for testing servo reversing. Please report findings to #11! Please test tri_unarmed_servo = ON, unarmed tail tune servo setup and flight. BE CAREFUL!



  • Fixed VCP.
  • Servo reversing supported! Use smix reverse 5 2 r if you have a reverse servo / gearing after servo. Use smix reverse 5 2 n to return to normal behavior.
  • tri_servo_angle_at_max removed and replaced with the servo tab configured angles. The configured angles must be the same, default for tricopter servo (5) changed to 40.0 degrees.


TriFlight 0.5 Beta 3

@lkaino lkaino released this May 17, 2016 · 1275 commits to master since this release

Based on Triflight 0.5 Beta 2 (Cleanflight v1.12.0).


New features

Dynamic yaw output

On a Tricopter the yaw output is based on the servo angle and the speed (thrust) of the tail motor. Dynamic yaw output takes the motor speed into account, increasing yaw authority on low speed and decreasing it on higher speeds. These features replace the old YAW TPA.

Related CLI parameters:
Motor acceleration from min throttle to max throttle (and vice versa for deceleration) in seconds. Default is 0.18 (180 ms). The speed is used to calculate virtual motor speed feedback.

Dynamic yaw gain when tail motor is spinning at min throttle. Default is 290 (%).

Example values:
100: Dynamic gain disabled. Yaw output is same as in mid throttle.
150: Yaw output at min throttle is 50% greater than on mid throttle.
300: Yaw output at min throttle is 300% (3 times) greater than on mid throttle.
Values between mid and min throttle are linearly interpolated.

Tuning tips:
To gain more low throttle authority, increase the value. Remember that there's a limit on how much yaw can be produced at min throttle. Extremely high values reduce the resolution of PID output and causes oscillations.

Dynamic yaw gain when tail motor is spinning at max throttle. Default is 100 (%). This is the opposite of tri_dynamic_yaw_minthrottle, it reduces the yaw output at high tail motor speeds. It's possible to increase it, but usually not preferred. By default this parameter has no effect as the value is 100 %.

Example values:
100: Dynamic gain disabled. Yaw output is same as in mid throttle.
75: Yaw output at max throttle is 25% lower than on mid throttle.
50: Yaw output at max throttle is 50% lower than on mid throttle.
25: Yaw output at max throttle is 75% lower than on mid throttle.
0: 100% reduction of yaw output at max throttle. This means no yaw output at all.

Values between mid and max throttle are linearly interpolated.

Tuning tips:
Reduce the value if you are experiencing yaw oscillation at higher throttle values.

Motor acceleration correction

When a motor is accelerating or decelerating, the change in torque forces the copter to turn on yaw axis. On a tricopter where there's an odd number of motors this is visible on rapid throttle change scenarios. When motor is accelerating it forces the copter to rotate on opposite direction. When it's decelerating it forces the copter to rotate on the same direction. Triflight estimates this added yaw error based on the virtual motor model (see tri_motor_acceleration) and a configurable gain.

Note! See the post about a known issue in this feature in the end of the release notes. Please be careful when using this. If you're not interested in rapidly cutting throttle, please set the related CLI parameter to 0.

Related CLI parameters:
Gain to correct the error in yaw generated by accelerating/decelerating motor. Default is 6. Value of 0 disables the motor acceleration correction.

Tuning tips:
Tail motor must turn CCW. If copter turns CCW when throttle is dropped, increase the value.


Thanks to @Bengt-M and @pqueiros for helping with these!

  • New default tune from Dawid Windestål. The default tune is for Mini tricopter with EMAX 2300KV setup.
  • Support for upcoming RCExplorer integrated F3 controller.
  • Tail tune thrust factor calculation simplified.
  • Unarmed servo setup automatically saves the values when speed calibration is done (pitch stick is pulled down). It saves even when there is no feedback signal.
  • Tail tune mode turns green in configurator when activated.
  • Virtual servo calculation fixed. Much better experience for users without servo feedback cable. Should solve the issue with strong tail oscillations (#17).
  • Default looptime to 1000
  • Support for CUSTOM_TRI mixer
  • Improved detection of in-air tail tune failure

Knows issue with the new yaw correction feature

Following is copied from a post a made to RCExplorer forums (

This brings us to the main issue why I have been holding on the release. Now that we have more yaw authority it brings out a new problem with tricopters. I think we have traded the yaw authority to even bigger problem :(. The yaw authority works perfectly when the copter is climbing straight up, the copter keeps the heading very well. But the problem arises when the throttle is cut in fast forward flight.
Here’s my interpretation of what happens and what causes it:

  1. The copter is tilted forward and has forward momentum, throttle is cut.
  2. When the tail motor starts decelerating the generated torque forces the copter to turn to the direction the motor is spinning.
  3. The new Triflight feature quickly detects (expects) this and starts correcting the yaw error by tilting the servo.
  4. When the servo is tilted the added torque force starts affect the pitch axis, forcing the copter to pitch forward.
  5. As the copter is moving forward fast in the air, the pitch PID fails to correct the error as the propellers would have to spin a lot faster to get a grip of the “moving” air. The normal PID gains are not enough to correct on this special case.
  6. As the tail propeller is tilting to the other side, the disc area is reduced, thus reducing the drag. This also increases the error caused for the pitch axis.
  7. Pitch PID controller is trying to correct the error by increasing the throttle for the front motors and reducing the tail motor throttle. This further reduces the yaw authority, making the copter drift on yaw axis aw well.

Because of above effect, I will put a lower yaw correction value as a default to the new firmware. It would be quite surprising for newer pilots and cause many crashes.

I personally think this makes the situation even worse, Further development is required to make this feature feasible for other scenarios than climbing straight up and cutting the throttle. One idea would be to increase the pitch PID gains when the tail motor is decelerating. I’m open to ideas. In any case it would require throttling the motors up until the copter is stabilized, giving a momentary floaty feeling when throttle is cut rapidly.

I’m starting to think that tricopters just weren’t made for this kind of acro flying. I might be wrong and time will tell. Personally I will use my mini Tricopter for racing where it works wonderfully.


TriFlight 0.5 Beta 2

@lkaino lkaino released this Mar 12, 2016 · 1275 commits to master since this release

Based on Triflight 0.5 Beta 1 (Cleanflight v1.12.0).


New features

  • Servo feedback source is configurable
    • Before connecting the servo feedback cable, define in CLI the source pin for the feedback:
    • set tri_servo_feedback = VIRTUAL | RSSI | CURRENT | EXT1.
    • RSSI = Use RSSI ADC pin. RSSI feature can't be used at the same time.
    • CURRENT = Use the CURRENT ADC pin. CURRENT feature can't be used at the same time.
    • EXT1 = Use the EXT1 ADC pin. On Naze32 board this is the RC6 pin.
    • The calibration no longer automatically selects the source, user must define it in the CLI before using it.


  • TriFlight no longer based on Betaflight
    • Merged to latest Cleanflight release (1.12)
    • 1.12 contains many features from Betaflight, including air mode.
  • Tricopter mixer works with air mode.
    • Uses the Triflight integrator disable instead of the original Air mode one. Better yaw control.
  • Servo angle calculation changed to use integers.
    • Faster execution
  • Tail tune now beeps 5 longer beeps before starting the tune.
    • User has 5 seconds to take copter into hover. Can also be activated in air.
  • REWRITE integer PID controller is now the default
    • New defaults tuned for RCExplorer mini tricopter.
  • TriFlight now released for all targets, except CJMCU.


TriFlight 0.5 Beta 1

@lkaino lkaino released this Jan 25, 2016 · 1806 commits to master since this release

Based on Triflight 0.4 (Cleanflight 1.10 / Betaflight Oct 4).


New features

  • Tail tune version 2. Faster, more precise.
    • There's now new functionality for tail tune in unarmed state. To activate in-flight tail tuning, arm the copter before switching tail tune on. Tail tune can be activated on land or in air. After activating the mode user has 5 seconds to take copter into hover.
    • After the tune is beeping the ready pattern, land and disarm, still having tail tune on. The ready beeping should continue every 2 seconds. The values are now automatically saved. Deactivate tail tune after disarming copter!
  • Servo setup without configurator
  • Servo position feedback support
    • More accurate tail motor control based on servo position.
    • Currently only supported on Naze target
    • Servo feedback signal must be max 3.3V! Use voltage divider if your signal is greater than that.
    • Connect the feedback signal to RC6 pin on Naze board. See
    • Feedback signal is calibrated by pulling down on pitch stick while in unarmed tail tune state. Min, mid and max positions must be set before this. This also sets the tri_tail_servo_speed. Check your servo speed from CLI!
    • If servo speed is set, the FW will use the calibrated feedback signal from this point on.
    • To fall back to using virtual servo, disconnect the feedback cable and initiate the feedback calibration again. The servo will go to min position and then mid position. Failure beep pattern can be heard from buzzer. If your servo does this while feedback cable is connected, there is something wrong in your feedback signal.


  • Integrator disable allows shrinking of I term. Better yaw drift control.
  • SBUS overflow fix. Merged from CF.
  • BB in-flight adjustment fix. Merged from CF.


Triflight 0.4

@lkaino lkaino released this Jan 1, 2016 · 1806 commits to master since this release

Based on Triflight 0.4 Beta 2 (Cleanflight 1.10 / Betaflight Oct 4).

  • Default servo PWM rate to 250 Hz.


Triflight 0.3

@lkaino lkaino released this Nov 3, 2015 · 1902 commits to master since this release

Based on Triflight 0.2 (Cleanflight 1.10 / Betaflight Oct 4).

For more information, see