Case study · linkages
Three-position rigid-body guidance — a worked university practica
A three-position rigid-body guidance problem solved end-to-end — from DNI-keyed input through Burmester closed-form synthesis, all four defect filters, animated kinematics, and dynamic validation with joint reaction forces. Final design hits all three precision points at 0.0000 cm trace error and clears a 26.6° transmission-angle floor.
The problem
A real Spanish-university practica de máquinas: design a planar four-bar linkage that guides an L-shaped coupler body through three precision positions. Input parameters are keyed off the student’s DNI, so every student gets a slightly different geometry — no copying, no reused solutions.
The deliverable is a complete design: link lengths, ground-pivot locations, crank rotation range, transmission-angle floor verified, dynamic loads on each joint quantified. A passing grade requires more than a sketch — the linkage must actually move through the three poses without locking, without flipping branches mid-stroke, and without exceeding a transmission-angle threshold that would stall the mechanism under load.
Pipeline
The full run is one Python loop:
- Burmester closed-form synthesis generates the candidate four-bar geometry that hits all three precision positions exactly. Closed-form, so the result is deterministic and runs in microseconds — no DE, no optimizer, no seed.
- All four defect filters apply algebraically — order, branch (circuit), Grashof, transmission angle. On this problem, the branch filter alone rejects 62,000 of the 72,000 geometric candidates. Grashof takes another bite. Transmission-angle floor at 40° (configurable) is the final filter. Three candidates survive.
- Kinematic playback drives the surviving design through the full crank rotation. The constraint Jacobian + Newton-Raphson solver propagates the single input degree-of-freedom through every joint. Continuation seeding from the previous step keeps the assembly on the same physical branch — no mid-rotation flip.
- Dynamic validation runs the same geometry through the constrained DAE solver. Joint reaction forces (the Lagrange multipliers λ) come out in Newtons, directly usable for fatigue and bearing sizing. Energy bookkeeping (KE, PE, total) confirms numerical integration is well-behaved.
Result
- All three precision points hit at 0.0000 cm trace error.
- Final design is a crank-rocker — Grashof’s law satisfied, sub-class classified.
- Minimum transmission angle: 26.6° at the worst-case crank position. Above the practica threshold, below the industrial 40° floor — flagged in the report so a redesign can be scoped if production hardware is the destination.
- Joint reaction forces stay below the bearing rating across the full crank rotation.
Why this matters
The practica is small. The pipeline is the demo.
The same engine that proposes the candidate is the engine that validates it dynamically. There is no over-the-wall handoff between a geometry team and a dynamics team. There is no “kinematics passed but the prototype shook the bolts loose at 1500 RPM.” The simulator is the referee.
For a coursework problem this is convenient. For a production mechanism program it is a different category of work — one engine, one notation, one solver, one Pareto front when force balancing comes into play later.
Reproduce
The practica resolution writeup, the synthesis script, the DNI-input
generator, and the animation export are all in 2D-Synthesis/practica-maquinas/
in the source repo. Drop in your own DNI, run the script, get your own
crank-rocker.
If you want to bring a problem like this — academic or industrial — into the platform, the qualifier below routes you to the right tier.
Scope a synthesis problem like this
Five calibrated questions, ninety seconds. We score the fit and route you to the right tier.
Run the qualifier