Im quite new learning tikz, it rocks!. Well, Im trying to get the following block diagram working, but having kinda trouble:

And this is what I got so far:
\documentclass[12pt,a4paper]{article}
\usepackage{tikz}
\begin{document}
\begin{figure}
\begin{center}
\begin{tikzpicture}[arr/.style={->,thick}, line/.style={thick},
nonterminal/.style={rectangle, minimum size=12mm, very thick, draw=black!50!black!50, top color=white, bottom color=blue!50!black!20}, >= triangle 90, font = \small
]
\matrix[row sep=20mm,column sep=5mm] {
% First row:
\node (ic) [nonterminal] {$\begin{array}{cc}Impedance\\control \end{array}$}; &
\node (id) [nonterminal] {$\begin{array}{cc}Inverse\\dynamics \end{array}$}; &
\node (rme) [nonterminal] {$\begin{array}{cc}Robot \: manipulator\\and \: environment \end{array}$}; & \\
% Second row:
& \node (dk) [nonterminal] {$\begin{array}{cc}Direct\\kinematics \end{array}$}; & \\
};
\draw [->] (ic) -- (id) node[pos=0.5, above] {$\alpha$};
\draw [->] (id) -- (rme) node[pos=0.5, above] {$\tau$};
\draw [->] (rme.15) -- ++ (1.8,0) node[pos=0.3, above, yshift = -2] {$h_{e}$} -| ++ (0,-5) -| (ic.230);
\draw [->] (rme.0) -- ++ (1.2,0) node[pos=0.4, above, yshift = -2] {$q$} -| ++ (0,-3.50) -- (dk.-10);
\draw [->] (rme.-15) -- ++ (0.6,0) node[pos=0.8, above, yshift = -2] {$\dot{q}$} -| ++ (0,-2.50) -- (dk.10);
\draw [->] (dk.170) -- ++ (-1,-0) node[pos=0.5, above, yshift = -3] {$p_{e} \, R{e}$} -| (ic.310);
\draw [->] (dk.190) -- ++ (-1.4,-0) node[pos=0.7, above, yshift = -3] {$v_{e}$} -| (ic.270);
\end{tikzpicture}
\end{center}
\end{figure}
\end{document}
Well there are a couple of things, I don´t know how to do:
1) How to make double lines on the text inside the boxes for better fitting?
Solved, with arrays for multilines. Is there another way to do this?
2) How do I properly draw the lines and arrows?
Still need to draw left and right arrows for the first and last block...
3) How to place text?
Kinda solved.
I appreciate all of your answers.
