\documentclass[10pt,a4paper]{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[margin=2cm]{geometry}
\author{Vitor Santos}
\usepackage{tikz}
\usetikzlibrary{positioning,calc,fit,backgrounds}
\begin{document}


\begin{tikzpicture}[node distance=1.75cm and 2cm,font={\footnotesize\sffamily}]
  \tikzset{
  	myB/.style={draw, align=center, text width=1.75cm, minimum height=1cm,fill=white},
  	myArr/.style={->, >=stealth},
  }
  
    \def\robotWdith{2.25cm} %adjust to control the size of robot images
    % Define the blocks and their positions
    \node [myB]               (opt)   {Trajectory Optimization};
    \node [myB,right=of opt]  (model) {Simplified Model};
    \node [myB,right=of model](ctrl)  {Whole Body Control};
    \node [myB,densely dashed,below=of model](robot) {Humanoid Robot};    
  
    % Define the arrows between the blocks
    \draw [myArr] (opt)   -- node[text width=2.5cm,align=center]{Desired\\DCM} (model);
    \draw [myArr] (model) -- node[text width=2.5cm,align=center]{Desired\\CoM Velocity} (ctrl);
    \draw [myArr] (opt.north) -- ++(0,14pt) -| node [above, pos=0.25]{Feet Pose} (ctrl);
  	\draw [myArr, <->] (ctrl) |- node [below,pos=0.75] {Joint Velocity} node [above,pos=0.75, text width=4cm,align=center] {Joints \& CoM Velocity \\ Contact Wrenches} (robot);
    \draw [myArr] (robot) -- coordinate [midway] (robotdata) (model);
    
    %The blue block
    \node [draw,blue, inner sep=4pt, at=(robotdata),xshift=2cm] (PD) {EYC};  
    \draw [myArr,blue] (robotdata) -- node[align=center]{Yaw\\Angle} (PD);
    \draw [myArr,blue] (PD) -| node[align=center,pos=0.25]{Desired\\Yaw}  (ctrl.230);

 	% The outer control unit block
 	\begin{scope}[on background layer]
 	\coordinate[at=(opt.north west),yshift=+25pt] (topL);   
 	\coordinate[at=(robot.south),yshift=-5pt] (bottomM);   
    \node [fit=(topL)(ctrl.east)(bottomM), draw, ultra thick,fill=gray!5] (CU) {};
    \node [anchor=south west, at=(CU.north west)] {\textbf{Control Unit}};
    \end{scope}
     	
	%Define the robot blocks and their labels
    \node [draw,inner sep=1pt,densely dashed,at=(CU.north west),xshift=-4pt,anchor=north east](iCub) {\includegraphics[width=\robotWdith] {iCub.PNG}};
    \node[draw,inner sep=1pt,densely dashed,at=(CU.north east),xshift=4pt,blue,anchor=north west](NAO) {\includegraphics[width=\robotWdith] {NAOandITshoes.PNG}};
    \node [at=(iCub.north),anchor=south] {\bfseries{iCub}};
    \node [at=(NAO.north),anchor=south]  {\bfseries{NAO+ITShoes}};
 
    %Connections from robots to humanoid block
    \coordinate [at=(robot.south),yshift=-18pt] (belowbottomM);   
    \draw [densely dashed]      (iCub.south) |- (belowbottomM) -- (robot.south);
    \draw [densely dashed,blue] (NAO.south)  |- (belowbottomM) -- (robot.south);
    
\end{tikzpicture}
 

\end{document}