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.
Yes. "throttle" all the way down, rudder right. It's pretty hard to imagine that's a code problem. Much more likely that there's something missed in your set-up. you did the radio calibration of course?
Yeah, I'm wondering if he needs to reverse his throttle channel in the radio setup. Pretty common problem when you do a fresh setup, especially if you have a Futaba radio since Futaba outputs the throttle channel inverted for some reason. When the Tx output is *not* reversed in the radio, "up throttle" is actually low PWM, and low throttle is high PWM. I've never known why.
Another thing Manfred, did you make the necessary changes in APM_Config.h to make it compile for TradHeli? That's something else you'll need to do whenver you compile.
Line 18, you'll see this:
//#define FRAME_CONFIG QUAD_FRAME
Change it to this:
#define FRAME_CONFIG HELI_FRAME
The "//" in front of a line means that it is "commented out", which means the compiler ignores it. So you need to uncomment it so it is active, and then change it to Heli.
Otherwise the compiler defaults to Quad.
Sorry about the hassle Manfred, this is the stuff you have to go through when compiling. It gets easy once you get used to it.
I also commonly add these two:
#define AP_LIMITS DISABLED
#define MOUNT DISABLED
It turns off those two features to save RAM.
I did the radio calibration, but the odd thing was, I had to reverse on the RC the Aileron, Elevator and Rudder to get the right response, compared to my previous setup with 2.7.3
And yes I found out to define the HELI_FRAME...
Is there something else important in the config ?
The collective works in the right direction, but to get it to work, I had to ARM via MP. Without arming no collective !?
I preset all the parameter, collective travel and so on, everything looks fine except the arming otherwise I could start real testing.
Manfred, sounds like something still isn't right. I don't know why your channels would be reversed, or why you don't get any servo movement when you disarm? (btw, how do you arm with MP? I didn't even know you could do that!)
I haven't changed anything, that would stop the servos from moving when disarmed. They should move, armed or disarmed. That tells me something is still up.
Can you paste your APM_Config file here?
Oh, are you sure that you are uploading the right files? Did you change the location that Arduino is getting the files from? You have to change the location to the new director with the 2.9 rc2 files, otherwise it will still pull from the old location, whatever that was.
Again, the other thing to try is upload 2.7.3 from MP, and then write all your params back. See if it still works.
If I arm via MP it will disarm after a while if collective is down, so it recognises the throttle input in the right direction.
That’s the config file I work with
// -*- tab-width: 4; Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil -*-
// Example config file. Take a look at config.h. Any term define there can be overridden by defining it here.
#define CONFIG_APM_HARDWARE APM_HARDWARE_APM2
// Ordinary users should please ignore the following define.
// APM2_BETA_HARDWARE is used to support early (September-October 2011) APM2
// hardware which had the BMP085 barometer onboard. Only a handful of
// developers have these boards.
//#define MAG_ORIENTATION AP_COMPASS_COMPONENTS_DOWN_PINS_FORWARD
//#define HIL_MODE HIL_MODE_ATTITUDE
//#define DMP_ENABLED ENABLED
//#define SECONDARY_DMP_ENABLED ENABLED // allows running DMP in parallel with DCM for testing purposes
#define FRAME_CONFIG HELI_FRAME
//#define FRAME_ORIENTATION X_FRAME
//#define CH7_OPTION CH7_SAVE_WP
// Inertia based contollers
//#define INERTIAL_NAV_XY ENABLED
#define INERTIAL_NAV_Z ENABLED
// agmatthews USERHOOKS
// the choice of function names is up to the user and does not have to match these
// uncomment these hooks and ensure there is a matching function on your "UserCode.pde" file
//#define USERHOOK_FASTLOOP userhook_FastLoop();
#define USERHOOK_50HZLOOP userhook_50Hz();
//#define USERHOOK_MEDIUMLOOP userhook_MediumLoop();
//#define USERHOOK_SLOWLOOP userhook_SlowLoop();
//#define USERHOOK_SUPERSLOWLOOP userhook_SuperSlowLoop();
#define USERHOOK_INIT userhook_init();
// the choice of included variables file (*.h) is up to the user and does not have to match this one
// Ensure the defined file exists and is in the arducopter directory
#define USERHOOK_VARIABLES "UserVariables.h"
//#define LOGGING_ENABLED DISABLED
#define LOITER_REPOSITIONING DISABLED // Experimental Do Not Use
// #define LOITER_RP ROLL_PITCH_LOITER_PR
I the Action Tab there is a button “Arm / DisArm”
As far as I know I use the downloaded ArduCopter files and libraries of 2.9 rc2
I’ll start new, download the files, make the changes in the config, and see what’s up.
I reloaded 2.7.3 from MP, erased the EEPROM uploaded my recent parameters, and yes I had to reverse the RC channels again to get the right response. Everything works.
But now I can’t Arm at all, nor from the MP, getting a message rejected by MAV.
I’m completely confused now, never had any problems. And 2.7.3 loaded from the MP with my most recent parameters should work as it did before?!
2.7.3 Is working now. I’ll start from scratch with 2.9.
I started new, download the 2.9 files new, made a new directory, pointed Arduino to this directory, made the changes in the config, and it’s just the same.
I had to reverse the RC cannels to begin with, and I don’t get collective without arming from MP.
Yeah, this is getting weird now. Sorry I can't help more but, I'll keep thinking about it. The fact that you've loaded 2.7.3 from MP and loaded your params and had a similar result is very strange.
What did you have to do to finally get 2.7.3 working as mentioned below?