\documentclass[border=12pt]{standalone}
\usepackage{tikz}
\usepackage{xcolor}
\usetikzlibrary{arrows.meta,positioning,fit,calc}
\definecolor{pagebg}{RGB}{247,247,250}
\begin{document}
\begin{tikzpicture}[
  font=\sffamily\small,
  >=Stealth,
  box/.style={draw=#1, fill=#1!12, line width=1.4pt, rounded corners=4pt,
    align=center, inner sep=7pt, minimum width=2.7cm, minimum height=1.35cm},
  sum/.style={draw=#1, fill=#1!15, circle, minimum size=0.72cm, inner sep=0pt, line width=1.3pt},
  lbl/.style={fill=white, inner sep=2pt, font=\sffamily\scriptsize},
  arr/.style={->, line width=1.15pt, draw=#1},
]
  \fill[pagebg] (-1.2,-1.0) rectangle (15.6,9.2);

  \node[font=\sffamily\bfseries\large] at (7.2,8.7) {Kalman Filter Block Diagram};

  % Prediction
  \node[box=blue!70!black] (pred) at (2.4,6.2)
    {\textbf{Prediction}\\$\hat{x}_{k|k-1}=F\hat{x}_{k-1|k-1}$\\$P_{k|k-1}=FP_{k-1}F^\top+Q$};
  \node[box=teal!70!black] (state) at (2.4,2.6)
    {\textbf{State estimate}\\$\hat{x}_{k|k}$, $P_{k|k}$};
  \node[box=orange!80!black] (meas) at (7.2,6.2)
    {\textbf{Measurement}\\$z_k = Hx_k + v_k$};
  \node[sum=green!50!black] (resid) at (7.2,4.0) {$-$};
  \node[box=green!50!black] (innov) at (10.4,4.0)
    {\textbf{Residual}\\$y_k=z_k-H\hat{x}_{k|k-1}$};
  \node[box=violet!70!black] (gain) at (10.4,1.8)
    {\textbf{Kalman gain}\\$K_k=P_{k|k-1}H^\top S_k^{-1}$};
  \node[box=red!65!black] (update) at (7.2,1.8)
    {\textbf{Update}\\$\hat{x}_{k|k}=\hat{x}+Ky$\\$P_{k|k}=(I-KH)P$};
  \node[box=gray!70!black, minimum width=1.8cm, minimum height=0.9cm] (delay) at (2.4,0.4)
    {$z^{-1}$};

  % arrows
  \draw[arr=blue!70!black] (state.north) -- node[lbl, left] {prior cycle} (pred.south);
  \draw[arr=blue!70!black] (pred.east) -| node[lbl, near start, above] {$\hat{x}_{k|k-1}$} (resid.north);
  \draw[arr=orange!80!black] (meas.south) -- (resid.north);
  \draw[arr=green!50!black] (resid) -- (innov);
  \draw[arr=green!50!black] (innov.south) -- (gain.north);
  \draw[arr=violet!70!black] (gain.west) -- (update.east);
  \draw[arr=blue!70!black] (pred.south) |- ++(0,-1.0) -| node[lbl, near end, right] {predicted} (update.north);
  \draw[arr=red!65!black] (update.west) -| (state.south);
  \draw[arr=gray!70!black] (state.south) -- (delay.north);
  \draw[arr=gray!70!black] (delay.east) -| ++(1.6,0) |- node[lbl, near start, below] {feedback} (pred.west);

  \node[font=\sffamily\scriptsize, text=black!55, align=left] at (13.8,7.8)
    {Legend\\Prediction $\to$ prior\\Update $\to$ posterior\\Residual $\to$ innovation};
\end{tikzpicture}
\end{document}
