Thursday, February 9, 2012

Makerbot Upgrades Part 4

The office Makerbot has been printing nearly constantly for nearly a month now.  It's already more than paid for itself with parts we'd otherwise have to send out for manufacture.  The modifications I've described so far have made it run reliably enough that I can leave it printing unattended in a back room for hours.

I have noticed that the printer is getting noticeably noisier over time.  There's a creaking in certain spots of the X stage travel, a horrible screech when the Y axis moves quickly, and the whole machine shudders and rattles when the Z axis moves downwards at the start of a print.  I've also noticed that it takes a lot of force to manually move the X and Y stages, even when the stepper motors are completely unpowered.  I've decided that my next modification will be to redesign the X and Y stage slides, replacing the oil-impregnated bronze bushings with roller bearings.

First to be rebuilt is the X stage. As shipped the X stage rides on two 9.5mm precision steel rods, each passing through two bronze bushings pressed into ribs in the X stage structure.  This design is over constrained.  The print bed heats the entire X stage, which attempts to expand and pushes sideways on the two steel rods, anchored at their ends in the Y stage.  That's probably the cause of the creaking sound and some of the resistance in the X stage movement.

I ordered a few dozen miniature ball bearings, and then designed printable parts to hold them.  I designed two arrangements of three bearings each, to replace the two bushings on one of the rods.  On the other rod I placed only two bearings, so that the stage is physically located by only one of the rods, with the second only providing vertical support, so that the X stage could expand without pressing sideways on the rods.  The support structures for the bearings now took up most of the space under the X stage, so I joined them together, replacing two of the wooden ribs under the stage.




As I did I also replaced the clamping mechanism that clamped the belt to the stage.  On the version of the X stage I built the belt is clamped by two little wooden sticks that are only secured with one bolt each, and easily work loose over time.  I replaced them with a single large piece of plastic, held in place with two screws, to spread the clamping force out and not as easily vibrate loose.




There's really not much room to work with under the X stage.  To get the bearings to fit I had to cut several holes in the X stage mounting plate, and carve a long groove in the Y stage structure to clear the lowermost bearing.  I did manage to get everything to fit, and when I finally reassembled everything and ran the machine there was no creaking as the X stage moved.

The Y stage had been making a terrible screeching sound when moving quickly, so I set about replacing the brass bushings on that next.  Unlike the X stage, the stock ThingOMatic Y stage isn't over constrained.  On one steel rod the Y stage slides on two brass bushings, but on the other it already rides on ball bearings, so the Y stage can float and expand or contract independently.  There's also a lot more space under the Y stage to work with, so I had an easier time designing the bearings in.




I still had to cut holes on the Y stage bottom plate to fit these in.  Here I replaced each of the brass bushings with a single piece of plastic holding three bearings.  Three screws into the face of each anchor them to the Y stage structure.  It's not quite obvious from looking at it from the outside, but I'm also using the bearing blocks to clamp the belt to the Y stage, replacing the two original little wooden clamps.

After I reassembled the machine and ran it, I found that the noise from the Y stage was completely unchanged!  Moving the Y stage rapidly still resulted in terrible screeching sounds.  On closer inspection I traced the sound to the Y stage belt idler pulley.  Both the Y and X belts in the ThingOMatic have idler pulleys on 4mm bolts, without even a brass bushing let alone bearings.  Over time the bare plastic-on-metal contact gets noisy.

I had previously installed Thingiverse item 12528 on the Y stage idler, so the pulley wouldn't be hanging supported only on one side by the plastic baseplate.  Based on that design, I made a new part to support the pulley with ball bearings on each side.



I'm using the same 4mm bolt as an axle, but not instead of the plastic pulley turning on a stationary bolt, the pulley and bolt now spin on two bearings, that are then supported by the plastic bit anchored to the printer structure.  This completely eliminated the Y stage noise.  The Y stage now moves so easily, I have to hold it in place with one hand while trying to remove printed parts from the bed to keep it from sliding around.

For completeness, I've also upgraded the X stage pulley with bearing supports.  This was a much trickier job, again due to the limited space available.  There's barely room in the ends of the Y stage for the pulley as it is.  To get the bearings in there I had to replace the entire upper wooden structural cap on that side with a printed plastic part, and cut a hole in the lower wooden part to fit the support for the lower bearing.



The poor Y stage on this machine has quite a few new holes cut in it now, but both stages are really, really smooth.  The only noise as the machine prints is the singing of the stepper drivers.  It's almost like some kind of music, especially when it prints circles.

The default printing speed set in the ReplicatorG software is 30mm/second.  I had trouble getting the machine to print complex shapes accurately early on, so I dropped the speed to 20mm/second for a while.  Since upgrading the X and Y stages with bearings I've increased the speed back to 30mm/second without noticing any drop in quality.  I even printed a few parts experimentally at 50mm/second.  Some of the surfaces were a little wavy and there were a few small gaps, so I don't think I'll be printing many parts at that speed, but it's nice to see the machine still works fairly well even at that speed.

The next step would be to replace the Z stage bearings, but as the Z stage moves slowly and infrequently, I'm not sure it's worth replacing the bushings there with bearings.

Tuesday, February 7, 2012

Recipe: Mini-Shepherd's Pie-Muffins

Apologies in advance as this post has nothing to do with robots or Makerbot upgrades.  Rather, this is something I've made for a few parties and had enough people request the recipe that I've put together these visual instructions to share.

Drew's Mini Shepherd's Pie-Muffins
Ingredients

3 pounds of Yukon Gold or similar yellow potatoes
1 cup lamb stock or beef broth
1 stick unsalted butter
1 egg
About half a cup of parsley
1 cup shredded cheddar cheese
A few cloves of garlic
1 medium-sized white onion
1 stick of celery
2 carrots
(Substitutions can be made to the vegetables, see below)
2 pounds ground lamb or beef
A bit of all-purpose flour - about a quarter cup as needed
2 teaspoons Worcestershire sauce
3 cans of Pillsbury Grands biscuits (the kind that are eight to a can, so you have 24 biscuits total)
Some olive oil
Cooking spray
Salt, Pepper, Nutmeg, and Paprika as needed

This recipe began as a Shepherd's Pie recipe I've been making for years at home, as a good, filling, yet reasonably inexpensive way to make dinners and lunches for several days fairly inexpensively.  Recently I was invited to a potluck event, where the requested theme was for Irish food.  Shepherd's Pie was a reasonable fit, but I wanted to make something that could be hand-held and eaten without needing a bowl or utensils.  My wife suggested making individual hand-held pie-muffins, and so this recipe was born.

This recipe takes about 3 hours to do and makes 24 pies.


Step 1:  Mashed Potato topping

Wash the potatoes.  Peel them and chop them into chunks.  I prefer to use Yukon Gold potatoes for this, but any large yellow potato will work.  Make sure you peel the potatoes completely, any remaining peel in the topping will have an unpleasant texture.  I once experimented with multicolor fingerling potatoes, which gave the pie an interesting blend of colors but were very difficult to peel properly.

Put the chopped potatoes in a sufficiently large pot.  Pour in the beef or lamb broth.  I used to use  Scotch Broth soup for this, as it contained lamb broth plus various chopped vegetables all in one, but the brand of soup I used has since been discontinued.  For this batch I'm using the last of a batch of lamb stock that my wife prepared some months ago from some lamb shanks, but canned broth will work just as well.  The one difference is that canned broth has a lot of salt added for some reason, so keep in mind that home-made stock may require salt added to match the same taste.

After adding the broth, add enough water to cover the potatoes.  Add salt if needed, and add pepper to taste.


Cover the pot.  Simmer over medium heat 15 minutes or until potatoes are soft.


Remove from heat.  Drain the liquid through a strainer.  Save about half a cup of the liquid for later.

Melt one stick of butter.  Wash and chop the parsley.  Add the butter, the parsley, one egg, a pinch of nutmeg, and half a cup of the shredded cheddar cheese to the potatoes.


Now mash the potatoes and other ingredients well until you have a smooth mixture.


This will make up the topping layer on the mini-muffins.  Set this aside for the assembly step later.


Step 2:  Meat and Vegetable Filling


We start with the vegetables.  In addition to the potato topping, a shepherd's pie should contain a mixture of various cheap vegetables - onions, garlic, celery, carrots, parsnips, or whatever else you have spare.  As this is a recipe meant for using up leftovers and scraps, the exact mixture of vegetables can very depending on what you have on hand.

Unfortunately, the only appropriate vegetables I had on hand when making this recipe was some garlic.  My wife and I don't normally eat much of this kind of vegetable - we're more into dark green leafy vegetables these days.  I could have bought them all separately, but it seemed a bit silly to me to buy an entire pack of carrots for just one, or an entire bundle of celery for only one or two stalks.  So I cheated.





There we go.  Carrots, Celery, Onion, Parsnips, Turnips, Leeks, Parsley and Dill.  All the required vegetables in a single package, in just about the right quantities.  Feel free to call me a heathen and prepare your pies from fresh vegetables instead.

 I just needed to chop them further and add the garlic.  You don't really want large chunks of vegetable in the filling for this recipe.


You should have about 2 cups of chopped vegetables when done.

Add some olive oil to a large saucepan over medium heat. Add the vegetables and cook until soft.


Remove the vegetables from the pan and set aside.

Add a bit more olive oil to the pan, then add the ground meat.  Traditionally, a Shepherd's pie should be made with ground lamb.  I couldn't find any ground lamb locally when I made this recipe.  As the idea of this kind of recipe is to stretch cheap meat with potatoes and other vegetables, I decided it was perfectly in the spirit of the recipe to use cheap fatty ground beef instead.  Technically that makes this a Cottage Pie instead.

To the beef add the Worcestershire sauce and about half a cup of the liquid from cooking the potatoes.  Traditional recipes usually call for sage or rosemary at this point, but my wife is deathly allergic to those spices so I don't use them.  Feel free to add them if you like.  Brown the meat, mixing it to ensure even cooking.


Add flour as you cook to thicken the mixture.  You want to end up with a semi-solid paste-like texture, as these pies need to hold together once cooked.  When the meat is just about cooked return the cooked vegetables to the pan and mix well.


This will make up the filling of the mini-pies.  Remove from heat and set aside.


Step 3:  Pie Crusts


Preheat the oven to 425 degrees F.

Spray your mini muffin trays with cooking spray.  I use four disposable aluminum trays that hold six muffins each when I make this, but there's no reason you can't use non-disposable muffin trays instead.  Open a container of biscuit dough.  Remove the biscuits one at a time, and with your finger spread each one out into a disc of about twice their original diameter.  Press the dough disks into the muffin tins to make dough-cups.


Once all the biscuits are in the tins, place them all in the oven.  Cook them for 6-8 minutes, then remove from the oven.  You do NOT want them to be fully cooked at this point, they should be just starting to turn brown on the outsides but still raw in the middle.  Keep the oven hot, you'll be needing it again soon.

While cooking, the centers of the pies will have swelled up.  With a spoon (or your fingers, once the pies have cooled enough) press the centers back down to make them into cups.



Step 4:  Assembly and final baking


Fill each pie-crust just full to the edge of the crust with the meat and vegetable filling.  You should have just enough filling to fill all 24 pies.


Next, scoop enough potato topping mixture onto each pie to cover the meat.  Again, you should have just enough to evenly cover all 24 pies.


Onto the pies sprinkle a bit of paprika, and then the rest of the shredded cheese.


Now return the pies to the oven, and bake for 12 to 15 minutes, or until the cheese is melted and the dough is browned.  Remove from the oven and let cool slightly before removing them from the baking trays.


Makes 24 muffins.
These can be eaten immediately while hot, reheated at a party, or stuck in the fridge for a week and eaten cold for lunch.  So far this recipe has been a huge hit at every potluck I've brought it to, but it also works well as a way of making a week's worth of dinners and lunches in one evening.

Sunday, February 5, 2012

Makerbot Upgrades Part 3

When building our Makerbot ThingOMatic, I was surprised by how little thought was given to cable management.  After carefully detailing the mechanical assembly, the instructions for wiring the machine are little more than a hookup diagram and some vague advice on taping the wires together to keep them neat.  There seems to have been little to no thought given to how to run the wires to the moving parts of the machine.  Most of the wires can be run along the inside corners of the machine and merely given enough slack to let the moving parts move freely.  The real problem is the build platform cable.

The build platform moves along two different axis, and is in near-constant motion when the machine is printing.  The connector on the front of the platform is completely unsupported, and the cable tends to drape down onto the rails and belt and get pinched against the frame when the platform is near the front of the machine.



It's unsurprising that the HBP connector is one of the most common parts to fail on these machines, and the Thingiverse has countless files for strain reliefs and cable clips and management systems.

My first attempt to keep this cable out of trouble was to simply zip-tie it to the mounting for the Y axis endstop switch, and then try to encourage it to coil in loops off to the side of the platform, as shown above.  This really wasn't satisfactory, the cable was still scraping on the Y axis belt, and tended to get caught when the platform was all the way at the front of its travel.  Getting pinched didn't just risk damaging the cable, it interfered with the movement of the platform, which was a problem as some of the parts I needed to print nearly filled the entire print volume.

A cable guide downloaded from the Thingiverse helped to some degree.


While not a complete solution, this at least kept some strain off the HBP connector.  I also began experimenting with designing a piece to anchor the build platform cable to the side of the Y axis.  My first few attempts didn't work very well - while they were keeping the cable bundle mostly out of the way, I was still losing some travel on the build surface due to the cable getting in the way of the platform's movement near the edges of the print envelope.  This solution worked well enough for printing small parts, but I needed to come up with something better to get the full use out of the machine.

We use industrial pick and place machines for circuit board assembly at the office.  While helping to maintain them, I had noticed that they used a cable chain system to manage the wire bundles to the moving gantries.  I decided to try and build something similar, as much to see if the ThingOMatic could print well enough to make that kind of complex moving part as to try and fix the HBP cable issues.

The result is this.



Admittedly, it's a bit of overkill for what it needs to do.  It's also not at all how cable chain is normally used - the chain should really be lying flat in a channel and bending with a constant radius when the gantry moves across it, not hanging free in space like this.  This works well enough for what I needed here anyway.  The chain constrains the cable to a single plane of movement, keeping the cable in front of the build platform from rubbing against the stationary parts below, and keeping the cable off to the side from getting pinched between the corner of the build platform and the frame of the machine.

Since I installed this modification (and those mentioned in the previous posts) the machine is working well enough to sit in a back room printing objects unattended for hours.  The cable chain has held up remarkably well, considering that the moving parts are just irregular plastic surfaces rubbing against each other.  I have yet to see any sign of the HBP connector failing, but I expect it will eventually, as even with the strain relief the connector is being operated beyond its rated maximum current and temperature.

Saturday, January 28, 2012

Makerbot Upgrades Part 2

As I mentioned in my previous post, one early print on the machine was ruined when I touched the Z-motor while it was running, giving the machine a static zap that locked up the Z motor control board.  No permanent damage was done to the machine, but the part being printed was ruined.  The Makerbot ThingOMatic does not incorporate any static protection in its design.  It is made from a mix of wood, plastic, and metal, with several large metal pieces (including the motor housings) that are ungrounded and electrically floating.  As I found out, it can be easily crashed by static electricity.  In theory, it may even be generating its own static, as there are a lot of places in the machine where conductive and non-conductive materials are rubbing against each other.

This page has a guide to installing static drain lines.  The instructions are meant for the MK5 extruder, rather than the MK7 we are using, but what needs to be done is essentially the same.

There are five points that really need to be grounded on the printer.  The three motors, the extruder, and the print bed.  I started by preparing five lengths of wire with crimped ring terminals on the ends.  Green with yellow stripe is traditional for grounding wires, and we had plenty of it on hand anyway.  First was the Z axis motor, which I had already learned the hard way needed a static drain line.


The Y axis motor doesn't really need grounding as badly, since it's buried down in the base of the machine, but for completeness I connected it while connecting the others.


The X axis motor is tricky, since there's very little space where the wire can be attached and run without interfering with the X axis travel. I think I've managed to install it without reducing the X axis travel, but to be really sure I may go back and drill a hole to pass the wire through.


Grounding the print head is easy, as there are multiple unused holes on the mounting plate and no clearance issues with the wires.  There is some controversy as to whether this part should be grounded.  Some people have had their extruder temperature readings go off when they connected this wire, possibly as a result of shorts between the nozzle thermocouple and the frame.  I was careful to make sure that the thermocouple was electrically well-insulated from the nozzle when I built the printer, and I haven't seen any problems with the temperature reading after installing this ground lead.


The last grounding wire connects to the heated build platform.  We have installed the aluminum heat spreader, which makes connecting a ground wire easier as I don't have to figure out how to connect a wire to metal foil.  I have rearranged these wires a few times since this photo, as part of the ongoing challenge of dealing with the HBP cable.  I'll get into that more in the next post.


The five grounding wires are run down to the power supply in the base of the printer, connecting individually to mounting holes on the metal frame.  These are static drain lines, not power grounds, so even though they are theoretically electrically connected to the ground lines in the power connectors they need to be run separate from the power ground lines and from each other back to the chassis ground.


With these in place, the sensitive control electronics should be protected from static zaps to the motors, extruder, or heated bed.  I haven't had any prints fail due to static lockup since making this modification.  I have found a persistent issue where the Z axis sometimes randomly reverses direction while homing after a print, but I suspect that's a software rather than hardware issue.

While I was making this modification, I also made the modification described here to all four stepper motor controllers.  The power supply provides 12V and 5V on each connector.  The stepped drivers only use the 12V, generating 5V locally through a linear regulator.  I cut the regulator off each board, and then added a jumper to draw local 5V from the power connector instead.  In theory this should make the stepper controllers more reliable.  I haven't noticed any obvious difference, but it seemed like a good precaution to take.

Friday, January 27, 2012

Makerbot Upgrades Part 1


The company I work for has, over the last few years, ordered many parts from rapid prototyping shops. We frequently have need for one-of-a-kid jugs and fixtures, custom trays to hold parts for automated assembly, and prototypes for enclosures and other mechanical parts. This year we purchased a Makerbot ThingOMatic printer kit, as the cost of parts we've ordered in the last year alone exceeded the cost of the ThingOMatic. Since we've bought it, after the initial setup and tuning time, we've had it running nearly non-stop, as we've been constantly finding new uses for it. It's amazing how after you buy a 3D printer, you start to realize how many uses it has beyond what you originally bought it for. It's been a very worthwhile investment.

As useful as the Makerbot has been at the office, it took a lot of tweaking and adjustment to get it to work. As initially delivered, the ThingOMatic has a lot of mechanical and electrical deficiencies that needed to be corrected for it to print accurately and reliably.

Makerbot Upgrades Part 1
Axis tensioning

The Makerbot ThingOMatic uses two belts for positioning the build platform. Both X and Y carriage movement use a continuous belt stretched between the drive and idler pulleys, with the movable platform clamped to the middle of the belt. You adjust the belt by loosening the motor mount screws and shifting the motor along oval mounting slots till the tension is right. This does not work very well. It's tricky to get the tension right while simultaneously pushing the motor sideways and tightening the screws to clamp it down. The plastic base plate of the Y axis flexes enough to make it hard to tell how much tension the belt will have when you let it go. The belt tension is only held by the friction of the mounting screws and motor face plate. Inevitably the motor slips out of position. If you clamp the motor down enough to make sure it never slips, the screw heads dig into the wood or plastic structure, making permanent indentations that will make it hard to properly adjust the tension in the future.

Slack in the belt shows immediately as uneven lines, circles with flat sides, and gaps in the finished printed parts. A way to properly set and hold the belt tension is the most important improvement to make to the machine. There are a lot of items on Thingiverse designed to fix this flaw, typically by capturing the motor bolts and anchoring them to a nearby structural element with a bolt that can be turned to precisely set the belt tension. Thingiverse item 14098 was the one I chose to fix my printer. First up was the X axis tensioner. This was the first functional part I made on the machine, and it was pretty ugly.



Gaps in the print, irregular lines, non-round holes that I couldn't fit screws through without lots of trimming. It was still good enough to correct the X belt tension, improving the print quality for the next belt tensioner. This one was still crude, but better than the first one. This one went on the Y axis.



Another cause of poor belt tension is the lack of support for the X axis idler pulley. As supplied the pulley is supported on a bolt screwed through the plastic base plate. It's really not very rigid – the base plate can flex under the belt tension Thingiverse item 12528 fixes this by securing the top of the bolt to the printer frame. This also helps to prevent the loose cable from the heated build platform from getting caught on the protruding bolt.

With the X and Y belts holding proper tension, the quality of the build is much improved: the machine can print solid surfaces without gaps and can make reasonably round circles.

The Z axis has its own tension problems. The Z axis is driven by a screw rather than by a belt, s there are no problems with belt tension. The problem with the Z axis is that the print head is mounted quite far out from the screw, on a not very rigid wooden platform. Tension on the plastic filament being pulled into the print head lifts the entire print head, as the filament drive motor has more than enough torque to bend the Z platform upwards. If the filament feed snags and pulls irregularly, the up and down movement of the print head leaves irregular-width layers on the printed objects. In the worst case, a sudden upwards bending of the print head – caused by a snag in the filament feed – results in the layer being printed detaching from the object being printed, ruining the part.

At first, I just looped the filament on the desk next to the machine and periodically unwound more filament from the loose coils. Later, I propped up a metal pole behind the machine and placed the spool on that. This still required me to check the filament every few minutes as the machine printed. As my goal was to have this machine run mostly unattended in a back room eventually, this wasn't acceptable. I needed the filament to feed into the machine by itself.

Thing number 12974 was one solution for this.



This was the largest thing I'd printed on the machine so far, taking several days for all the parts. It didn't print perfectly, with one part failed due to layer detachment after the filament snagged and I didn't catch it in time, and other failed due to static electricity induced lockup of a stepper motor driver.



The spool holder helped with the filament feed issues. It still wasn't perfect – the plastic-on-plastic rolling of the spool on the holder had enough friction to pull the print head up, leaving uneven layers in the printed objects. It was still good enough at this point for us to start using the machine for production use at the office.

I later found some ball bearings in my junk box, and printed inserts that allowed me to mount the filament spool on some metal rod also from my junkbox. Now the spool rolls with very little friction, and the filament unwinds freely. It spins almost too easily at this point – the slightest tug from the extrusion motor starts the spool turning for a while, resulting in loose loops of filament around the spool. Not a big problem yet, but I do worry about the loose filament getting caught in the Z axis movement.

The next step would be to make a tension sensor for the filament and attach a motor drive to the filament spool, unwinding it so that the print head never feels any significant upward pull while printing. I probably won't be bothering with that – there are still a lot of other things I can do to improve this machine.

Saturday, September 10, 2011

Physical assembly

Physical assembly

The robot is built around a piece of 1/8" thick waterjet-cut steel plate, provided by Big Blue Saw.  All the major structural elements - the leg mounts and the outer shell - attach to this center piece.  Earlier versions of the robot were completely handmade.  Investing in a waterjet-cut frame helped tremendously - everything was actually aligned properly and held securely, which can't be said for some of the handmade frames.

The power indicator is semi-permanently attached to the front of the frame.  The indicator assembly is mostly built up from copper wire, which is wrapped around part of the steel frame at the front and soldered to itself to stay in place.

Physical assembly of the robot actually starts by securing the servo wires to the leg structure.


The servo wires are routed through some steel spring material I found in a scrapyard.  I don't know what this stuff was originally used for, but it makes a decent wire loom, and looks better than just using zip-ties or heat-shrink on the servo leads.  The two servo leads from each leg are run through a sleeve that is also slipped over part of that leg's support structure, and then all four leads from each side run together through a sleeve before plugging into the Pololu SSC board.

The shell of the robot's main body is made from a three inch copper tank float from McMaster-carr, caved up with my trusty Dremel tool.  Each shell half mounts to the main structure at three points, connecting with hand-cut right-angle aluminum blocks.  The mounting hole at the front of the frame is occupied by the robot's main power switch.


Actually getting all of the electrical parts inside the shell is challenging.  The battery just barely fits into the available space, and all the other parts need to be placed in just the right locations for everything to fit.  I haven't quite got the wires run properly in this shot.


Here I almost have everything in place.  You can see the charging jack, attached to the upper half of the shell which is upside-down on the right side here.  That will need to be carefully routed around the battery to the back of the robot.


The top half of the shell is attached now.  On the back of the shell, above the charging jack, is the connector for an external antenna.  I almost never actually run the robot with an external antenna, as even with just the jack the radio range is more than enough for the distances I usually let the robot get from me.

Flipped upside down and with the bottom cover removed, you can see the antenna lead connecting to the Xbee radio, mounted on the Xbee explorer board attached to the Pololu SSC.  Once I manage to get the robot assembled, everything is very tightly packed.  Other than the power switch, charging jack, and external radio connector, nothing is actually physically mounted.  Everything is just wedged together so tightly that nothing can move or get loose.  This is not actually the best practice, but there's really no room for mounting hardware inside the robot, and I take some care not to have anything rubbing against sharp edges or having wires with no slack that can get pulled loose.

Once the central body has been assembled, I can move on to the legs.




Each leg is made up of two servos, a 'knee' segment, and an outer leg and foot assembly.  Assembly starts by mounting the inner servo, the one which moves each leg forwards and backwards, to the frame.  On some of the earlier robots I built I'd cut the mounting tabs off the servos and glued them in place.  That was a bad idea for multiple reasons.  Not only did the glued joints fail too often and make it hard to maintain the servos, but the direct connection didn't offer any cushioning.  Here I've made a point of using good quality rubber isolators and brass ferrules at all four mounting points on each servo.  I'm hoping this will help prevent both broken gears and cracked mounting tabs by spreading out the loads and providing some degree of impact cushioning.


Here the 'knee' segment and the second servo is attached.  The knee segment is cut from a piece of 2 inch aluminum tubing.  I designed this piece in Autocad, initially as a 3D object, from which I generated a 2D pattern that I then printed out and wrapped around a tube, taping it in place.  I then used a drill press to drill the holes for mounting hardware and axle points, and then cut out the openings again using my dremel tool.  This design has worked very well.


Here you can see how the second shaft I've added to the servo fits into the knee segment.  Having a second pivot point on the back of the servo in-line with the main servo axle makes the legs far more rigid.  Servos made specifically for robot use often come with this feature built-in.  Here I've carefully modified the cheap hobby servos to have a pivot, hopefully in a way that won't compromise the structural integrity of the servo case too much.



The last step is to attach the outer leg/foot assembly to the second servo.  Each of these is made of up several pieces of metal.  A waterjet-cut steel frame is attached to the servo, again using four screws to attach to the servo mounting points.  Welded to that is a short length of half-inch diameter steel tubing.  Inside the tube, at the end, is a oil-impregnated bronze bushing retained by a welded-on washer capping off the end of the tube.  The foot is a brass drawer knob, which along with a spring and a shoulder screw that slides freely in and out of the bushing makes for a crude shock absorber mechanism.

The choice of the material for the foot came after a long period of trial and error.  This robot walks with a somewhat sloppy ambling gait, where the legs move forwards and backwards in diagonally opposite pairs.  At most points in the walking gait two legs are pushing backwards, one is raised and moving forwards, and one is moving forwards while sliding along the ground.  Early versions of this robot had square rubber pads for feet.  Those tended to get stuck on anything but very smooth surfaces.  For walking on carpet, I found that smooth, round, slightly slippery feet worked best - the robot needed to be able to push against the ground yet not have the forward-moving feet catch on anything.  I used nylon balls on the 2007 version of the robot, and those worked well, but for this version I decided I wanted a more steampunk look, with brass and copper parts, and went with some nice little brass knobs for feet.


That's the basics of the physical assembly.  Still a bit of an annoying problem is what to do with the loops of excess servo lead leaking out of the leg joints.  In the past I've looped these up and anchored them in place with a bit of tape or a zip-tie, but neither of those solutions really fits with the design philosophy of the robot.
Electrical and Mechanical

The electrical system of the robot is built up around a Pololu 8-channel Serial Servo Controller.  The SSC receives a serial signal from an XBee Pro radio modem, and drives all eight servos on the robot.




The XBee radio is mounted to a Sparkfun Xbee Explorer board.  This regulates the 5V from the Pololu board down to 3.3V, and provides a handful of useful status LEDs.  The whole thing is assembled in a rather inelegant dead-bug style.  I've also attached tantalum capacitors onto all the power supply outputs to make it a bit more tolerant of noise on the power supply rails.



Power comes from a 2 cell, 1mAH LiPoly battery.  The battery is directly connected to a management board which disconnects it in case of shorts, overvoltage, or undervoltage conditions.  That keeps the robot from bursting into flames if I accidentally short the main battery connections.  There's a jack on the back of the shell for charging, and a power switch to switch power to the rest of the robot.

The battery provides about 8V when fully charged, which is too high for the servos which don't run long on more than 6V.  I use a Turnigy 15A ubec to drop this down to something the servos can handle.  There's an additional and rather large power switch hanging off the ubec.  I really should cut this off and solder the wires together, since it's really not needed.  I really didn't want to put a regulator on the robot for a long time, not confident that it could handle the current draw of eight servos running at once, but it's actually worked out quite well.

The green blob wrapped in wire is a ferrite which reduces the noise coming from the switching regulator.

The only other electrical component on the robot is the power and direction indicator.  This is made from a uranium-glass marble, surrounded by six ultrabright, ultraviolet LEDs.  The LEDS are all aimed inwards at the marble, the UV light from the LEDs making the marble fluoresce green.  The net effect is to make the marble seem to glow with its own internal light.  I can excuse this even with my 'no purely cosmetic components' rule.  It shows me that the robot is completely switched on, and unambiguously indicates which end of the robot is the front.  As the design is roughly radially symmetrical, this is important.



Here's a everything electrically complete, being bench-tested.  Now to assemble it.