\begin{tikzpicture}
  \node[branch] (x) at (0, 0);
  \node[addb, above right=0.8 and 4 of x](add1){};
  \node[addb, below right=0.8 and 4 of x](add2){};
  \node[block, above left=0.2 and 0.1 of add1](delta1){$\Delta_1(s)$};
  \node[block, above left=0.2 and 0.1 of add2](delta2){$\Delta_2(s)$};
  \node[block, left=0.5 of delta1](W1){$w_1(s)$};
  \node[block, left=0.5 of delta2](W2){$w_2(s)$};
  \node[block, right=0.5 of add1](H1){$H_1(s)$};
  \node[block, right=0.5 of add2](H2){$H_2(s)$};
  \node[addb, right=6 of x](add){};

  \draw[] ($(x)+(-0.7, 0)$) node[above right]{$x$} -- (x.center);
  \draw[->] (x.center) |- (add1.west);
  \draw[->] (x.center) |- (add2.west);
  \draw[->] ($(add1-|W1.west)+(-0.5, 0)$)node[branch](S1){} |- (W1.west);
  \draw[->] ($(add2-|W2.west)+(-0.5, 0)$)node[branch](S1){} |- (W2.west);
  \draw[->] (W1.east) -- (delta1.west);
  \draw[->] (W2.east) -- (delta2.west);
  \draw[->] (delta1.east) -| (add1.north);
  \draw[->] (delta2.east) -| (add2.north);
  \draw[->] (add1.east) -- (H1.west);
  \draw[->] (add2.east) -- (H2.west);
  \draw[->] (H1.east) -| (add.north);
  \draw[->] (H2.east) -| (add.south);
  \draw[->] (add.east) -- ++(0.7, 0) node[above left]{$\hat{x}$};

  \begin{scope}[on background layer]
    \node[block, fit={($(W1.north-|S1)+(-0.2, 0.2)$) ($(add1.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor1) {};
    \node[above right] at (sensor1.south west) {Sensor 1};
    \node[block, fit={($(W2.north-|S1)+(-0.2, 0.2)$) ($(add2.south east)+(0.2, -0.3)$)}, fill=black!20!white, dashed, inner sep=0pt] (sensor2) {};
    \node[above right] at (sensor2.south west) {Sensor 2};
  \end{scope}
\end{tikzpicture}
