After my robot Fuzzknuckles 5 appeared on the Screen Savers show on TechTV, I got a number of requests for information about constructing a walking robot. This forced me to organize some documentation on the beast, so I thought I would do a post to the legged-robots discussion group showing some of the construction details. This might be helpful to anyone starting out on a project who might want to begin with a design that's known to work, but is tolerant of modifications within pretty broad limits. I'm going to confine this mainly to the mechanical platform because this is where most people encounter difficulties when starting. Everybody seems to have their favorite microcontroller and programming language, so I'm not going to get into that aspect unless someone wants to contact me directly.
My first three attempts to construct a walking robot died stillborn when the surplus dealer from which I was buying stepper-driven linear actuators went out of business. I had constructed working models of leg-pairs with successive improvements, until I had a design with the range of motion and power that I wanted. When my motor supply dried up all the mechanical work and the software code were suddenly useless. This was lesson number one: don't design around a critical component of uncertain availability! Everything in Fuzzknuckles 4 and 5 is available from a number of sources and is (relatively) inexpensive. All of the structural elements are square aluminum rod, aluminum channel and angle, brass tubing, etc. sold at ACE Hardware stores, Home Depot, and other common retail outlets. All the electronic components are available from Digikey, Jameco, Radio Shack, Tower Hobbies, and other long-established suppliers.
Fuzzknuckles 5 is a "plain vanilla" hexapod 'bot. As the winner of an international robotics design contest put it; "I am seeink dis robot all ofer de vorld". He meant it as a put-down, of course, but I take it as a left-handed compliment. There is a reason why you see a lot of similar hexapods: the basic design is successful in nature and in robotics. If you have the dough, you might consider buying a Lynxmotion Hexapod II and spare yourself the agony of all the cutting, filing and drilling. But let's assume you don't have the dough or you're just nuts.
Fuzzknuckles 5's main backbone is a 15" length of 1" square aluminum tubing ( In Fuzzknuckles 4 this was 3/4" aluminum tubing, but the store was out of it this time around. No matter.). Attached to this with #4 machine screws are three 5 3/4" crosspieces of 1/2" x 1/2" aluminum angle. The crosspieces are 6" apart, starting from the back. This leaves a few inches at the front beyond the front crosspiece for attaching sensors, a head or whatever. ( See Fuzzknuckles-Top View below).
Attached to the crosspieces with #4 machine screws are the horizontal servo carriers, which are cut from 1 1/4" square aluminum tubing 2 1/8" long. These have been cut away and drilled to mount the servo motors ( Tower Hobbies System 3000 standard servos or Futaba 3003's) driving the back and forth movements of the legs. (See Fuzzknuckles Leg Down Position).
The leg is rotated via a shaft made from #10-32 brass all-thread. T-nuts are modified by grinding off the setting points and drilling three holes through the flange corresponding to three of the holes in the six- armed servo horn that comes as one of the accessories with the servo. The T-nut is then threaded onto the shaft , which has been given a dab of 5 min. epoxy. When the epoxy has set, a length of 7/32" brass tubing is slid over the all-thread, with more epoxy, to provide a smooth cover for the shaft, but leaving a short length of threads exposed at the bottom end to secure another T-nut later. A 1/4" hole in the bottom of the horizontal carrier, in line with the shaft of the servo motor, has a short section of 1/4" brass tubing epoxied in to serve as a bushing for the shaft. The servo horn is pushed onto the splined shaft of the motor and secured with the screw that comes with the motor. The T-nut on the shaft is now secured to the servo horn with three #2 - 56 x1/4" machine screws and nuts through the holes drilled through the T-nut and the corresponding holes in the servo horn. Now the shaft can be slid through the bushing and the motor secured to the horizontal carrier with four #4 machine screws. The bushing should protrude about .050" through the bottom of the carrier. The 7/32" shaft cover should protrude about .067" past the bushing, with about 1/4" to 3/8" of the #10 all-thread shaft protruding beyond the shaft cover. A 1/4" nylon washer is placed over the bushing, and the vertical servo carrier may be placed onto the shaft. The vertical carrier has a 7/32" hole in the top which accepts the 7/32" shaft cover, which should not protrude all the way through the wall of the vertical carrier. Another T-nut prepared the same as the first can now be threaded onto the shaft and turned down until it doesn't quite bind against the top of the vertical carrier.
At this point it is necessary to power the horizontal servo and move it to the center of its range using either a servo controller made with a 555 timer or the processor that will control your servos, if you've gotten that far. Holding the horizontal servo at mid position, align the long axis of the vertical carrier with the long axis of the horizontal carrier and mark the location of the three holes in the T-nut flange on the underside of the vertical carrier top. The T-nut can now be backed off and the vertical carrier can be removed for drilling. Drill three holes in the marked locations, to be tapped for #2-56 machine screws. When the holes are drilled and tapped, cut down three #2-56 screws so they will not protrude through the top wall of the vertical carrier when securing the T-nut to the vertical carrier. Now put the vertical carrier back on the shaft, thread the T-nut back on the shaft and turn it down until its just short of binding and the holes in the flange line up with the holes in the top of the vertical carrier. Now screw in the shortened #2-56 screws to secure the T-nut to the vertical carrier. Finally, with the axes of the horizontal and vertical servo carriers aligned, place a drop of Loctite 290 on the area where the threads of the T-nut and the all-thread shaft engage. This will likely lock the T-nut to the shaft, but if you're nervous about it drill through the T-nut barrel and the shaft and press in a 1/16" roll pin.
Next, uncork a bottle of strong medicine (I recommend Maker's Mark bourbon), take a long swallow of it, and consider the wisdom of repeating the above for each of the remaining five legs. Believe me, its even worse than it sounds. The passage above doesn't even begin to capture the misery of the process; the screw-ups, the teensy dropped parts that roll off to hell, the battle with Parkinsonian tremors.......AARRRGGHHHH! And, as they always say in these matters, disassembly is the reverse of the above.
I'm sure there are better ways to do this part, but the method outlined above has the virtue of allowing, in principle, for servicing if needed. If one were willing to sacrifice serviceability then it could be done a lot more easily. On the plus side, this method results in a very strong linkage with almost no play and no side loading on the servo shaft. ( See Fuzzknuckles Leg Side View Up Position .)
The rest of the assembly is more straightforward. The vertical servo is mounted on the vertical carrier with three #2 x 1/4" machine screws and nuts. The servo horn is one of the four-bladed horns that come with the servos, modified by cutting off three of the blades, enlarging the third hole out from the hub on the remaining blade to allow a #2 x 1/4" machine screw to pass through, and truncating the blade just beyond this hole. The intermediate link that will be driven by this servo is a piece of aluminum 1/16" thick x 1/4" wide by 1 5/15" length with a 3/32" hole at each end on 1" centers. The servo horn end of the link has a 1/8" length of 3/32" brass tubing through the hole to serve as a bushing. The bushing is slid over the screw on the servo horn and secured with a #2 nut, which is in turn secured with a drop of Loctite. The other end of the intermediate link also receives a 3/32" brass bushing, but cut to a length to just fit inside the 1/2" channel that forms the proximal segment. This can be secured to the link with epoxy or other means.
The vertical fulcrum bracket is attached to the vertical servo carrier with two #2 machine screws through the top of the servo carrier. The 1/8" holes through the walls of the bracket are 5/8" above the top surface of the servo carrier. The bracket is made from 3/4" channel 5/16" long. Three holes are drilled through the proximal segment: a 1/8" hole at the outer end to attach the distal segment, a 3/32" hole at the fulcrum point, and a hole for a #2 machine screw at the inner end to attach the intermediate link. The distances between centers are 5/8" between the intermediate link and the fulcrum, and 1 7/8" between the fulcrum and the distal segment. The proximal segment is 1/2" x 1/2" channel, 2 7/8" long. ( See Fuzzknuckles Leg Down Position.)
As the picture shows, the servo horn and the intermediate link are adjusted so they are in a straight line when the leg is in the fully down position. Thus the linkage takes the weight of the 'bot as a purely compressive force (there is no force acting to rotate the servo shaft) when the leg is down. Because of this the servo draws very little current and no work is required to support the 'bot, thereby increasing the run time from each battery charge.
The parallel link is an aluminum bar 1/8" thick x 5/16" wide x 2 1/8" long, with holes for bushings drilled on 1 7/8" centers. The distal segment is 1/2" x 3/8" x 3" aluminum channel with holes drilled on 1 5/16" centers. All the joints are formed by adhering a brass bushing to the inner member that is either flush with the sides of inner member (in the case of closely fitting pieces like the proximal and distal leg segments), or just long enough to fit inside the outer member ( joints where there is a lot of clearance, like the joint between the parallel link and the distal segment). The joints are finished by inserting a brass tubing pin through the hole in the outer member and through the bushing, and secured by 1/16" cotter pins through cross holes drilled in the brass tubing pin ends. Aside from the requirement that the brass tubing pin must be large enough in diameter to be drilled, there is no particular requirement on the diameters of the bushings and tubing pins; other than that the tubing pin and its corresponding hole in the outer member of the joint are 1/32" smaller in diameter than the bushing outside diameter. The brass tubing comes in multiples of 1/32", starting at 1/16", so each diameter is a nearly perfect fit inside the next larger size, giving a low-friction bearing that needs no lubrication. Incidentally, this tubing is thin-walled (1/64"), so it is easily cut to length by placing it on a flat surface, putting the blade of a utility knife on the place one wishes to cut, and rapidly rolling the tubing back and forth while applying pressure on the knife.
The construction details of the touch sensing whiskers are shown in Fuzzknuckles Whisker Construction.
I initially made some touch sensors based on designs used with B.E.A.M. robots, but these proved to be way too fragile for a 'bot of this size. Eventually I arrived at the design shown here. The sensing whisker is a length of 0.062" music wire soldered into a 3/32" O.D. brass tube. A header pin is soldered into the other end of the tube. This ensemble is covered by a short length of heat shrink tubing, which is shrunk in place to provide electrical insulation. It can then be slid into a larger diameter brass tube which extends an inch or so beyond the insulation on the outer end, and is epoxied to the smaller tube on the inner end. A short ring of brass tubing one size larger than the outer brass tube is prepared by soldering to it a flat brass flange, to which a header pin is, in turn, soldered. This tubing ring is slipped onto the end of the outer tubing and soldered in place. Finally, the assembly is mounted in an acrylic bracket. The header pin connected to the outer tubing is grounded. The header pin connected to the inner brass tube and wire whisker is connected to an input pin of a microcontroller, with a 10k Ohm pull-up resistor to +5 V. In operation the whisker is insulated from the outer brass tube, so the microcontroller input sees a logic high through the 10 k pull-up resistor. If an object is contacted by the wire whisker, the whisker begins to flex until it touches the outer brass tubing, at which point the +5 V source is shorted to ground, the microcontroller input sees a logic low, and appropriate action can be taken by the 'bot. As the whisker loses contact with the object it straightens out again and the circuit to ground opens, resulting in a logic high on the microcontroller input. Although the 0.062" wire whiskers are quite stiff, they began to acquire a "set" after repeated contacts, so additional compliance was introduced by allowing the acrylic brackets to pivot. A tensioning spring returns them to the normal position following a deflection. This has eliminated the tendency to "set" with no loss of sensitivity. (see Fuzzknuckles Whiskers Bottom View)
Finally, the battery location is a matter of some importance in any walking robot, given that the battery is the single heaviest component. Fuzzknuckles uses a single 1500 mAh., six cell, RC car battery pack; so I have made a battery strap and bracket to accommodate this size. (see Fuzzknuckles Battery Mounting)
The design allows the battery to be repositioned somewhat fore and aft, since I know I am going to be adding sensors and actuators, and it will be necessary to rebalance the 'bot from time to time. I'm not going to go into any more detail on this here because I don't know anyone else who uses this setup and I'm thinking of changing to a more distributed battery arrangement myself.
[Return to Robot Index]