Linkages and mechanisms
Mechanisms you can play with — an animated four-bar linkage with the Grashof check, its type, the coupler curve and the transmission angle; slider-cranks with stroke and quick return; disc cams with uniform, harmonic, cycloidal and 3-4-5 motion, pressure angle and undercut check; a 2- or 3-link robot arm you drag by the hand, with both inverse-kinematics solutions; and differential-drive kinematics and odometry for small robots.
Added
How to use it
Lengths are in millimetres or inches (the Units switch at the top, remembered). Every drawing
animates — Pause it and drag the angle slider to step through by hand. ⛶ Full screen (or f)
gives the drawing the whole window; ☰ Inputs and Readouts ◨ hide the panels so the drawing goes
edge to edge, and Escape leaves.
Four-bar
Enter the crank a (the input, pivoted at O₂), the coupler b, the rocker c (the output, pivoted at O₄) and the ground link d between the pivots. The tool reports:
-
Grashof condition — with s the shortest and l the longest link, and p, q the other two, s + l < p + q means at least one link can turn fully. Which link is shortest then decides the type (Barker’s classification): shortest link the crank → crank–rocker; the ground → double-crank (drag link); the coupler → double-rocker; the rocker → rocker–crank. If s + l > p + q nothing turns fully (a triple-rocker); if they are equal it is a change-point linkage that passes through a flat position where it can flip between assemblies.
-
Input range and output swing — for a rocking input, the limits where the coupler and rocker line up (found by bisection).
-
Transmission angle μ, between coupler and rocker at B. Its extremes for a crank–rocker fall where the crank lines up with the ground: cos μ = (b² + c² − (d ∓ a)²) ÷ 2bc. Keep μ between about 40° and 140° for a smooth-running linkage.
-
Angular velocities at the crank speed you give: ω₃ = aω₂ sin(θ₄ − θ₂) ÷ (b sin(θ₃ − θ₄)), ω₄ = aω₂ sin(θ₂ − θ₃) ÷ (c sin(θ₄ − θ₃)), and the speed of the coupler point.
-
Coupler curve — the path of point P, placed u along AB from A and v to its left. Hoeken’s linkage (
example=hoekens) traces a nearly straight line over part of its path, the basis of many walking-robot legs. Open and crossed are the two ways the loop can close for the same crank angle.
Slider-crank
Crank radius r, rod l and offset e of the slider’s line from the crank centre. Position x = r cos θ + √(l² − (r sin θ − e)²); stroke = √((l + r)² − e²) − √((l − r)² − e²) — exactly 2r with no offset. With an offset, the forward and return strokes take different crank angles, giving the quick-return ratio. Velocity and acceleration curves are for the crank speed you give; at top dead centre the acceleration is rω²(1 + r/l), so a shorter rod means harsher motion.
Cams
A disc cam turning anticlockwise with a translating roller follower (a roller radius of 0 is a knife edge), offset e to the right. Program: rise h over one angle, dwell, return over another, then dwell for the rest of the turn. Motion laws:
-
Uniform velocity — infinite acceleration at the ends (jerky; slow cams only).
-
Simple harmonic — peak velocity πh/2β; the acceleration jumps at the ends of the rise.
-
Cycloidal — zero acceleration at both ends; peak velocity 2h/β and acceleration 2πh/β².
-
3-4-5 polynomial — s = h(10t³ − 15t⁴ + 6t⁵); peak velocity 1.875h/β.
Pressure angle — the angle between the follower’s line and the contact normal: tan φ = (ds/dθ − e) ÷ (s + √(Rp² − e²)), with the prime circle Rp = base circle + roller. Keep it under about 30° for a translating follower; a bigger base circle (or an offset) lowers it. Undercut is flagged where the pitch curve bends tighter than the roller radius: the follower cannot follow the motion there. Formulas from Norton, Design of Machinery, ch. 8, and Rothbart, Cam Design Handbook.
Robot arm
A planar arm with two links (shoulder and elbow, like a SCARA) or three (adding a tool link held at angle φ). Drag anywhere in the drawing to move the hand — inverse kinematics — or move the joint sliders — forward kinematics. For two links, cos θ₂ = (x² + y² − L₁² − L₂²) ÷ 2L₁L₂ and θ₁ = atan2(y, x) − atan2(L₂ sin θ₂, L₁ + L₂ cos θ₂); the ± in θ₂ gives the elbow-up and elbow-down solutions, both listed (the other is drawn faintly). For three links the wrist is solved first, at the target minus L₃ along φ, then θ₃ = φ − θ₁ − θ₂. The shaded ring is the workspace (radii |L₁ − L₂| to L₁ + L₂, shifted along φ for three links); targets outside it snap to the nearest reachable point. The Jacobian determinant L₁L₂ sin θ₂ goes to zero when the arm is straight or folded — a singularity, where the hand cannot move in some directions however fast the joints turn.
Diff drive
Two driven wheels a track width W apart. With wheel surface speeds vL and vR:
v = (vR + vL)/2, ω = (vR − vL)/W, turn radius v/ω. Write a program, one move per line, as
left_rpm right_rpm seconds; each move is integrated exactly as a circular arc and the path is drawn
from the origin facing +y. Below that, wheel speeds for a wanted forward speed and turn radius
(vL = v − ωW/2, vR = v + ωW/2), and the pose change for a pair of encoder tick counts
(travel per tick = πD ÷ ticks per revolution).
Limits
-
Kinematics only: no masses, inertia, friction or forces — no torque, bearing loads or deflection.
-
Links are ideal rigid bars with frictionless pin joints and no clearance.
-
The four-bar animates in one assembly; a real change-point linkage may jump to the other.
-
Cams: translating roller (or knife-edge) follower only — no flat-faced or swinging followers — and the same law for rise and return. The curvature check is numerical (0.5° steps).
-
The arm has no joint limits or self-collision; real servos usually turn only about 180°.
-
Odometry assumes no wheel slip and perfectly known wheel diameter and track width: real robots drift. To hold a speed or heading, close the loop — see the PID loop simulator.
Related: PID loop simulator · gears, belts and chains · stepper motors · springs · physics · levers and moment arms
Linking to an example
Links can be written by hand; lengths in links are always millimetres. Add the tab after #:
four-bar, slider-crank, cam, arm or drive.
| Parameter | Meaning | Example |
|---|---|---|
|
|
|
|
Four-bar crank, coupler, rocker, ground |
|
|
Coupler point along AB and to its left |
|
|
Assembly: |
|
|
Four-bar crank speed |
|
|
Slider-crank radius, rod, offset |
|
|
Slider-crank speed |
|
|
Cam base circle, roller radius, follower offset |
|
|
Lift; |
|
|
Rise, top dwell, return angles in degrees |
|
|
Cam speed |
|
|
Arm links: |
|
|
Arm link lengths |
|
|
|
|
|
Hand target and tool angle (degrees) |
|
|
Wheel diameter, track width, encoder ticks per rev |
|
|
Drive program, lines of |
|
|
One of the presets below; parameters given with it override the preset’s |
|
Presets:
example= |
Shows |
|---|---|
|
A crank–rocker, 40/120/80/100 mm: μ swings between 26° and 86° (open) |
|
Hoeken’s straight-line linkage: a nearly straight stretch of coupler curve (open) |
|
A double-crank: the output turns fully at a varying speed (open) |
|
A non-Grashof linkage: the input can only swing ±134° (open) |
|
An engine: 90 mm stroke, 150 mm rod, 3000 rpm (open) |
|
An offset slider-crank with a quick return (open) |
|
A cycloidal 15 mm rise over 120°: pressure angle peaks near 18° (open) |
|
A small cam asked for a fast uniform rise: undercut (open) |
|
A 200 + 150 mm two-link arm (open) |
|
A three-link servo arm holding the gripper level (open) |
|
A small robot driving a square: straight, spin 90°, four times (open) |
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser; nothing you type leaves this page.