I recently finished a project that simulated the dynamics and control of a 6DOF quadcopter model using a state-space LQR control approach, but I had a few questions that I wanted to ask that might help me develop the model further. From the literature, if we have a general nonlinear dynamical model of the form,

$$\dot{x}(t) = f(x(t),u(t))$$

then the "standard" approach to control engineering is to linearize the nonlinear system dynamics into the form,

$$\dot{x}(t) = Ax(t) + Bu(t)$$

where, $$A = \frac{\partial f}{\partial x}, \space B = \frac{\partial f}{\partial u}$$ are constant matrices that have been evaluated at an equilibrium state $x = x_{eq}$ and $u=u_{eq}$ (for a quadrotor this equilibrium state is a hover with pitch, roll and yaw equal to zero and control inputs being enough to counteract gravity). Once this is done, we can then use our $A$ and $B$ matrices to find the "optimal" LQR gain matrix $K$ by solving the Riccati equation (or equivalently using MATLAB's lqr function), and use this gain in a control law of the form $$u(t) = -K(x(t)-x_d(t))$$ to find our control inputs $u(t)$, that allow us to track a desired state trajectory $x_d(t)$ by applying $u(t)$ to our full nonlinear system dynamics $\dot{x}(t)=f(x(t),u(t))$.

This approach worked pretty well for the quadrotor simulation, but I was wondering why we're required to linearize our system dynamics about an equilibrium point. Wouldn't it also be possible to have a time-varying state-transition matrix $A(t)$ and time-varying control matrix $B(t)$, that would be computed using the same linearization process above, except that instead of linearizing about the hover equilibrium state we would linearize about our current state $x(t)$, which would then allow us to re-compute the LQR gain matrix at each time-step? This would then give us a time-varying gain matrix $K$, and would presumably give us better tracking capabilities since our next state $x(t+1)$ would be close to our previously linearized state. Any advice would be much appreciated, since I'm struggling to find out why linearization always occurs around static equlibrium points, and not about current states.

  • $\begingroup$ I assume you meant find $K$ using lqr, or first discretize the linearized system. Also in your equation for $u(t)$ shouldn't there also be a $u_d(t)$? $\endgroup$
    – fibonatic
    Commented Jul 22, 2018 at 12:23
  • $\begingroup$ Thanks for the catch fibonatic. I transformed the linearized $A$ and $B$ matrices into discrete form using c2dm and Tustin's approximation, and then used dlqr. With regards to $u_{d}(t)$, I don't have any feedforward control so $u_{d}(t) =0$ $\endgroup$
    – JeffR1993
    Commented Jul 22, 2018 at 18:36

2 Answers 2


The idea that you describe is basically Model Predictive Control with successive linearization (the optimization problem that is solved in MPC is finite-horizon while LQR is infinite-horizon, but the concept is still the same).

This requires a lot of computational power, because you need to be able to linearize the system and solve the optimization problem repeatedly at runtime, and every time faster than the time-step duration.

On the contrary, an LQR-controller is meant to be computed beforehand to give you an explicit control law that requires no big computations at runtime.


Sometimes linearisation about a non-equilibrium point leads to a result that does not conform with the nonlinear model. Thus if at some x(t) that is non-equilbrium we try to linearise, we may get incorrect answers.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.