Introduction: A Servo-based 4-legged Walker

Picture of A Servo-based 4-legged Walker

Build your own (needlessly tech) servomotor-driven 4-leg walker robot!

First, a warning: This bot is basically a microcontroller-brain version of the classic BEAM 4-legged walker. The BEAM 4-legger may be easier for you to make if you aren't already set up for microcontroller programming and just want to build a walker.

On the other hand, if you're getting started with microprocessor programming and have a couple servos kicking around, this here's your ideal project! You get to play with walker mechanics without having to worry about the fussy analog BEAM microcore tweaking.

So although this isn't really a BEAM bot, the following two webpages are great resources for any 4-legged walker:

Bram van Zoelen's 4-legged walker tutorial has a good overview of the mechanics and theory.
I took my leg design off his website.

Chiu-Yuan Fang's walker site is also pretty good for BEAM stuff and some more-advanced walker designs.

Done reading? Ready to get building?

Step 1: Gather Parts, Measure, Plan a Bit

Picture of Gather Parts, Measure, Plan a Bit

Making a 4-legged servowalker is pretty simple, parts-wise. Basically, you need two motors, legs, a battery, something to make the motors go back and forth, and a frame to hold them all.

Parts list:

2x Tower Hobbies TS-53 Servos
20in heavy copper wire: 12in for front legs, 8in for rear. I had 10-gauge. 12-gauge should work, but I'm guessing.
Battery is a 3.6v NiMH that was selling for cheap online.
The microcontroller brain is an AVR ATMega 8.
The frame is Sintra, which is hella cool. It's a plastic foamboard that bends when you heat it up in boiling water. You can cut it, drill it, matte-knife it, and then bend it to shape. I got mine at Solarbotics.

Other parts:

Drilled project board for the circuit
Snap-off headers (male and female) for the servo and battery connections
A 28-pin socket for the ATMega
Super-duper glue
Soldering iron and solder, wire
Some tiny bolts to hold the motors on
Matte knife

Here, you see me measuring out the parts, making a sketch for the frame, and then grabbing a ruler to make a paper template. I used the template as a guide to mark with a pen where I'd drill holes in the Sintra.

Step 2: Build Frame, Fit Motors

Picture of Build Frame, Fit Motors

First I drilled holes on the corners of the two motor cutouts, then scored along the edge of a ruler from hole to hole with a matte knife. It takes like 20 passes with the knife to get through the Sintra. I got lazy and snapped it after cutting about 1/2 way through.

After cutting out the holes, I test-fit the motors just to see how it worked. (A little too wide, but I got the length just right.)

Step 3: Bend Frame, Attach Motors.

Picture of Bend Frame, Attach Motors.

Unfortunately, I didn't have enough hands to photograph myself bending the Sintra, but here's how it went down:

1) Boiled small pot of water on stove
2) Held Sintra underwater for a minute or two with a wooden spoon (Sintra floats)
3) Pulled it out, and with hot mitts and something flat, held it bent at the right angle until it cooled.

For the classic "Miller" walker design, you want about a 30-degree angle on the front legs.

Drilled screw-holes and bolted the motors on.

Step 4: Attach Legs to Star-shaped Servo Motor Horns

Picture of Attach Legs to Star-shaped Servo Motor Horns

I cut a 12" and 8" section of thick copper wire with tinsnips to make the front and back legs, respectively. Then I bent them at an angle to attach to the servo horns.

A classic BEAM trick when you need to attach things is to tie them with hookup wire wire. In this case, I stripped some hookup wire, ran it through the horns and around the legs, and twisted it up a lot. Some people solder the wire solid at this point. Mine's still holding tight without. Feel free to trim off the excess and bend the twisted parts down.

Step 5: Attach Legs to Body, Bend Them Just Right

Picture of Attach Legs to Body, Bend Them Just Right

Screw the servo stars (with the legs on) back on to the motors, then get bending.

Symmetry is key here. A tip to keep the sides even is to bend in only one direction at a time, so that it's easier to eyeball it if you're doing too much on one side or the other.

That said, I've bent and re-bent mine many times now, and you can re-start from straight again if you get too far off track later on after tweaking it once too many times. Copper's great that way.

Have a look at the webpages I listed for further tips here, or just wing it. I don't think it's really all that critical, at least in terms of getting it walking. You'll be tuning it later.

The only critical bit is to get the center of gravity enough in the middle so that it walks right. Ideally, when one front leg is in the air, the back legs turning will tip the bot forward onto the high/forward front leg, which will then do the walking. You'll see what I mean in a video or two coming up.

Step 6: Brains!

Picture of Brains!

The brainboard is pretty darn simple, so you're gonna have to pardon my sketchy circuit diagram.

Beacuse it uses servos, there's no need for complicated motor drivers or what-have-you. Simply hook up +3.6 volts and ground (straight from the battery) to run the motors, and hit them with a pulse-width modulated signal from the microcontroller to tell them where to go.

(See the wikipedia servo page if you're new to using servomotors.)

I cut up a piece of drilled blank pcb stuff, and super-glued headers onto it. Two 3-pin headers for the servos, one 2-pin header for the battery, one 5-pin header for my AVR programmer (which I should make an instructable for someday), and the 28-pin socket for the ATMega 8 chip.

Once all the sockets and headers were glued on, I soldered them up. Most of the wiring is on the underside of the board. It's really just a few wires.

Step 7: Program the Chip

Picture of Program the Chip

Programming can be done with as sophisticated a setup as you've got. Myself, that's just the (pictured) ghetto-programmer -- just some wires soldered to a parallel port plug.

This instructable details the programmer and software you need to get it all running.

Do Not! Do Not! Do not use this programming cable with any devices that even get near to voltages above 5v. The voltage could run up the cable and fry your computer's parallel port, ruining your computer. More elegant designs have limiting resistors and/or diodes. For this project, ghetto is fine. It's only a 3.6v battery onboard. But be careful.

The code I use is attached here. Mostly, it's overkill for just getting two motors to swing back and forth, but I was having fun.

The gist of it is that the servos need pulses every 20ms or so. The length of the pulse tells the servo where to turn the legs. 1.5ms is around the center, and the range is from 1ms to 2ms approximately.

The code uses the built-in 16-bit pulse generator for both the signal pulse and the 20ms delay, and gives microsecond resolution at the stock speed. The servo's resolution is somewhere near 5-10 microseconds, so 16-bits is plenty.

Does there need to be an microcontroller-programming instructable? I'll have to get on that. Let me know in the comments.

Step 8: Baby's First Steps!

Picture of Baby's First Steps!

I got the front legs swinging about 40 degrees either way, and the back legs about 20 degrees. See the first video for an example of the gait from underneath.

(Note the nice couple-second delay when I press the reset button. Very handy when re-programming it to have it sit still for a couple seconds with the power on. Also, it's convenient to center the legs for when you're done playing and you just want it to stand up.)

It walked on the first try! See the 2nd video.

In the vid, watch the way the front leg raises up, then the back legs turn to make it fall forward onto the front leg. That's walking! Play with your center of gravity and leg bends until you get that motion.

I noticed that it was turning to one side a lot, even though I was pretty sure that I'd centered the motors mechanically and in the code. Turned out to be due to a sharp edge on one of the feet.

So I made robo-booties. Is there nothing heat-shrink tubing can't do?!

Step 9: Tweaking

Picture of Tweaking

So it walks ok. I'm still playing around with the gait and the shape of the legs and the timing to see how fast I can make it go in a straight line and how high I can make it climb.

For climbing, the front leg bend just before the feet is crucial -- it helps it keep from getting caught on edges. Instead, the leg rides up over the obstacle if it hits below the "knee." I tried to make the feet hit at about the same 30-degree angle as the frame.

So how high can it climb?

Step 10: So How High Can It Climb?

Picture of So How High Can It Climb?

Just about 1 inch right now, which beats most simple wheeled robots I've made, so I'm not complaining. Watch the video to see it in action.

It doesn't ever just leap straight over. It'll take a couple tries to get both front legs up and over. Honestly, it looks like a traction issue more than anything.

Or the center of gravity may be a little high for the long front leg swing. You can see it almost lose it as the front leg pushed the body up into the air. A hint of things to come...

Step 11: So What Can't It Climb?

Picture of So What Can't It Climb?

So far, I have been unable get it to Master the Art of French Cooking (volume 2) reliably. It looks like 1 1/2 inches is the current limit to how high it can go.

Maybe reducing the front leg rotation will help? Maybe lowering the body to the ground a bit?

Watch the video. Witness the agony of defeat. Damn you Julia Child!

Step 12: The End


JackT2 (author)2014-09-13

Well done mate ! interesting project really. It's simple but effective! Thanks for sharing.

jaristotil (author)2013-08-18

Is this circuit needs a clock between 9th and 10th pin?

veysi451 (author)2013-01-03

i wanna use pic16f628A ; can youu send me pic program and circuit diagram. thanks... is my adress.

geeklord (author)2008-12-27

I need to learn how to write in C. Can I use C to programall microcontrollers??

fibean (author)geeklord2012-05-27

Yes! With AVR's you can use AVRStudio (free, made by Atmel) to compile your C code into an .hex file, ready to upload on avrdude.

You can take a look at the datasheets, there you will find information about the microcontroller. You will find C code examples in the datasheets too.

To find the datasheet of the microcontroller you want, take a look at Atmel's site (for AVR's), or try to search on google something like "ATMega8 datasheet". It may be on the first results.

You can't use C++ in microcontrollers, btw.

creatorroboto (author)geeklord2011-06-06

Nope. I tried uploading C++.

C++ = busted Arduino (if you're using one.)

Try getting the Turbo C bible...worked for me.

kperfect (author)2012-05-04

can u give me neat cicuit daigram to my mail

krogie (author)2009-07-03

How much would it cost if I want to build oe of these?

jimmy dean (author)krogie2009-08-11

It depends on what you have laying around. If you already have soldering equipment and plan on going ghetto for the programmer, I would say around $20-$25.

hellstudios (author)jimmy dean2011-06-05

ahh, i have two servos, an msp430 launchpad, I just can't figure out how to get them to talk to each other.

Might you, kind sir, help me with this problem of mine?

So the only trick with (traditional, analog) servos is that they need a 1.5-2.5ms pulse every 20ms. The length of the pulse determines where they turn. You just make the pulse train with the micro and you're done!

Good luck.

hmm, do you mean through the signal wire?

you probably mean the signal wire.

jimmy dean (author)hellstudios2011-06-24

Yes, you provide 5v to the red wire, ground to the black wire, and the signal to the signal wire.

On the signal wire you provide anywhere from a 1-2ms pulse of 5v every 20 ms. 1ms and 2ms make the servo move to its limits, 1.5ms centers the servo, and everything in between moves the servo everywhere in between. Good luck. :)

creatorroboto (author)2011-06-06

Great project but is the Code in C or C++? I'm an Arduinophyte. Sorry, I'm not the most hardworking person...

Once again, Great Project

Veve Tech (author)2011-06-05

When I heard Servo, I was hoping for Tom Servo lol

alterator (author)2011-06-05

glue some rubber stuff on the ends of legs, so it doesn´t slip..

pokeroz (author)2010-11-12

Is this The right setup for the brains

salahaddam (author)2010-01-09

 They had one like this at

amando96 (author)2009-01-30

oh and ermmm, could i make this using 555's??? i think i might be able to make a simpler one... hmmm

andy (author)amando962009-02-21

Using a Hex inverter is a good trick, 555's would be capable but not very elegant. I strongly advise you look into using a 74xx240 type chip (replace xx with ac, hc or htc (different tolerances - they should all do the job though)), there are plenty of tutorials and the components needed are minimal. The circuit type you need is typically referred to as a bicore(or bi-core) and there are tutorials showing how to solder these up without breadboards/circuit boards. Don't be scared off by different chips or schematics, best way to do. Hope this helps, Drew

amando96 (author)andy2009-02-21

ya defenantly helped, although i just bought an Arduino... lol

andy (author)andy2009-02-21

Sorry for two comments, but I just noticed, if you want simplicity try the One Motor Walker on this site, here's a link to the free-form tutorial for its control system, it links to the one motor walker tutorial.
Hope this helps,

amando96 (author)2009-02-19

whats is the code for an arduino? is it the same as that one?

kasman (author)2009-02-15

can u give me the schematic circuit please.. hanif,malaysia

DieCastoms (author)2008-11-15

Based solely on this 'ible, I built a 4 legged walker. Instead of the plastic substrate, I used bent and formed coat hanger wire, and instead of the atmega, I used a Futaba 4 channel RC receiver and battery pack. During the construction (which only took a half hour) I worried about whether or not I could control it manually in a manner to make it walk. I worried about having enough timing and coordination to manually control both servos. As it turns out, however, by putting both servos on the same stick (mind you NOT the same channel), spinning the stick in a counterclockwise direction produced forward (RAPID) movement, and spinning the stick in a clockwise direction produced backward (extremely unstable) movement. I am impressed with how simple this project turned out to be and how easily I was able to get good results, and I thank you for posting the 'ible. Mike, from DC.

amando96 (author)DieCastoms2009-01-30

so you just used the RC sistem? no additional circuits? cool :)

DieCastoms (author)amando962009-01-31

I used two servos, the RC battery pack, the RC receiver, and coat hanger wire. NOTHING else went into the construction of the robot. I have made several different .... contraptions in which to use my RC system and servos, including several different "Sumo" bots with varying size tires and construction materials, and the walker. Eventually I will post the videos on YouTube under DieCastoms. Take a look. Mike, from DC.

iw28 (author)2009-01-31

how do I make the ic the chip ore the brain to the walker

amando96 (author)2009-01-30

hey i just built this! But i put the whole thing inside a cardboard tube, and the PIC i used is 6' tall 140 pounds... :P

amando96 (author)2009-01-30

u can make it climb higher buy putting wider legs... :)
and ermmm where did you get the brain?

iw28 (author)2009-01-28

hey i just want to ask to how to make the brain to the 2 motor walker

Mike060187 (author)2008-11-24

hi, can you pleas send me a clear picture or diagram of the circuit of the bot? thanks

619rey (author)2007-12-28

WHERE DO I GET Drilled project board for the circuit Snap-off headers (male and female) for the servo and battery connections???????

Derin (author)619rey2008-10-05

rat shack may have them,but try digikey

619rey (author)2007-12-28


Derin (author)619rey2008-10-05

the ground bus is a bus that travels on the ground,just joking read real explanation below The + bus carries the power and is similar to the positive of a battery. The ground bus is the exact opposite

robotkid249 (author)2008-08-30

Can you please post the code to use with the atmega168?

Ankush (author)2008-08-17


Nitin Sharma (author)2008-07-21

plz give a cleam picture of the brain of this instructible

Nitin Sharma (author)2008-07-17

hey i am making my firsy bot can i use "futobo 3003" istead of "Ts-53" as i am having futobo with me i don't have to spend my cash on buying ts-53

I think those two models are almost exactly the same. And most servos run on standard timings. So you should be good.

plz mail me a nice circuit diagram(with all connections) of ur instructable

plz give a clean circuit diagram of the brain of the instructable

can u plz show the back side of ur brain as it is difficult to understand the sketch u have given in ur instructable plz show the backside, i'll be thankful to u for this

metldrumer984 (author)2008-05-17

hey whats the schematic for ur lil parrallel programmer. like what pins were.

xenomorph (author)2008-03-15

awesome!!!!!!!!!!! i have never programmed before and thanks to your instructable I can start THX:-)

knive05 (author)2008-01-09

can i use pic16f84a as a microcontroller please help me!!!!!!!!!

emilk (author)knive052008-02-27

that one probaby will need an external micro controller clock kristall added.
diffrent programmer and stuff.
you could probably use a pic12f* for this project it only used 2 pins ?
12f costs about 2$ for one of the 8 legged ones. the authors code wont work with pic you will be forced to do your own pic ASM

Mike060187 (author)2007-06-15

hi, could you please tell me where i could get the AVR ATMega 8 microcontroler chip from? in the UK i mean. i cant seam to find it anywhere.

emilk (author)Mike0601872008-02-27

elfa ?

About This Instructable




More by The Real Elliot:Clean and Grease your Skateboard BearingsQuickie PCB Production (with Bonus NiCd Battery Charger)Stop using Ferric Chloride etchant!  (A better etching solution.)
Add instructable to: