This example shows how you can annotate a technical drawing. The three link manipulator is the same as another example in the gallery. I've used macros extensively to avoid duplicating code.
Edit and compile if you like:
\documentclass{article} \usepackage[latin1]{inputenc} \usepackage{tikz} \usetikzlibrary{patterns} \begin{document} \pagestyle{empty} % Note. This illustration was originally made with PSTricks. Conversion to % PGF/TikZ was straightforward. However, I could probably have made it more % elegant. % Define a variable as a length % Input: % #1 Variable name % #2 Value % % Example: % \nvar{\varx}{2cm} \newcommand{\nvar}[2]{% \newlength{#1} \setlength{#1}{#2} } % Define a few constants for drawing \nvar{\dg}{0.3cm} \def\dw{0.25}\def\dh{0.5} \nvar{\ddx}{1.5cm} % Define commands for links, joints and such \def\link{\draw [double distance=1.5mm, very thick] (0,0)--} \def\joint{% \filldraw [fill=white] (0,0) circle (5pt); \fill[black] circle (2pt); } \def\grip{% \draw[ultra thick](0cm,\dg)--(0cm,-\dg); \fill (0cm, 0.5\dg)+(0cm,1.5pt) -- +(0.6\dg,0cm) -- +(0pt,-1.5pt); \fill (0cm, -0.5\dg)+(0cm,1.5pt) -- +(0.6\dg,0cm) -- +(0pt,-1.5pt); } \def\robotbase{% \draw[rounded corners=8pt] (-\dw,-\dh)-- (-\dw, 0) -- (0,\dh)--(\dw,0)--(\dw,-\dh); \draw (-0.5,-\dh)-- (0.5,-\dh); \fill[pattern=north east lines] (-0.5,-1) rectangle (0.5,-\dh); } % Draw an angle annotation % Input: % #1 Angle % #2 Label % Example: % \angann{30}{$\theta_1$} \newcommand{\angann}[2]{% \begin{scope}[red] \draw [dashed, red] (0,0) -- (1.2\ddx,0pt); \draw [->, shorten >=3.5pt] (\ddx,0pt) arc (0:#1:\ddx); % Unfortunately automatic node placement on an arc is not supported yet. % We therefore have to compute an appropriate coordinate ourselves. \node at (#1/2-2:\ddx+8pt) {#2}; \end{scope} } % Draw line annotation % Input: % #1 Line offset (optional) % #2 Line angle % #3 Line length % #5 Line label % Example: % \lineann[1]{30}{2}{$L_1$} \newcommand{\lineann}[4][0.5]{% \begin{scope}[rotate=#2, blue,inner sep=2pt] \draw[dashed, blue!40] (0,0) -- +(0,#1) node [coordinate, near end] (a) {}; \draw[dashed, blue!40] (#3,0) -- +(0,#1) node [coordinate, near end] (b) {}; \draw[|<->|] (a) -- node[fill=white] {#4} (b); \end{scope} } % Define the kinematic parameters of the three link manipulator. \def\thetaone{30} \def\Lone{2} \def\thetatwo{30} \def\Ltwo{2} \def\thetathree{30} \def\Lthree{1} \begin{tikzpicture} \robotbase \angann{\thetaone}{$\theta_1$} \lineann[0.7]{\thetaone}{\Lone}{$L_1$} \link(\thetaone:\Lone); \joint \begin{scope}[shift=(\thetaone:\Lone), rotate=\thetaone] \angann{\thetatwo}{$\theta_2$} \lineann[-1.5]{\thetatwo}{\Ltwo}{$L_2$} \link(\thetatwo:\Ltwo); \joint \begin{scope}[shift=(\thetatwo:\Ltwo), rotate=\thetatwo] \angann{\thetathree}{$\theta_3$} \lineann[0.7]{\thetathree}{\Lthree}{$L_3$} \draw [dashed, red,rotate=\thetathree] (0,0) -- (1.2\ddx,0pt); \link(\thetathree:\Lthree); \joint \begin{scope}[shift=(\thetathree:\Lthree), rotate=\thetathree] \grip \end{scope} \end{scope} \end{scope} \end{tikzpicture} \end{document}
Click to download: three-link-annotated.tex • three-link-annotated.pdf
Open in Overleaf: three-link-annotated.tex