Hello.
I’m building quite a large scale HeliQuad based on the ardupilot software. Previously I’ve tried the “standard” HeliQuad firmware. It does fly with it but the YAW is problematic. The YAW is way too agile even when tuned down. What I would like is to have the heliquad software but extracting the YAW output to a seperate channel to input it to rudders. The lift power of the heliquad would be increased as it is not needed to “take” lift from the rotors for YAW maneuvers.
What do you people think? Is it possible to do this?
I find this hard to believe, especially now that there are rate limiters for pitch, roll and yaw. I don’t mean to drag you through using the standard firmware again. I would like to know what you have done to this point to “detune” the yaw axis. It might be a setting that you haven’t explored.
So you want to slow down the target values which are based on
ATC_RATE_Y_MAX
ATC_ACCEL_Y_MAX
the following parameters dictate the tuning of the controller to make the aircraft match the target
ATC_ANG_YAW_P
ATC_RAT_YAW_P
ATC_RAT_YAW_I
ATC_RAT_YAW_D
ATC_RAT_YAW_FF
Now the response might just be too fast due to the basic gearing of yaw output to collective movement. I looked at the code and there doesn’t seem to be a way to dictate how much change in collective for yaw (basically some way to scale the output of what full yaw output equates to in terms of change in collective pitch between the props.) I think there should be a scalar to allow that.
Your complaint is that the aircraft is too responsive in yaw. the yaw command type is the same between acro and stabilize. Your stick commands yaw rate.
So looking at the code a little more, your max yaw rate regardless of stabilize or acro is dictated by ACRO_YAW_P. I believe this is defaulted to 4.5? So your max stick input is requesting 202.5 deg/s of yaw rate. so to make the yaw less sensitive to your stick inputs, reduce ACRO_YAW_P. This will reduce the requested rates which then can be limited by the other parameters (ACCEL_MAX and RATE_MAX).
ATC_ANG_YAW_P. Leave this one as the default value
For the rest of these, I think I would try the P value first leaving the rest at zero. Start at .1 and then check your logs to see how well the desired rate matches the actual rate in the RATE Y message. I’ve never tunes a Heli quad in the yaw axis.
ATC_RAT_YAW_P
ATC_RAT_YAW_I
ATC_RAT_YAW_D
ATC_RAT_YAW_FF
Alright. What are the params in the log named that I should look at? I currently don’t have access to the flight controller, I will get the values I used for flying.
Also. Would it be possible to extract the YAW to be used with rudders instead?
You will look at RATE.YDes and RATE.Y. the first is the desired or target yaw rate and the second is the actual yaw rate. make some increasingly larger inputs up to your comfort level. Land and check the log. the actual yaw should track the desired fairly closely. If they don’t then increase the P gain. the idea behind the tuning is to not make the P gain too large. you want it large enough to make the desired and actual match. then you can use the I and D gain to fine tune. If you see oscillations then back off on the P gain. You can use a knob on your transmitter to change the P gain in flight using the TUNE parameters. this is helpful because it lets you immediately change the value if you happen to get oscillations. If you are getting a good response the matches then it might be useful to look at where start getting poor tracking between the desired and actual by lowering the P gain. this keeps you from having too much and overworking the servos.
I suggested getting the previous values only because it would probably be a good starting point for the tuning.
You mean physical rudder control surfaces? rudders would not help with yaw control in hover. In any case there is no way to use rudders with heliquad. the motors library currently doesn’t support it for that frame type.
Thanks. I will actually start all over with the tuning and start with 0 on I and D and 0.1 on P.
If a rudder is placed under the air stream from the rotors it would help during hover, wouldn’t it? Do you recon it’s difficult to make the motors library support it for heliquads?
I tried tuning down the ACRO_YAW_P, ACCEL_MAX and RATE_MAX. As well as the rate PID params. Now it flies quite well and keeps a relatively steady heading. Although it still needs some more tuning it isn’t acting as agile as before, which for my application is good.
If I now would switch over to PosHold, which parameters will it use then? Could it potentially become “agile” again and damage itself or would it use the same “slow” movement as I’ve tuned it to in stabilize?
When I’ve done some more tests I might post a video of the heliquad here as it really is a large one.
All of the modes where you have control over the tail will use the same settings for your input to the tail. For auto modes like guided and auto, I believe the slew parameter is used to dictate how fast auto pilot can yaw the aircraft. The parameter is ATC_SLEW_YAW. You’ll probably want to set it to the same max rate that you can command with the stick.
No idea about a direct servo replacement to that Hitec beast (HS-1005SGT), what I have to ask, what the heck are you building that requires those mammoth sized servos? I ask because I am also a DIY builder (helis, heliquads, ETC), so I would love to see a picture of the beast that requires those sized servos.