I would like to produce a block diagram similar to the image attached, but I can't get the adder blocks right. Is there a function/command to create a summer block with a plus and a minus in it. Also I would like to change the Ki and Kp block to a triangle if possible. any help would be great.
\documentclass[tikz,14pt,border=10pt]{standalone}
\usepackage{textcomp}
\usetikzlibrary{shapes,arrows}
\begin{document}
\tikzset{%
block/.style = {draw, thick, rectangle, minimum height = 3em,
minimum width = 3em},
sum/.style = {draw, circle, node distance = 2cm}, % Adder
input/.style = {coordinate}, % Input
output/.style = {coordinate} % Output
}
% Defining string as labels of certain blocks.
\newcommand{\suma}{\Large$+$}
\newcommand{\inte}{$\displaystyle \int$}
\newcommand{\derv}{\huge$\frac{d}{dt}$}
\begin{tikzpicture}[auto, thick, node distance=2cm, >=triangle 45]
\draw
% Drawing the blocks of first filter :
node at (-0.5,0) {$\theta_a$}
node at (0,0) [input,name=input1,thick,above]{}
node at (-0.5,-2.5) {$\omega_g$}
node at (0,-2.5) [input,name=input2,thick,above]{}
node at (1,0)[sum] (sum1) {}
node at (2,-0.15) (joint1) {}
node at (4,0) [block](inte1) {\inte}
node at (6,0) [block](ki){$K_i$}
node at (4,2) [block](kp){$K_p$}
node at (7.5,0)[sum] (sum2) {}
node at (8.5,0)[sum] (sum3) {}
node at (10,0) [block](inte2) {\inte}
node at (11,0.15) (joint2) {}
node at (11,-1.5)(joint3) {}
node at (11.5,0) (out) {}
node at (12,0) {$\theta_f$};
% Commands \draw with options like [->] must be written individually
\draw[->](input1) -- node {}(sum1);
\draw[->](sum1) -- node {} (inte1);
\draw[->](joint1) |- node {} (kp);
\draw[->](inte1) -- node {} (ki);
\draw[->](ki) -- node {} (sum2);
\draw[->](kp) -| node {} (sum2);
\draw[->](input2) -| node {} (sum3);
\draw[->](sum2) -- node {} (sum3);
\draw[->](sum3) -- node {} (inte2);
\draw[->](inte2) -- node {} (out);
\draw(joint2) -- node {} (joint3);
\draw[->](joint3) -| node {} (sum1);
\end{tikzpicture}
\end{document}

