Recently, I have found a paper which applies different linear and nonlinear controllers on quadrotor. So, I have started to read and apply it.

1. I created Matlab simulation for my quadrotor

I have been successful in applying both of the aforementioned steps. I can say that based on the plots of mine in Matlab and the plots of the paper. I understood the derivation of the dynamics of the quadrotor, its linearization and construction of the LQR controller. However, one thing I didn't understand is while I can control my quadrotor perfectly along x, y, z translational directions and yaw (z) rotational direction, I cannot control it around x and y (roll and pitch) directions. The quadrotor becomes unstable and does stupid things. I referred the plots of the paper, but interestingly the author of the paper mentioned the plot of only yaw, but not roll and pitch. I checked the controllability of the system by using A and B matrices I got from linearization of the dynamics and the controllability matrix is full matrix. So, the system is controllable and I should be able to control it in every direction. In conclusion, I would like to learn what I am missing and I need your help for that. Thank you very much :)

(I added some related equations in any case)

• Can you elaborate on: "The quadrotor becomes unstable and does stupid things"? Did you apply the linearized controller to the nonlinear or linearized model? Normally LQR only drives all states to zero, did you try to add any reference tracking feedback control? Commented Nov 14, 2020 at 1:11
• Thank you for your reply. I have found nonlinear dynamics of the quadrotor which contains sines and cosines. Then I have linearized it by assuming small angle, namely assumed cosines as 1 and sines as 0. Then I found A and B, by taking partial derivative of this linearized dynamics. During control I gave reference point for x, y, z (translational) and for yaw angle and quadrotor reach desired values. However, when I give desired values for pitch or roll it starts to deviate from setpoints and become unstable.
– BHOS
Commented Nov 14, 2020 at 10:04
• Additionally I thought that the reason can be that the quadrotor has 4 inputs (4 motors), but 6 DOF (x,y,z,roll,pitch,yaw). So, I can only control 4 parameters. Is it possible?
– BHOS
Commented Nov 14, 2020 at 10:06

When a system is (locally) controllable does not mean that you can hold that system at a constant state. Instead, controllability only requires that one can bring a system to any state for only one instance. For example a double integrator, $$\ddot{x} = u$$, can be held a constant position $$x$$ with $$\dot{x}=0$$, but when trying to hold it at a constant velocity then the position will change linearly with time. However, it is possible to bring the double integrator to any position and velocity simultaneously, but only at one moment in time.