Tradheli changes in ArduCopter 4.0.6-rc1

Tradheli Users,
I just released the beta version of 4.0.6. It has some changes specific to tradheli which are listed below from the release notes

  • Differential Collective Pitch (DCP) trim support for Dual Heli
  • Incorporate hover collective learning
  • Option for pitch, roll and yaw I term to be based on takeoff/landing
  • Fix to landing detector for Acro mode

Here is a link to the Discuss Post for the Beta release.

I will follow up on this post to provide amplification on each of these changes. I’d appreciate any help you can give in testing this beta version.

Bill Geyer
Tradheli Maintainer

1 Like

There were two significant changes in this release

  • Differential Collective Pitch (DCP) trim support for Dual Heli
  • Pitch, Roll and Yaw I term management based on takeoff/landing
    The other changes were a consequence of the new I term management for pitch, roll and yaw axes.

Differential Collective Pitch (DCP) trim support for Dual Heli
An additional parameter H_DCP_TRIM was added to the dual heli parameters to allow users to adjust the relative collective between the two swashplates to account for a CG offsets or discrepancies between swashplate setups. This parameter’s units and scale are the same as the command for the DCP axis. So for tandem configurations, it is the same as the pitch command which has limits of -1 to 1. However this parameter is limited to -0.2 and 0.2 to keep users from putting in too much trim and losing control of the vehicle. The best way to set this parameter is to hover your helicopter in calm winds for about 15 to 30 seconds with a non zero I gain ATC_RAT_XXX_I and a non-zero ILMI. ILMI is typically set around 0.08. You will also have to change your LOG_BITMASK parameter so it logs the PID message. After your flight, pull the logs and look at the PID message parameter for the DCP axis for your configuration. If you are a tandem then you would look at PIDP and a transverse would be PIDR. Plot in mission planner the PID.I signal. Determine the value of that signal when you were hovering then set your H_DCP_TRIM to that value. If you were to fly the aircraft again with the new DCP_TRIM setting then your I term should be near zero.

Pitch, Roll and Yaw I term management
There is now an option to select how you want the I term for pitch, roll and yaw to be handled. It is defaulted to the I term management technique used before this change took place. The parameter is H_OPTIONS and you will see it is defaulted to 1. To use the new technique for I term management, set this parameter to 0. WARNING- Be sure the landing detector is working properly before using this method To check the landing detector, pull a log and look at the Events. These are shown in red at the top of the graph in mission planner. You might have to check the box beside “Events” at the bottom of the graph. You should see an indication of “Not Landed” and “Land Complete” in your plots at the points in which you lifted off and landed.

Before this change, the I term handling varied based on the heli ground speed. when the aircraft was going less than 5 m/s, it used a leaky I technique and a minimum (ILMI) value which it couldn’t leak the I term below. This started as soon as the motor interlock was enabled and didn’t reset until the aircraft was disarmed.

The new technique does not use leaky I or the ILMI. It manages the growth of the I term based on takeoff and landing using the landing detector. While the aircraft is landed, the I term is reset to zero. When the aircraft takes off, the I term is released and allowed to grow. When the aircraft lands, the I term is frozen when the Land_Complete_Maybe flag is set and then the I term is reset smoothly to zero when the Land_Complete_flag is set. It is important to note that the I term will be allowed to grow until it hits IMAX. If your ATC_RAT_RLL_IMAX or ATC_RAT_PIT_IMAX values are high (>0.2), it is possible that during landing or takeoff the I term could get to higher values. So you may want to set IMAX to lower values initially while testing this firmware to gain confidence that the landing detector is working well for your heli. I would recommend conducting your tests in stabilize or acro modes first to get a sense for how it works and that the landing detector is working well.

Other features added to help make the new I term management feature work better were hover collective learning and smoothly resetting the I term.
Hover Collective Learning
This feature is exactly like the hover throttle learning used in the multicopters. It is designed to start learning your hover collective when you use Loiter, Althold and other modes that are non-manual throttle modes. The parameters are
H_HOVER_LEARN - Turns on/off automatic learning of the hover collective
Values: 0 - disabled, 1 - learn, 2 - learn and save (default)
H_COLL_HOVER - value of hover collective which ranges from 0 (H_COL_MIN) to 1 (H_COL_MAX)
Initially set to 0.5
This feature is active even when you are not using the new I term management. So it will learn your hover collective. I doesn’t use that information until you turn on the new I term management

Smoothly reset I to zero
There are no new parameters or feature settings for this. This is on all of the time. Any time the I terms are reset to zero, the I term is decayed to 0 over 0.5 seconds. Previously, you may have noticed when landing on a slope in loiter or during auto landings that the rotor would snap to a neutral position after landing. This is designed to soften that behavior.


Is the I term management could influe on pitch and roll on the ground. When the copter is landing. Armed. Even if motor running.
Because since I upgrade my copter to 4.0.7, I have no pitch no roll. However, collective is ok and yaw too. Radio calibration was complete.
Boot servo test is the same, it test yaw and collective, but nothing on cyclic pitch/roll. I don’t know what appened.

please provide a log. Thanks!

parameter.param (17.8 KB)

Somehow your H_CYC_MAX was set very low. Please set it to 2500. That should fix your problem.

totally right thanks
sometimes, think I’m blind…

@bnsgeyer Hi Bill,

if I always leave the parameter hover_learn at 2, is the value coll_hover then determined anew for each flight?

Or do I have to let the value coll_hover be determined once and then set the parameter hover_learn back to 0 ?




It is continually updating it when you are hovering in a mode that uses althold for the vertical axis. So loiter, althold and even auto modes.

You can leave it in the learn mode.