How to periodically estimate states of a LTI if the output is measured irregularly?

51 Views Asked by At

How can I periodically estimate the states of a discrete linear time-invariant system in the form $$\vec{x}(k+1)=\textbf{A}\vec{x}(k)+\textbf{B}\vec{u}(k)$$ $$\vec{y}(k)=\textbf{C}\vec{x}(k)+\textbf{D}\vec{u}(k) $$if the measurements of its output $y$ are performed in irregular intervals? (suppose the input can always be measured).


My initial approach was to design a Luenberger observer using estimates $\hat{\textbf{A}}$, $\hat{\textbf{B}}$, $\hat{\textbf{C}}$ and $\hat{\textbf{D}}$ of the above mentioned matrices, and then update it periodically every $T_s$ seconds according the following rule:

If there has been a measurement of $y$ since the last update: $${\hat{x}}(k+1)=\hat{\textbf{A}}\hat{x}(k)+\hat{\textbf{B}}\hat{u}(k)+\textbf{L}(y_{measured}-\hat{\textbf{C}}\hat{x}(k))$$ If not: $$\hat{x}(k+1)=\hat{\textbf{A}}\hat{x}(k)+\hat{\textbf{B}}\hat{u}(k)$$

(I have omitted the superscript arrows for clarity)

I believe that there may be a better way to do this, since I'm updating the observer using an outdated measurement of $y$ (which is outdated by $T_s$ seconds in the worst case).

Thank's in advance.

2

There are 2 best solutions below

0
On

Your approach is rational. This is very fundamental to observer design. You trust your model until you have a measurement and use output correction whenever the output is available. This is what is done when measurement arrives irregularly over a communication channel. A real life example of this is in inertial navigation during GPS signal outage due to obstruction by building. Whenever you do not have access to GPS you trust the model and integrate it. This leads to accumulation of errors which you hope would be compensated for when the next update is available.

Another interesting facet of your question is if we have measurements coming at different sampling rates. In this case you have multiple update equations with different observer gains for each of them and you switch between these update equations based on which measurement has arrived.

0
On

First of all you need to update your model to include the sampling time. For example you can get matrices like

$$ \begin{align*} x(k+1) &= A(T) x(k) + B(T) u(k) \\ y(k) &= C x(k) + D u(k) \end{align*} $$

This is easy if you are obtaining the discrete model from the continuous model. Now if you somehow know when the next measurement will be taken (assuming $T$ time from now), you can predict the next state as

$$\hat{x} (k+1) = A(T) \hat{x}(k) + B(T) u(k) + L(T) (y(k) - C \hat{x}(k))$$

If you don't know when the measurements are taken, whenever you get a measurement at time $t$, calculate $T = t - t_o$, where $t_o$ is the time of the previous measurement. Then you can estimate the current states using $T$ and the previous measurement as

$$\hat{x} (k) = A(T) \hat{x}(k-1) + B(T) u(k-1) + L(T) (y(k-1) - C \hat{x}(k-1))$$

and save $y(k)$ (the measurement taken at time $t$) for estimating the states at the next measurement time. This $\hat{x}(k)$ is the estimation of where the states should be, provided the $y(k-1)$ is known and $T$ time has passed.

Here, $L(T)$ can be calculated symbolycally (with respect to $T$) for a specified design criterion, e.g. eigenvalue assignment.