Robustness is always an issue in control theory. For simple P-controllers, you only need to chose the perfect gain to have a robust controller.

But for more advanced controller, such as MPC(Model Predictive Control) or ILC(Iterative Learning Control), which are two important control methods who are used in industry and robotics.

I going to build a MPC controller by minimizing the LQR cost function without constraints.

Assume that we have our discrete state space model:

$$x(k+1) = Ax(k) + Bu(k) \\ y(k) = Cx(k) + Du(k)$$

And we want to find the future states and compute a good control law for our system which fits the reality.

We use our prediction matrices.

$$F = \begin{bmatrix} A\\ A^2\\ A^3\\ \vdots \\ A^{N_p} \end{bmatrix} , \Phi = \begin{bmatrix} B &0 &0 &\cdots & 0\\ AB & B & 0 & \cdots & 0\\ A^2B& AB & 0 &\cdots &0 \\ \vdots & \vdots & \vdots & \vdots &\vdots \\ A^{N_p-1}B & A^{N_p-2}B & A^{N_p-3}B & \cdots & A^{N_p-N_c}B \end{bmatrix}$$

$N_p$ is the predict horizon and $N_c$ is the control horizon. See them as tuning parameters.

They will fit into the equation:

$$X = Fx(0) + \Phi U = [{x(1), x(2), x(3), x(4), ... , x(k+1)}]^T$$

Where $x_p$ is the predicted state vector of the system and $x(0)$ is the initial state vector(were the system are right now). The variable $U$ is a vector of input signals vectors i.e

$$U = [{u(0), u(1), u(2), u(3), ... , u(k)}]^T$$

I going to minimize the LQR cost function:

$$J = X^TQX + U^TRU$$

Where $Q$ and $R$ are tuning matricides. Those will be quite large if $X$ and $U$ are high dimensions vectors. Noice that I've not using no summation sign here becuase $X$ and $U$ is vectors who contains vectors.


$$J = [Fx(0) + \Phi U]^TQ[Fx(0) + \Phi U] + U^TRU$$ $$J = [Fx(0) + \Phi U]^T[QFx(0) + Q\Phi U] + U^TRU$$ $$J = [(Fx(0)^T + (\Phi U)^T][QFx(0) + Q\Phi U] + U^TRU$$ $$J = QFx(0)Fx(0)^T(\Phi U)^T + Q\Phi UFx(0)^T(\Phi U)^T + U^TRU$$

Then we minimize $J$ with respect on $U$

$$\frac{\partial J}{\partial U} = 0$$ Which results:

$$\frac{\partial J}{\partial U} = Q\Phi Fx(0)^T(\Phi U)^T + U^TR = 0$$

Now I need to compute $U$ but I don't know how to handle this problem $(\Phi U)^T$.

Anyway! This is MPC - Model predictive controller.


My questions are general: What should I look at for creating a robust controller?

Should I use frequency analysis of a state space model to see at what frequency of disturbance will effect the output of the system most?

Should I use simulation analysis by setting up the model in Simulink or OpenModelica and simulate the model with a chosen disturbance and see how it goes?

Should I dig into deep theory to find the perfect factor to multiply with the control law or the input signals for receiving the robust behavior for the controller?

The robustness lays on how I tune in the controller. So in my opinion, I don't need to look at frequency analysis or read heavy reports how to find the best factor. All I need to do is a simple "try-and-see-what-is-going-to-happen"-simulation?

Notice that I build controllers(right now it's only PID's) and apply them into real world. So I only focus on controller who fits the reality(and works) such as MPC for process control, ILC(Iterative Learning Control) for robotics control and PID for simple general SISO systems.

If you wonder what ILC is, it's just a simple feed forward controller for the disturbance with memory of past disturbances.

enter image description here

  • $\begingroup$ When you want to have robust control you should always also with respect to what. For example with respect to certain model uncertainties or disturbance uncertainties. $\endgroup$ – Kwin van der Veen Apr 12 '18 at 21:38
  • $\begingroup$ Any suggestions how? Change controller to frequency domain controller such as H2 or H-inf controllers? $\endgroup$ – Daniel Mårtensson Apr 13 '18 at 7:09
  • $\begingroup$ Or just try and see whats going to happen? $\endgroup$ – Daniel Mårtensson Apr 13 '18 at 7:16
  • $\begingroup$ For H2 or H-inf you still have to specify the model uncertainties or spectrum of disturbances. So could you be more specific what kind of robustness you want your controller to have. $\endgroup$ – Kwin van der Veen Apr 13 '18 at 13:00
  • $\begingroup$ I want to have a controller who is robust from impulse disturbances. The only solution is to simulate a impulse signal as a disturbance and "see how it goes"? $\endgroup$ – Daniel Mårtensson Apr 13 '18 at 16:16

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.