One of the nicest things about programming illustrations, is that it's easy to change parameters. In this example I've parameterized a three link manipulator using a macro. I can then draw the manipulator in different positions with just one line of code.
Do you have a question regarding this example, TikZ or LaTeX in general? Just ask in the
LaTeX Forum.
Oder frag auf Deutsch auf TeXwelt.de.
En français: TeXnique.fr.
\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
\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}
% 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);
}
% This macro draws a three link manipulator.
% Input parameters:
% #1 theta_1
% #2 L_1
% #3 theta_2
% #4 L_2
% #5 theta_3
% #6 L_3
%
% Example:
% \threelink{60}{2}{-70}{2}{30}{1}
\newcommand{\threelink}[6]{%
\robotbase
\link(#1:#2);
\joint
\begin{scope}[shift=(#1:#2), rotate=#1]
\link(#3:#4);
\joint
\begin{scope}[shift=(#3:#4), rotate=#3]
\link(#5:#6);
\joint
\begin{scope}[shift=(#5:#6), rotate=#5]
\grip
\end{scope}
\end{scope}
\end{scope}
}
\begin{tikzpicture}
\threelink{60}{2}{-90}{2}{-60}{1}
\begin{scope}[xshift=4cm]
\threelink{60}{2}{-110}{2}{90}{1}
\end{scope}
\begin{scope}[shift={(2cm, -3.2cm)}]
% Illustration of two different solutions to the inverse kinematic
% problem.
\begin{scope}[dashed]
\threelink{-10}{2}{70}{2}{-40}{1}
\end{scope}
\threelink{60}{2}{-70}{2}{30}{1}
\end{scope}
\end{tikzpicture}
\end{document}
Comments
Adding comments is currently not enabled.