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.
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.