spacer The Story So Far - May 31, 2011

I've been attacking this project via several parallel streams. In this post I'll outline what progress I've made in each. Future posts will examine individual streams in more detail.


When I first thought about doing this project I started playing with the hardware first. There are a lot of good designs from which to draw inspiration. At the same time it's important not to dwell on them too much or they'll stifle your imagination. Once you see a good solution to a problem it's hard to find a better one.

I recall attending a lecture in the Chemistry Department where I work. The researcher outlined the innovative work they'd done and the excellent results they'd achieved. He finished his lecture by saying "Of course if I'd checked the literature before I started I'd have realized that what I was trying to do was impossible. It's a good thing I didn't know that".

The problems that most walkers struggle against are weight and rigidity. Some walkers are light but wobble precariously. Others are built like tanks but burn through batteries and servos like popcorn. Composites like carbon fibre can produce both light and rigid frames but are expensive. I decided to use 1/8" MDF which weights about 0.22g/ This material is rigid, easy to cut and above all cheap. :-) I can easily prototype parts on a small home built CNC milling machine (perhaps a topic for another post one day).

Walker as of May 2011
The state of the walker as of May 2011


I like to build things myself so I am avoiding existing commercial boards. Partly this is also because of cost. Any board you can buy, you can probably build for half the price or less. More so in scale.

Most of my recent projects have involved Microchip PIC chips. The dsPIC33 series run at 80MHz and provide 40 MIPs of processing power. They require few external components and are cheap and easy to find. I buy mostly from Digikey these days.

The design will use two different boards. The first board will be the central brain. Its role will be to coordinate the legs, navigate and other high level tasks. Although I haven't designed this board yet, I have another that I build earlier that is similar enough for the time being. In addition to a dsPIC33 it has a PIC18F2553 that provides a USB link to a PC.

dsPIC33 board with USB - Temporary brain
dsPIC33 board with USB - The Temporary Brain

The second board is for controlling a leg. Each leg will get its own copy. Although this may be extravagant I can't say yet how compute intensive interesting gait algorithms will be so I'd rather err by providing too much power than too little. Also I expect that the brain will be quite busy with other tasks so it seems best to offload the heavy lifting. Anyway the dsPIC chips are cheap. Each board will communicate with the brain via I2C, control 3 servos, measure two on/off switches for collision detection, and control one LED/Phototransistor pair for either ground sensing or range sensing. Time will tell.

I currently have a prototype of this board made using toner transfer. I've started writing code for this. I have I2C working and am coding the inverse kinematics routines using fixed point math.

Leg controller - one per leg
Leg controller communicates with brain via I2C


Trying to debug code in a complicated design like a walker directly in the microcontrollers is a pretty painful process. As a result I wrote a simple simulator in Visual Basic that lets me experiment with things in a pleasant, interactive environment with an excellent debugger. The simulator allows me to play with different methods of generating walking gaits. On the page where I talk more about the simulator there will be some movies of robots with different numbers of legs walking about. The gait patterns are not hard coded and thus look more organic I think. Of course they also do odd things at times so there's still work to be done there. Preprogrammed gaits are probably more efficient but I'm hoping that these walking gaits will be more flexible.

Well there you go. There's still lots to do but things are moving along nicely and beginning to converge. I plan to post further updates as I achieve interesting milestones.

Next Post