Tandem Helicopter PID Tuning

I disagree, at least for the Accel value. 110000 is too high for a nice feel on medium size helicopters such as this. This should scale counter to the size of the aircraft. I use 140000 or 160000 on my Goblin 380. But large helicopters such as the Procyon 800, I use 54000. I would suggest 54000-72000 would be reasonable for a tandem 500.

The ATC_ANG_RLL_P, would have to be determined.

Again, have to disagree. I use lower number on larger machines. 9000, or even 4500 on larger machines. My research shows that tandem helicopters are actually weak in yaw control, so lower numbers would be reasonable.

Keep in mind, these Accel values do not… or should not influence the strength of the disturbance rejection. They were supposed to just limit the ability of the pilot to accelerate those axis. Similar to putting huge dashpots on the control sticks. Over the past several revisions, I believe Leonard has actually changed it such that these actually constrain the rate of response to disturbances (ie: how quickly it will try to reach target values). I’m not sure if this is right, I can see arguments for and against. But I haven’t seen enough of an issue where I have felt the need to look into it further.

To the original topic, I must point out that I have been having major problems with the Loiter controller in simulation on 3.5. I’m getting really bad oscillation. I asked Randy if something changed in 3.5 for the Loiter controller, maybe some settings need to change. He said no. So I was left assuming that it’s just some artifact from the simulator performance, though it’s strange that it only appeared with 3.5. I’ve been wanting to find the time to work with Tridge to sort it out, but haven’t yet.

I just thought I’d point it out. Maybe there’s something up with 3.5 on Heli? I don’t know.

This is normally due to the swashplate not being trimmed properly and/or not enough I_Leak_Min for the PID controller to be able to “auto-trim” it out.

Oh, one important point about tandem helis: I believe what you have coded, is that the output of the Yaw PID loop, is differential cyclic pitch, right? The problem is, DCP does not by itself give you yaw torque. It’s the thrust vectors becoming angled which gives you yaw torque. The magnitude of the yaw torque, will depend on the angle of the disks, multiplied by the collective pitch thrust. The yaw controller should probably we aware of the amount of collective pitch thrust. If you were in a zero-G manoever, you would have no yaw control.

The really important point here, is that I would suggest the machine is built with compliant head dampers, such that the rotor disks can articulate. Modern FBL hobby helicopters tend to use very stiff dampers, which don’t allow articulation, and will give you problems with yaw.

Had a really quick look at the 3rd log file.

First, the Attitude PID tuning is not nearly good enough. Particularly in pitch.

Also, the IMU data is showing very significant aliasing on the IMU3. It’s basically useless. But even the vibration on IMU1 and 2 is quite high.

Try to change the INS_ACCEL_FILT and INS_GYRO_FILT from 20 to 10. This will clean it up digitally a bit. But I don’t recommend going beyond that. If it’s still too high, you will need to solve the problem mechanically.

Rob,
Thanks for the correction. I didn’t realize the values were dependent on heli size.

Well, they’re not directly dependent on heli size. But there’s a correlation. The larger the heli, the lower the angular acceleration rate should be.

The low values I use are to give a nice “feel” for customers who are not performance helicopter pilots.

Also great comment on the head and tip path plane tilt. Hadn’t even thought about the fact that scale heli heads are so much stiffer. You’d end up twisting the fuselage to get the thrust vectors to tilt.

Thanks Rob and Bill, great points here.

Okay, that makes sense. Just to read that back - the I term is trying to correct the error it sees, but with ILMI not high enough, the error never closes because the I is leaking?

Very good point - yaw control only works when there is thrust from collective. I haven’t seen any yaw-related issues yet, but that’s probably because I’m hovering at the same altitude using the same collective. Will keep this in mind to add.

So I assume that this is because the constant offset between Pitch and Desired Pitch is quite large, >5 degrees generally? Strangely enough, while I see this effect in the logs, I’ve never seen any problems with pitch in Loiter or Alt-Hold.

Okay, will try this!

Generally:
I was trying to work out some of these tuning procedures with @TianChang_Yonah on SITL, and you can see Learning Arducopter Control Chain Tuning with Xplane 10 for some of what we’ve learnt. We hope to apply these lessons to tune the tandem as well.

Yes, thanks for reminding me to use the correct terminology Bill. :wink: Yes, TPP

Sriram: I’ve tried to ask Philip what the acceptable vibration levels are for the PH2.1, but he doesn’t have a hard answer. I don’t know what to tell you, but I would not personally fly with vibrations like that. I think you are going to need to add external isolation to that machine if you can’t fix the source.

I see. The vibration hasn’t outwardly caused any issues, looks perfect in Stab and Alt-Hold, but it’s very possible that it’s also part of the problem regarding Loiter performance. I’ll give the filtering a shot, thanks Rob.

Don’t forget, it’s as much about the Tip Path Plane as it is about the Collective Thrust. That is the rotor disk tilt in layman’s terms. On this point, you should probably be using the softest head dampers you can get.

I haven’t looked yet if the vibration is causing problems with Loiter. I’m actually more concerned with the hardware failing. There’s a limit somewhere. I found it once, on a gas heli. But we don’t have a good measure.

The digital filtering won’t help Loiter I don’t think. It’s more for the Rate controllers. It will allow you to use more P and D term. Also change your ATC_RAT_RLL_FILT from 20 to 10. and the other two axes as well.

You’ll now have double 10 Hz LPF, which I understand helps the “roll-off” of the vibration frequency attenuation. This is what I normally do on anything that is not “sporty”.

On sporty things, I will sometimes increase the gyro frequency upwards, to 40. It all depends on the situation.

Okay, makes sense that changing the filter might allow for higher P/D gain.

Oh dear…

Bill also suggested something similar so that I can increase P/D, sounds good to me.

Ah yes, OK. Bill is experimenting with filtering levels I have not played with yet myself. Start at 10, and then reduce it step by step, see how it goes.

I have flown on 5 Hz once, years ago. I felt it made the helicopter less resistant to small disturbances. But it’s worth revisting.

@frizensami I hadn’t seen anything in the Blog or here. Was wondering how the project is going?

Hey there Bill,

We had to pause the 500x2 tandem tuning, but what we got near the end was an improving Alt-Hold performance by lowering ACCEL_Z_P and ACCEL_Z_I. We didn’t manage to test how Loiter performance was affected by this change, but our simulations indicate that ACCEL_Z should help significantly.

Nice timing though, we’re just about to test our gas-powered tandem heli on the ground in a few minutes :slight_smile: That’s what we had to prioritize over our 500 electric tandem. Bit too hectic around here right now to write something for the Blog, but I hope to do it someday!

Sriram,
Any more progress on the Tandem? I haven’t seen any news on the weekly Dev call regarding your project.

Hello Bill,

Still running through some engine testing on the ground, tuning the electronic fuel injection system. Hopefully we’ll get to flying soon! Any tips for working with these large gas helis?

No, I’ve only worked with nitro engines and I am moving away from that. Is this a dual engine system or a single engine with shafting to both main rotors? If it is dual engine are they just powering each main rotor or are they shafted to power the other main rotor as well?

It’s a single engine system that powers both rotors through a few belts and pulleys.

Sriram,
I haven’t seen any posts or updates in the developer meeting notes regarding your project. How are things going with it?
Bill