Interactive Leg Linkage Optimization
Note! While Java applets are no longer supported in modern browsers you can run the applet by using the CheerpJ Chrome extension.
  Drag points A-F, X-Z to modify the geometry
See the resultant changes in real-time
Powered by JavaSketchpad
(Please be patient while applet downloads!)
Show the construction elements         JavaSketchpad Home         JavaSketchpad Grammar

Instructions: drag the yellow, green or magenta points to modify geometry for optimization of design goals. Press 'R' to reset geometry.

Design Goals:

  • Locus at point H should be close to a vertical line
  • Linkage points ABC should be inline when leg is down (so force due to gravity is not transferred to motor)
  • Point C should be vertically above same point when leg is up & down
The leg linkage used on Ziggy is key to the operation of the robot. Using linkages has allowed me to convert the torque from the servos into vertical lift without the need for gears or belts. This is an important design feature for me as Ziggy is designed to go out to the Black Rock Desert for Burning Man, and it's verrrrry dusty out there... The servos are sealed with o-rings, and the leg joints are pretty well sealed so dust has not been a problem.

I initially prototyped the linkage using Lego Technics, which is extremely fast and easy to use. When I had an approximate design, I transfered the geometry to the JavaSketchpad applet. This applet then allowed me to tweak the lengths of the various linkage bars until I had the best compromise between design goals. Go ahead and try it - you can drag any of the green or yellow points above and see what happens...

Designing the linkage so that points ABC are inline when the leg is down gives me two advantages: firstly, it maximises the force downwards at H as the leg reaches its lowest point (think of straightening your arm against a weight). Secondly, it means that when the leg is down, no force is transferred to the servo, allowing Ziggy to stand on only 3 legs without the servos even on. This is a particularly important design feature, since the servos can burn out if they are placed under extended load. In addition, I placed a mechanical stop just over centre which prevents the leg from over extending and allows solid parking.

The other two main design goals were to keep point C vertically above the same axis when the leg is up/down, so that it can be coupled to the servo using a universal linkage. Also, the leg locus at H should be as close to vertical as possible to prevent loss of force due to sideways dragging.