If the Quadcopter is a MIMO Nonlinear System, How Can it be Controlled using PID?

I know that it is very common to control quadcopters using PID algorithms. I'm just wondering if it isn't a problem that the system is highly nonlinear as well as having multiple inputs and outputs. Does the model need to be linearized so that PID algorithms can be used?

• I'm voting to close this question as off-topic because it’s more associated with programming and not Aviation per se. Mar 25 '18 at 16:42
• @CarloFelicione How is this programming? This is control theory! Jun 10 '18 at 18:33
• As others have pointed out, MIMO and PID are not exclusive. More to the point, a quadcopter is not really what I think of when discussing the complexities with MIMO. The multirotor is more like a bunch of fully decoupled SISO systems running in parallel. Jun 29 '21 at 3:55

If the Quadcopter is a MIMO Nonlinear System, How Can it be Controlled using PID?

Exactly as you mention later:

Does the model need to be linearized so that PID algorithms can be used?

Yes, that's correct.

To be a little more explicit, you need two things:

• linearise the system (usually around a so-called "working point", e.g. cruise conditions)
• de-couple the system (because a linearised MIMO is still a MIMO, you need a set of 4 SISOs)

Achieving the first is fairly simple, as I mentioned, you "only" have to select a working point. The second is instead a little more elaborate, and requires making assumptions on the flight conditions that will be encountered, plus it is not always possible, some vehicles have their dynamics so coupled that de-coupling is not an option (and thus simple PIDs tend to be not a viable option if you have to tune them manually).

You can use PID algorithms to control quite complex systems. After all, it's just a feedback system, which in itself is a robust concept. The problem is rather to control them in an optimal manner; or in other words, how to select the best gains.

All classic methods of gain selection require linearisation of the system around a certain point (flight condition), or multiple points with gain scheduling. But nothing prevents you from tinkering the control system randomly until it works.

This latter is not as stupid as it sounds. Various genetic algorithms have been shown to optimise PIDs for complex non-linear/MIMO systems very successfully.