## EWOK: An Interactive Program to Synthesize Four-Bar Linkages

Theodore B. Ruegsegger

### What’s a Four-Bar Linkage?

A major objective in many branches of engineering is constraining
motion: we want a tool, a conveyance, a sensor, a prosthetic limb,
whatever, to move in a certain way and no other. We have many ways to
accomplish this, among which are *mechanisms*, arrangements of
connected parts that move, transforming one motion into another.
Mechanisms vary widely in complexity (and cost). Among the simplest
are *linkages*, whose parts are connected with pivots and sliding
joints. Since we’re very good at mass-producing inexpensive, precise,
long-lasting bearings for rotation or linear motion, linkages have
obvious advantages over, say, cams or hydraulic actuators.

A *four-bar linkage* is among the simplest linkages, a closed chain of
rigid *links*, connected by pivots, that move in a plane (or parallel
planes). One link is generally fixed in space, the two attached to the
fixed link are *cranks* and the link connecting the cranks is the
*coupler*. A common variation occurs when a crank’s attachment to the
fixed plane is (conceptually) very far away, effectively at infinity,
in which case the coupler end moves in a straight line; in practical
terms, a sliding joint or *slider* replaces a crank.

The motion of a four-bar linkage’s coupler is complex, as two points a fixed distance apart have their motion constrained to a circle (in the case of a crank) or a straight line (in the case of a slider). That said, it yields readily to mathematical analysis.

The reverse problem, synthesizing a four-bar linkage to guide the
entire coupler (vs. just a point on the coupler) through a prescribed
motion, is more tricky. It turns out that we can specify up to five
specific *precision positions* of the coupler and design a linkage
that will move the coupler through each position. Four- and
five-position synthesis is mathematically complex and produces
relatively few solutions, with no guarantee that any will be
practical. Two- or three-position synthesis is much simpler and
produces effectively infinite solutions from which to choose.

“Simpler” isn’t the same as easy or quick. In the old days, professional kinematicians spent long hours at the drafting table, laying out perpendicular bisectors and intersections of lines and circles, getting one solution at a time. And after finding a solution that, for one reason or another, doesn’t quite work, in which direction does a better solution lie?

Interactive computing has changed all that. Now we can specify the
precision positions and then add *centerpoints* (fixed pivots, the
ends of the cranks in the fixed plane), *circlepoints* (moving pivots,
the crank ends attached to the coupler) and *sliderpoints* (sliders
attached to the coupler but constrained to move in a straight line in
fixed space). The software instantly displays the locus of solutions.
As we move points, their counterparts (or loci) adjust in real time.

### What’s EWOK?

EWOK is an interactive graphic program for synthesizing four-bar linkages to produce specific coupler motions. You specify the coupler motion graphically as two or three precision positions, add circlepoints, centerpoints, and/or sliderpoints, and the program calculates the geometry of linkages whose couplers will pass through those positions.

Once you have a linkage designed, you can use the program to animate it, to see what happens between the precision positions.

EWOK should be quite useful as it is, not just for its current capabilities but as a platform for enhancements. I’m grateful for any feedback on bugs, ideas for new features, or even code updates or patches.

### System Requirements

EWOK works on any platform where Python and Tkinter work. I’ve tested
it on GNU/Linux, Windows 10 and Mac. If you’re running it on a Mac,
you need some way to right-click (actually right-click-and-drag),
either plugging in a mouse with more than one button or trying the
various methods to simulate a right click, e.g.,

https://macpaw.com/how-to/right-click-on-mac

### License

This collection of program code and documentation is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

This collection is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this collection; if not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.