I am opening this topic to serve as the go-to place for talking about the upcoming 2.9 software release for Trad Helis. I think this will be necessary as 2.9 will have SIGNIFICANT changes in the way that the helis fly, and also in the settings you will use.
Yesterday, I flew 4 packs of "2.9 - rc2" from the downloads section on my 450 heli. The file is located here:
I would be interested in having some other people try some test flying with this. I'll have to walk you through the setup, as it requires a bit of work to get a flying parameter setting using the rate controllers which are now active. You CANNOT fly using the old parameters for Stabilize PID. Don't even try it. Also, the Alt_Hold parameters will have significantly changed.
This is slightly complicated by the fact that we have some new Heli-specific Rate PID parameters called "Rate_Pitch_FF", also for Roll and Yaw. Unfortunately these are only accessible in MP from the Advanced Parameters List. Hopefully I can get that fixed. What I'd like to do is for TradHeli, in MP, remove the Rate_Pitch_D, in the Config PID screen, and replace it with Rate_Pitch_FF. This is because I have found the D-term to be completely unusable anyway. The FF is feed-forward. This was what I found was the key to getting the heli to be able to fly in rate mode. Basically, it is like P-term, but has no error correction. It's sort of like this:
P-output = P-term x (Rate Input - Current Rate)
FF-output = FF-term x Rate Input
then you also have the I-term output. So the total servo command is:
Servo-output = P-output + I-output + FF-output
I have also implemented the FF on the yaw controller, and found that it actually helps to stop the slight "tail wag" that we always had.
There are also some new settings for the collective. These are Stab_Col_Min and Stab_Col_Max. What these are for is sort of like Idle-up pitch curves. You can now set up your swash plate with full negative pitch, maybe a range of -10° to +10°, or +/-12°, but when flying in Stabilize mode, you can set Stab_Col_Min to reduce the amount of negative pitch available to something like -3° or whatever you prefer. This gives a nice soft feel. However, in Acro mode, you will get the full range, and also the auto-pilot modes get the full range. For example, I set my Col_Min and Col_Max to give me +/-10°, and then I set Stab_Col_Min to 40, which is 40%, and this changes the negative pitch to only -2° in Stab mode.
The only thing to know here is that when you change modes between Acro and Stab, the swash-plate will jump up and down, so you have to be ready for it. It's no different than using Idle-up in your Tx.
My test flights yesterday went quite well. The Alt_Hold now works beautifully, and I actually prefer landing in Alt_Hold rather than Stabilize! I also did a few flips with it in Acro mode (very ugly, I'm not good at this) using full negative collective when upsidedown, and it worked well. It didn't seem to get confused. Finally, I tried going into Acro, rolling it over upside-down or sideways, then back to Stabilize, and it flipped right way up which is good.
The only problem I have seen so far is that when flying in Alt_Hold, if you push the cyclic full forward and get up a high speed, the altitude starts to oscillate badly. I suspect this is a classic "phugoid", or pitch/throttle oscillation. We'll have to work on this. However it seems to fly well up to about 1/2 Vmax.
I'll try to post my Parameter file here tonight, but I caution that the settings will be HIGHLY dependent on your servo speed, as well as many other setup differences.
The shooting star at the night sky ;-))
Yes that minor pitch oscillation could trigger a major oscillation if it’s appears in the resonant frequency of the control loop. I took the heli in my hand, switched to AltHold and moved it up and down a little bit, and I could see the swash going up and down, and this is quite a strong Z-accel input. I guess the idea to change the FF from the Z-accel to rate site is a good start to tackle the problem.
It comes in to my mind, that the problem might be not the intensity of Z-accel input, but the frequency (resonance whit the control loop) . Just at a certain speed you get a certain frequency in wobbles, and there it kicks off the oscillation.
Your test report is great to read.
Ya this vortex descends are quite fascinating and sometimes scary.
Cant test fly today very bad weather. :-((
I took mine back out with more changes but my throttle curve and the current fixed endpoint control mode on my ESC was just giving me grief with too low of a head speed and it being too quick to change. I'll put it in governor mode so I don't have to deal with two problems. My tail was jumping a round at what seemed like a random change (maybe 15 degrees at max) but I'm going to write that off as goofy head speed.
Because of these issues I didn't get to move into alt-hold or acro. I'll get my governor working and change to a flybarless head this weekend as well.
Josh, I would suggest you try using the RSC Controller within the APM. All you have to do, is send whatever throttle signal you want in on Ch8. And then plug the ESC into Ch8 on the APM. Then put your ESC in governor mode, and set H_RSC_MODE = 2.
And it's easy to do this in the radio. All I have done, is Ch8 is driven by a 2 position switch. When the switch is down, it outputs whatever the minimum is (endpoint is set to 100% down). Then you set it so the switch sends the maximum signal when it's high (so again, 100% up).
The only trick is to "calibrate" the ESC to the signal. This is easily done if you can plug the ESC into the Rx. I'm sure you'll know how. If not (I can't as I'm using PPM signal), then do this:
Take the blades off or loosen off the pinion. First make sure you have done a radio calibration in APM using the 100%/100% endpoint on Ch8. Unplug the ESC from the APM. Boot the system up, the ESC should be beeping at you because no signal. Now, make sure the Ch8 switch is low or it won't arm. Now arm it, set the collective stick to the middle (this prevents it disarming due to inactivity) and then switch the Ch8 switch high, and wait about 15 seconds. It should now be outputting a high signal on Ch8. Plug the ESC in. It should give you a confirmation that it has gotten a high signal, and waiting for low. Now, turn Ch8 off. The PWM output will immediately drop to the minimum. Your ESC should beep to tell you it has read the minimum, and is ready to go. Now, if you switch Ch8 high again, the motor should go to full power. It will ramp slowly over 10 seconds if you have left the R_RSC_RAMP at 1000. You could set this to 0 if you have a good soft-start. Or you could change it to 500 for 5 seconds, 2000 for 20 seconds, whatever you want. I do use it with soft-start in the ESC and 10 second ramp, it's just a bit softer.
Then after all this is done, what I do, is go into the endpoints, and I change the high endpoit so that it is outputting only 80% throttle when it's switched on. Now the governor gets an 80% signal when running, and I get a nice even head speed while flying, at least until the battery gets really low.
Now it's really easy to use. Put Ch8 off, collective down. Arm the heli, switch Ch8, the motor starts and gets to the target speed. Now you can take off.
The only catch here, is that if you arm, and leave the collective at the very bottom, it will disarm after 10-15 seconds. When this happens, it will immediately shut down the motor too, so it's safe, it's just a nuisance. So all I do, is while waiting for spool up, I move the collective up just off the bottom, not enough to fly. That prevents it disarming.
Sorry, I mispoke here. What I have described is how H_RSC_Mode 1 works. It is a direct Ch8 passthrough, however it is still set low when disarmed, and ramps up subject to H_RSC_RAMP which can be set to 0. But once ramped up, it is slaved to the RC8 input so you can pass through a variable throttle signal if you want.
Mode 2, uses IIRC, H_RSC_SETPOINT. It is this that I have set to 1800. So my Ch8 output in my Tx is still full-scale. This function only looks for Ch8 to be high or low, and when high, it sends out H_RSC_SETPOINT.
First thank you for the excellent explanation. That mode sounds a lot like the advanced governor mode on the castle ESC's. Since I just got my flybarless head in today, I'm going to just run the castle advanced mode for now, but I'll definitely give a try later when I have more time to play. I want to get up in the air as much as possible this weekend.
Manfred, I did some hacking last night and put the changes in my fork of the 2.9 branch of master. (listen to me, I sound like a computer geek! I couldn't program anything a year ago!)
You can check it out here:
Basically what I've done is re-jig the AltHold controller for TradHeli. What I've done is this:
- Moved my Thr_Accel_FF to a Thr_Rate_FF instead. It is now acting off the desired climb rate rather than desired acceleration. This makes more sense to me. We know that if we are in manual collective, and we push full collective up, we get a fixed, finite, relatively stable climb-rate. There's a solid and linear connection between collective position, and climb-rate. An FF makes sense here.
- I turned off angle boost. This was a thing where, if you lean it over 45°, it automatically boosts the collective by 70% I think? 40%? Whatever the trig works out to. This is great if you were hovering, and then pitch it forward suddenly. But it's the wrong thing to do to hold altitude in a heli almost any other time. Flying fast forward, and slam it back to stop? You don't want angle boost or it will make it rise.
- If you have Throttle_Accel turned off, now you have the simple Thr_Rate_PID plus FF. So that part is easy. The FF give you a steady-state rate control. I will ramp up to accommodate the headspeed as it falls. P and D manage the error and acceleration. This is pretty simple to understand.
- Here's the tricky part: If you have Throttle_Accel turned on, the Thr_Rate controller calculates the P, I, D and FF terms, It sums the I and FF terms, and reserves those (this is "throttle_rate_soft_output"). It sums the P and D terms (and calls them "throttle_rate_pd_output"), and sends that to the Throttle_Accel PID. That PID uses the desired accel input, and does it's thing. It determines what to output for the accel. However, the total collective output is the sum of the accel_PID controller, and the throttle_rate_soft_output. I plan to leave the Accel_I at zero, and maybe the D was well.
So, it's slightly complicated and weird, but makes sense in my head. I have yet to test fly it.
Robert you are a computer geek now. :-))
And what you propose makes sense. But I had first to spin my head around it and still do.
I played around with Throttle_Accel this morning.
I went up to about 70Km/h in AltHold and I got a very bumpy ride, altitude oscillation. I switched off Throttle_Accel and it was almost fine.
This shows Throttle_Accel has a significant negative influence.
I tried also loiter....it’s much much better than it ever was. I run the 10Hz filter.
Switching the filter to default, makes the old loiter, tending to circle, switching back to 10Hz, loiter is great, without the annoying circles.
Really, I wouldn't have expected the filter to affect the Loiter. You must have had some leans for sure.
I tried with Throttle_Accel disabled, but still got the porpoising. It was lower, but still there, and not acceptable. I'll try this controller tonight, hopefully I haven't made any mistake.
Yes, it's hard to follow the code through! The trick is just knowing that if using the Thr_Accel, it sends the output of the Rate controller through a bodyframe-earthframe rotation first.
Another key point I have to emphasize about 2.9:
The Ext. Gyro performance is unknown. I have not tested it, cannot test it, and I think it will be bad. I don't recommend using one. I've been wanting to remove support for it.
I never tried Ext. Gyro so I cant commend on that.
Yes I had still the odd leans, but with that great new filter, they just disappeared, and its great for Stab. and auto flying .
I wish you good luck for tonight, and thanks for your hard work.
I was finally able to get out of the office and get my first flight with Version-2.9 and it flew great!
One question is in "loiter mode" I am getting a toilet bowl affect and I couldn't seem to find the sweet spot. On rate_loiter_p I had to lower that to around 1ish. If I raised it up anymore the toilet bowl affect would be pretty bad.
I will just post my param file for everyone to see. This is installed on a Trex 550 that has been stretch to a 90 size.
What you mean with toilet bowl affect? Circling?