In the past, I may use ramp and saturation in order to reach the non-zero reference (or, actually, tracking). I know this is not a good one, but it works. During the study of MPC, it’s quite good to have an opportunity for a proper tracking analysis.

Table of Contents

  1. I. Simple solution
  2. II. Non-zero constant reference control
  3. III. Incremental input control

I. Simple solution

In terms of normal reference control, a traditional method was to introduce the error, and augmented the term into system matrices. And by minimizing the cost function with respect to error, that is $C_{a}x_{a}$. This method takes the $x_d$ into account when getting a optimal solution. However, in some cases, steady state error exists (Considering the optimal control solution may comes with sacrifices in states), e.g. a Mass-Spring-Damper system, to keep it in a certain position, extra force is required, but the required force does not satisfy the optimal principle.

Cost function under this case is:

  • Here the augmented matrix is defined as $\left[\begin{array}{cc}A&0\\0&I\end{array}\right]$

II. Non-zero constant reference control

Assume that when the system reaches $x_d$ and stabilized, and $A_d=I$.

Hence

Note that $B$ may be singular, so it may does not have inverse. We define the state error as

Define steady-state error of input as

So naturally, compensate it, $u= \delta u+u_d$, substitute it into the regular discrete ss-representation,

Define a new augmented matrix

error could be obtained with $e = C_a\,x_a$, let $C_a^\intercal Q\,C_a=Q_a,\,\,\,C_a^\intercal S\,C_a=S_a$, thus establish a new cost function:

Here, $\delta u$ is selected as the cost, so the term $\delta u^\intercal\,R\,\delta u$ does not purse the lowest energy consumption, but to maintain the input around $u_d$.


III. Incremental input control

It is said that for tracking control, this is more flexible. The input increment is defined as

Adopt $u_k$ as one term of the cost will influence the rate of input, which results a smoother control, avoiding the system changes rapidly. Substitute new input form into the system, we have

Set cost function as

Define the new augmented matrix

So the performance index could be written as

This method could effectively reduce the overshoot in the system. However, for complicated matrix computations, I doubt if it will slow down too much of the process. e.g. the during the MPC calculation.


After comparison, it is clear that these weights differed, however, some construction cannot be directly solved by matlab lqr or dlqr, which raises questions. Indeed, I have not previously controlled too many systems like MSD, which requires additional force to stablize at non-zero position.

Naturally, different $x_d$ does not affect the calculated gain.

Still, this part mainly includes the basic part for different tracking needs, which does not concern the tracking of distant position. That requires upper level of planning.