Swash plate setup changing by itself Trad heli using F/W 3.4.6

On my Trad Heli with a Pixhawk and Taranis, I had problems getting the swash plate to respond the correct way for Pitch & Roll with my sticks. Having spent a lot of time and testing before my test flight in Stabulze. On the flight, I spooled up slowly, when it was about to lift off, it did a hard roll hard right, digging the blades into the grass.
Checking the Swash plate after, it has reversed the Pitch and Roll. I.ve attached a Bin log, can anybody please check for me, to find the cause

1.BIN (1.5 MB)

What have you done for your basic setup? You do not set pitch and roll direction, for instance, in the radio. That is done with the parameters starting with H_ to set the correct direction of servo travel. There is also no mixing done in the radio - that is done in the flight controller. So your radio must be set to use straight-thru outputs with none of the mixes that a helicopter setup would normally use. Different radios have different options for this, but with your Taranis you should be able to use a normal airplane setup with no aileron to rudder mixing or anthing like that enabled.

Here is a link to a setup video and everything in this video must be covered. It is the same in 3.4.6 as it was in 3.3.3, as far as basic setup of the helicopter.

Copy and paste the parameters starting with H_ from your param file would be most helpful to look at your setup.

I Used Rob’s video to setup the Heli and checked it various times. set all settings with the param list. Double checked them. The only setting in my Taranis is a servo reverse, along with the H_ settings. All blade angles as indicated. for Stabalize mode.
The odd thing that happened when I was spooling up, the system shut down,and had to be rearmed, for no apparent reason

Also If I checked the swash movement with the Man param set to 1 “passthrough”,the swash moved as it used to. If set to 0 the rear servo moved a small amount in the roll movement, which I assumed is part of the new code.

Well, not really. Set to zero the attitude controller is active. So you should be able to pick up the heli and pitch and roll it by hand and observe the swashplate tipping in the proper direction to counter the pitch or roll (in Stabilize). Does it do that, and the swashplate tip in the proper direction? For instance, hold the heli level, then roll it left. The swashplate should tip to the right to counter it. If you have your rate PID’s set very low to start with it, it may not move very much, but you should see it trying.

I see where you apparently flipped the throttle on and off a few times. Probably to check for proper spool-up. And the helicopter rolled in the direction it was commanded to by the FC.

Editing this:
Trying to figure out the sequence of events. What I can see for sure is that the heli looks like it rolled right, the main rotor blades hit, and probably recoiled it back to the left. Your aileron input was after the motor interlock disabled.

Posting this graph here - the attitude controller was commanding right roll as soon as you armed and spooled up. When the head got up to speed, the heli did exactly what the attitude controller was telling it to - roll right. When the rotor started to produce enough thrust to make it happen, that’s what it did.

And here’s another graph of your collective curve. You were commanding collective to go up, looks collective was going negative (depending one which way you have the servos set in the params). Did the heli ever get light on the skids? Or did it just suddenly flip over sideways?

Do you have your param file from the pixhawk? I think you can post it here. I think the first step would be to look in your GS software at the radio calibration screen and make sure all the bars except pitch move in the correct direction when you move the sticks.

The software is designed to put in 3 deg right roll once the aircraft is armed in stabilize mode. This is designed to roll the aircraft to that attitude upon lift off to offset the thrust of the tail rotor pushing the aircraft to the left. There is something more going on here. Upon reaching 3 deg the PID controller would have responded to capture 3 deg. Something caused it to continue commanding right roll rate.

Can that be set with the roll trim param, which is default 300 centidegrees I think?

Yes, something is not right with this, because I don’t see RC IN roll commanding anything until after the blade strike.

Yes, you are correct. It is the hover roll trim parameter and I believe it is in the ATC group

That’s what I thought.

Anyway, looking at the param file will tell more about the collective curve and servo settings. I’m worried about what I see in the collective curve. It’s either reversed and the heli just simply pushed itself into the ground until it flipped over, or it may be taking too much collective to get it off the ground. Servo’s 1&3 move the same direction, Servo 2 is opposite. Need to make sure that jives with the servo direction settings.

And I don’t like the looks of how far the collective got before we had aviation commence, either controlled or uncontrolled. The #1 servo was very close to its limit. So the cyclic may have just bound up

I’ve attached the Param file from my pixhawk. At the monent I’[m rebuilding the heli with replacement main gear, main shaft, tail boom, main blades, and what ever else I find.
The swash plate moves the correct way when I tilt the copter.

File here

Hex crash 220317.param (10.8 KB)

Sorry to hear about your crash and rebuild. I’ll try to point out some things I see in your setup.

I would suggest setting this param to 0.2 for a helicopter. The default of 0.5 applies to multi-rotor aircraft and will make the collective cycle rapidly on most heli’s

The following params here are mostly the defaults. For now I would suggest going to the wiki under trad heli tuning and adjust these to the suggested values for first flight attempt and tuning. It looks like the only change you have made, possibly, to the defaults is turn ATC_ANG_RLL_P from 4.5 down to 3.5. These params could’ve had something to do with your problem. The I-term and IMAX params are a bit high in the defaults so I-term could’ve built up to the max level and didn’t leak off fast enough and caused the heli to want to tip on takeoff.

In the following params here I see the servo directions corresponds with what I see in your flash log for servo signal on RC out. This would make sense, since you said the swash tips in the proper direction with the hand roll/pitch test. So if the servos are not moving in the correct direction with your sticks, that problem is setup in the radio, and not with the ArduPilot software or configurations.

The other problem I see, and maybe you have this heli up with very little negative collective pitch, is that your servo trims vary quite a bit. And at max collective you are barely over servo center travel. At min collective you are too close to the servo limit and will likely have no cyclic control at negative collective because you will run out of servo travel.

Do your mechanical setup so that at H_COL_MID you will be as close to 1500 as possible with the servo horns at 90 deg to the swash links. If you are using different throws on the servos you will have a problem with introducing cyclic into your collective, as you advance collective pitch. The swashplate must remain level at full collective travel.

The other problem is that the params that are bold faced below are reversed. If this is a normal head with the elevator servo in the rear, then servo #1 is the left front servo at -60 deg. Servo #2 is the right front at +60 degrees. And servo #3 is at 180 deg. This is different from the way your heli setup manual, or radio setup might be for a helicopter

Now, let’s move on to your collective curve. I don’t know how this even worked. The range for these params is 0 (max negative collective) to 1000 (max positive collective) in Stabilize flight mode. What these params do is allow you set a custom collective curve for Stabilize flight mode where you can limit the max and min collective that is available to the flight controller to make the chopper easier to fly in Stabilize. The IM_STAB_COL_2 and IM_STAB_COL_3 correspond to about 40% and 60% collective on the stick respectively, so you can flatten your collective curve for hover to make collective management easier in Stabilize.

The final thing is that I see you are using throttle mode 1:

I don’t think is a problem as long as you are not using a helicopter setup menu in your radio to send a throttle curve to the ESC. It is important to not use a heli setup in your radio because then you may get some other mixes in there that will cause your servos to do weird things when moving the sticks. With Pixhawk/Ardu you just need the same basic thing that airplanes use - Channel 1 is aileron, Channel 2 is elevator, Channel 3 is collective (throttle with an airplane), Channel 4 is rudder. And as you move your sticks for each channel one at a time, no other channel should change pwm value. If it does, then you have a mix in there that you need to get rid of.

I think your crash was the result of a combination of things - having servo #1 and #2 reversed. Having too much I gain and IMAX to start with for your first test flight. Mechanical setup with possible servo binding and/or introducing cyclic pitch with increase in collective pitch due to unequal servo throw as collective advances. And I still don’t know how you managed to control collective at all in Stabilize. Unless the code rejects invalid values there and defaults to a straight collective curve?

I would like to point out another hint with the collective curve in ArduPilot. This is an example of what I use for the Stabilize collective curve for my rather underpowered Trex 500DFC
IM_STAB_COL_1 , 300.000000
IM_STAB_COL_2 , 700.000000
IM_STAB_COL_3 , 800.000000
IM_STAB_COL_4 , 1000.000000

I think the code uses the H_COL_MID param for zero collective pitch in calculations for other things in the code, such as collective torque compensation. So I don’t like to change that to set up H_COL_MID with 5.5 degrees of collective, or what ever it takes to make your heli hover. I adjust that in the IM_STAB_COL params instead so that hover collective is mid-stick, so that when I switch to Alt Hold the chopper doesn’t suddenly shoot skyward and have to grab the collective to bring it back down.

The documentation says IM_STAB_COL2 range is 0-500. But I’ve found that I can move it up to 700 for the 40% collective stick position and get mid-stick hover in Stabilize. Then adjust IM_STAB_COL3 for how flat you want that mid-stick collective curve to be. This makes the switch to Altitude controlled flight modes smoother, without getting a big jump in collective when you switch. And it also prevents your chopper from suddenly plunging towards the planet when you switch from an Altitude controlled mode back to Stabilize for landing or something.

Hope this all helps! Again, sorry to hear about your mishap and when you change these settings I recommend to use the Full Parameter List and don’t use the Extended Tuning page, especially, for setting PID’s for a helicopter. I don’t know how well the Heli setup page works in MP, as I don’t use it. Others may have insight on that. I do know that using the Full Parameter List to make your settings will not steer you wrong by changing something you don’t want changed for helicopter setup.

Thanks Chris, for all that info. I’ll work my way through it. The setup is all changed from two years ago, when it got put on a shelf. I then took up multi motor drone…
Can I send you my params file when I get it sorted out.?


Geoff, absolutely, no problem.

Yes, there was some changes made to the scaling of the PID’s in 3.4. I would recommend just re-tuning your handling for 3.4, as in my experiments I had the best results not trying to carry the settings forward for trad heli (with flybar in my case). Other changes just moved some of the settings to different groups where, for instance, rate controller settings have now been moved to the attitude controller ATC group, which makes it cleaner.

But the basic setup is still the same. So if you have any questions, or are not sure, please don’t hesitate to ask. It is lots more fun hearing about a successful first hover, than it is a catostrophic crash. :slight_smile:


At last the wind has dropped to-day, so got a test flight in on my lawn. Well I got up to hover, after having to drop the"D" down to 0.anything above that I got violent shaking. The hover throttle is above the 50%. My IM_STAB_COL2 is at 600 and IM_STAB_COL3 at 700. How high can I go with these settings.?
I’ve attached the BIN file

6.BIN (2.7 MB)

It looks like you are holding a lot of lateral stick (left I think) in the hover. Plus there is a huge disparity between the desired roll angle and the actual roll angle. which I’m not certain why that would be. The pitch axis looks pretty good. For your next flight please use LOG_BITMASK = 393214. That will give the PID info in the log.

Looking at your PID terms, you currently look like you are stabilizing mainly through the I term. This is not ideal. I think you should back off on the I term quite a bit for both pitch and roll. I don’t think they need to be more than 0.2. Also the IMAX terms should be around 0.4 Lastly if you can without getting any bad oscillations raise your P term in pitch and roll as high as you can. If you start seeing bad oscillations then back off. You would like to have the P terms around 0.2. You can then back off on the VFF term if you find that you can raise the P terms above 0.15. If you start seeing oscillations and they are above 5 hz then you can set the _FILT parameter to 4 for the affected axis (roll or pitch) and see if you can increase the P term a little more.

I pretty much agree with Bill on tuning. The higher you can get the rate P gain, the better your heli will perform in Loiter. Using D gain is optional for a heli. IF you can use a small amount, it seems to hold position better. But not all mechanical setups, servos, etc will allow it.

Different frames will handle different amounts of P gain, as I found out. So setting that to a recommended value is hard to do. But I think most frames should handle the default of 0.024 with no issues (other than being really sluggish on handling), and then tune up from there until it starts to shake, rattle and roll.

Once find how far you can go on P gain, setting I gains to about .2 should be adequate, as Bill suggests. It may take more if you can’t get your P gains up. And turn up the VFF in Stabilize until you like how the heli handles. The sharper you can make it handle in Stabilize and still feel comfortable with it, the better the Loiter controller seems to like it.

My favorite method to kind of see if I have a stable platform after tuning is to hover the heli sideways and bump or scrape a skid on the ground and see if it recovers ok. Then hover at about 4-5 feet and shake the cyclic pretty violently back and forth in both pitch and roll and see if it recovers ok.

One thing to kind of watch out for is that if you have the P gains really low (say only .04) and you intend to take off and hover to test it, make sure you look at the swash and move your sticks before flying it. If the swash barely moves, turn up the VFF so you can at least control it. The VFF doesn’t seem to cause any instability. It just makes it sharper handling and gives you more servo travel and direct-thru rate. If you get your P gains high enough, you likely won’t need VFF.

On the IM_ params, I’ve found I can use 700 and 800 for the middle for my underpowered Trex 500 and it works fine - gives me hover collective inside the “dead zone” for Alt Hold/Loiter. So I know that works. If you have use more than that your collective is going to come up really fast below mid-stick, so probably should be looking at a different setup, i.e. raising the headspeed a little. I believe thrust of the rotor varies with the square of the speed. So even a small increase in headspeed should make a difference to get that hover collective into reasonable territory.

This is kind of a strange one. I have a helicopter that flies perfect. And yet my logs show like a 3-4 degree difference between desired roll and actual. I tried re-calibrating the accelerometer. But I manually adjust my AHRS trims for X and Y to make the heli hover hands off in Stabilize with no wind. I think I introduced that disparity between desired and actual by doing that (my Pixhawk is not quite mounted in the frame perfectly perpendicular to the rotor shaft), but it doesn’t seem to affect how the heli flies at all.

So I wonder if the AHRS trim values affect that?

I’ve altered some of the params in V3.4.6 Trad Heli, unable to test due to the weather. I’ve noticed that the swash follows the stick as before, except it moves back straight away, and does not stay.even when held over.
The other point is the P value. It is quoted above as, “would like to have the P terms around 0.2.”-- " that you can raise the P terms above 0.15." ----“P gains really low (say only .04)”------"should handle the *default of 0.024 So is the decimal point in the correct place?

Heli Redone 290317.param (10.9 KB)