How to kill yaw control loop

Hi guys, I’m setting up an unconventional platform set up as an octaquad-plus using Ardupilot 4.5, and I need to kill both inner and outer YAW control loops. I tried to lower the P of both loops, but there’s a bottom line at the minimum: I can’t set P to be zero. How to do that?

The reason of my need is that this is an EDF VTOL platform, and for the moment I need to control the yaw using a servo which moves a fin (directly controlled via RC), and I need the autopilot to avoid any yaw reaction on the fans RPM.

So, is there a way to kill the yaw control loops?

Thank you so much!

Just a hunch, but I doubt that you can disconnect yaw from your control loop as it’s interconnected with the other attitude factors.

Have a look at VTOL vectored yaw:

https://ardupilot.org/plane/docs/guide-tilt-rotor.html

Hi all, I had a look but I couldn’t find what I needed. I mean, I could find a way to set a servo for the yaw by tilting a motor, but will this means that the yaw loop won’t touch anymore the motors RPM?

Any more direct way to just kill the loop itself? It would be quicker for me in this development phase.

Use that servo to tilt your control surface. I’m reasonably certain that vectored yaw expects an aerodynamic effect vs a torque moment for yaw control.

THAT’S a lot quicker than a source code change.

Hi @maxscali,

You can override the parameter limits using Mission Planner’s full parameter tree screen. I think if you set all the gains to zero then you’re basically disabling the yaw controllers.

1 Like

Great, thank you all! I will try to override and kill the loop, and if this doesn’t work I will try with the vectored trick!

Let us know how it works out, curious how well the autopilot handles yaw-less operation.

Will do! Thanks once more

Hey guys, just done a few tests by setting the yaw loops P to zero (both angle and rate), using the full parameter tree screen.

Yaw is effectively killed, but the behaviour looks somehow random and hard to figure out.

I’m attaching 3 logs, made with yaw P angle and rate set to 0, than set respectively to 0.1 and 0.001 (just to have a non 0 value), and finally set to the minimum acceptable values (3 and 0.10).

Honestly, however, I probably need more help here: there’s something that I cannot figure out in any of these logs.
Just to recap, this is an unconventional EDF VTOL platform (8 EDF pushing downwards, 2 side by side in the nose, 2 side by side in the right wing, 2 side by side in the left wing, and 2 side by side in the bottom), now flying tethered to a hook for safety reasons. The strange thing is that it keeps attitude quite well with current parameters, but responds to the RC inputs very bad.
Pitch and roll seem somehow mixed up, sometimes even reversed… Really can’t figure out what’s the point here.

Here for example:
we’re in AltHold, and DesPitch shall follow RCinput3 (violet shall follow green), but you can see some movement even when touching RCinput1 (roll): [log 20-13-17, with yaw P set to 0.1]

or here, violet shall follow green, but: [log 20-04-58, with yaw P set to default minimum values]

or here, different problem: desired roll and actual roll - how’s that once the actual roll follows the desired, and a second after it doesn’t exactly the opposite???
Even if not commanded, also the actual pitch worked in 2 different directions in the 2 cases [log 20-00-18, with yaw P set to zero]:


Shall I open a new post for this?
I can’t see any link between this behaviour and the tether, and not even with the yaw, since one of the strange behaviours was with normal values.

Maybe one of you guys could help figuring out this strange behaviours, and suggest new parameters to try for a better tuning on roll and pitch.

Thank you so much to anybody willing to help!

Here’s the logs and parameters file:
https://www.dropbox.com/scl/fo/atjo5sc55t3t6s42t5ctr/AKzfqTfxypUmChRb8pcpkWo?rlkey=nx0gf4uxrpsiqx3435qo53udx&dl=0

Would it be very complex to disconnect your EDF and use it as regular octocopter with yaw enabled? Just to have a control scenario.

It’s truly impossible due to the available dimensions… It would be interesting but I cannot help you to help me in that way, sorry.

Anybody has any ideas?

I think what you are observing is normal considering the yaw axis in your setup is randomly handled (I.e not under autopilot yaw control). If you look closely, when you observed “mixing” of control inputs, desired pitch matches measured roll. This happens whenever actual yaw deviates too much from desired yaw (compatible with an uncontrolled yaw axis)- think of it as a “virtual” frame rotation.

2 Likes

Agree with @Ferrosan . Small amounts of Yaw input result in spinning desired Yaw. Mixing is happening live.

I think you need Yaw authority from something. Vectored motors, control surface, something.

1 Like

Thank you so much guys! I expected this kind of things to depend on the current yaw, not on the error between desired and current - but from the logs it’s clear that you’re perfectly right.

Actually I do have a control surface for yaw, but it is manually controlled at the moment, so the autopilot doesn’t know about that. I didn’t want to have the autopilot control it just because I’m on a copter fw right now, while in order to let the autopilot control that surface (and not the rpm of the EDF) I probably need to switch to a plane fw, than enable the Q parameters. Right?

It all started on copter because the idea was to let the autopilot control the platform like a normal copter, but yaw control via regular rpm control with EDF turned out to be impossible.

not necessarily, with LUA scripting you can control pretty much everything you want

1 Like

Good to know! I will start studying on this and see how far I can go. Thank you so much for your help!

2 Likes