Friday, September 5, 2014

GenCon 2014 recap

 I went to GenCon 2014 and had a great time.  I made the two-day drive out along with my wife and another friend, staying over in western PA because I'm getting a little too old and weary to drive 13 hours in one day.  Next year I might fly instead.

GenCon itself was, as always, hugely crowded (something like 56,000 attendees this year?).  Despite that the convention itself ran smoothly.  The Will Call line was amazingly fast and efficient this year, and the convention center itself seems to still have plenty of room.  The surrounding city is showing more strain, getting housing was a nightmare and getting food required waiting an hour or more in line.

Most of my time at the convention was spent gaming.  I go to GenCon for the gaming events, and this year I was fortunate enough to get into nearly all of my first choice of events.  When I wasn't at games, running between events, or waiting in line at the food trucks I did manage to get several hours of demo time in with the new little walking robot.  The robot did great - held up through the entire convention, and ran through about four of the five battery packs I had for it each day Thursday, Friday, and Saturday.  Radio reception was only a problem when the antenna came loose from the transmitter - easily fixed by screwing it back on tightly, but I might want to secure it better for next time.  It had enough traction to walk well on the convention center carpet.  Tile floors were a problem, so I avoided them, and I never got around to trying it outside.

I don't have any video of the robot at GenCon yet.  Running the robot takes two hands, and I can't work a camera and make the robot walk at the same time.  I've been looking on Youtube for uploaded videos of it, but haven't found any yet.

I did go through some spare parts.  I had two servos fail due to the robot switching on while still in my carrying bag.  I was in the habit of keeping a battery half-inserted while walking around with the robot in the bag, so it would be easier to pull out and switch on for a demo.  It turns out that if I hit the robot just right I would jostle the battery into place enough to power on the robot.  The first thing that the robot does when powered on is center all the servos, and when this happens while in a confined bag it can result in stripped servo gears.  I will be updating the software in the robot so that it doesn't send any motion commands to the servos until it receives a valid radio signal.

I had two servos in the robot destroyed when someone stepped on it.  I don't know if it was on purpose - I had originally thought not, but the person who did laughed and ran off when I confronted them, so it may have been intentional after all.  Fortunately it was easy enough to repair the damage to these and the other two failed servos.  I didn't even have to remove them from the robot, just open them up enough to swap the gears out.

One servo failed spontaneously when the feedback system failed.  It locked up at one end stop, and then when I tried to test it erratically smashed back and forth between the travel limits until the gears failed.  I haven't taken it apart enough to find out what the problem was - I suspect a broken wire or solder joint, but when the servos cost less than $3 each I'm not inclined to put much effort into troubleshooting them.  This was a slightly more difficult job than the others since I had to replace the entire servo, which also required taking the core of the robot apart to get at the wiring.  Still not a big deal, the bot was designed to be modular and I had all the tools and spare parts in my convention bag.

Late on Saturday night the transmitter failed, a broken connection in the wiring to the left-hand joystick.  I didn't have the tools with me to troubleshoot or repair the damage, and was just about ready to collapse in exhaustion anyway, so I just packed it up and was done with the robot for the convention.  The transmitter was re-used unchanged from the previous robot, and is really in need of a complete tear-down, redesign and rebuild soon anyway.  The failure only meant that I wasn't able to show the robot off on Sunday, which was not much of a loss since Sunday morning was when we were packing up and heading home anyway.

The robot was a great success at GenCon.  Up; until Sunday my demo time was only limited by the amount of free time I had between events, which admittedly wasn't much.  I never ran out of battery packs, but I did get down to my last pack for the day more than once, so I didn't have much wasted capacity.  I only had one servo fail due to non-external causes.  That last bit really surprised me - I was expecting these cheap servos to fail just from the effort of walking around, but they held up far better than I expected them to.

The big question everyone kept asking was where I got the robot - and when I told people I made it myself, was I planning to sell them?  I'm still not ready to actually sell working, finished, consumer-ready robots.  It's a huge investment in time and money to actually set up, and I really don't want to be the one doing customer support for a potentially large number of hand-made robots breaking in the field.  While the robot itself seems to work for a while without breaking, the servos are fragile and easy to break with careless handling.  Furthermore, I'd still be hand-making each robot, and even with the 3D printer it takes a while to build all the pieces for one.  That means a lot of my time invested in each sale, and I'd have to charge an unreasonable amount to make it worth my time.

I do plan on publishing the 3D files, schematics, and source code so people can make their own reproductions of the robot.  I may be willing to sell kits of parts at some point as well.  Stay tuned.

Tuesday, August 26, 2014

Building the new robot for GenCon 2014

My little walking robot, that this blog was originally created to describe, gradually beat itself to death through performing at conventions and Makerfaires over a period of several years.  Broken servos were easy (if expensive) to replace, but eventually welds cracked in the legs and the servo control board developed intermittent faults.  Fixes to the structural problems just made it heavier and pushed the already overloaded servos further.  About a year ago I gave up and declared it dead.

Earlier this year I decided to rebuild a new walking robot from scratch.  I had at one point looked at tiny inexpensive plastic-geared micro servos as a possibility for a walking robot.  Initially I thought them too weak and small for use in any walking robot, but after seeing several successful robots using them I decided to try and rebuild my walking robot based around them.

I knew from my earlier experimenting that these micro servos would burn out if I ran them at 6V like I had in the earlier robot.  Rather than drop the 8V from a two-cell LiPoly down to 5V or lower, I decided to just run the servos directly off a single cell LiPoly instead.  4V is less than the maximum these servos should be run at, but I figured that it would help them last longer without overheating.  I wasn’t going to be getting much torque out of them, so I’d need to make the robot as lightweight and small as possible.

I made as much of the structure as possible out of 3D-printed parts.  My original justification for getting the 3D printer was to print parts for robots.  I spent a few years making homemade transformers and other fun things instead, but now I’d finally be getting to making robot parts.  The printer was really great for this job, the fact that I could make parts in complex arbitrary shapes, compound curves which would be very difficult to make with sheet metal and internal stiffening ribs without welding or machining, really helped with my goal of making the bot with as few overall parts and fasteners as possible.  

Thanks to the 3D printer I was quickly able to go through multiple sets of test hardware, tweaking the design to get the clearances and geometry just right. It also meant I could fairly easily make an entire set of spare structural parts.  I didn’t expect to need them, but once I had the design finished it cost very little in materials or time to print more out.

I kept the same overall proportions as the previous robot, but scaled down everything by about five-eighths compared to the original.  I wanted to try and make the legs as short as I could get away with, reducing the torque load on the servos while still keeping the legs long enough for decent speed and mobility.  The center sphere, which in the original had been made from a three-inch copper tank float, would now be a plastic ball about two inches in diameter.  The leg span at full extension would be just about eleven inches.  I expected to be able to reduce the weight to about a quarter of the previous design. 

Sadly the printed plastic parts don’t quite have the aesthetic charm that the old polished metal ones did.  My robot’s gone from a steampunk inspired hand-made design to one that looks more like a mass-produced toy.  The final colors were somewhat accidental - I had a different color scheme in mind originally.  I printed out some test pieces in white, then switched to red and yellow, colors I don’t use much outside of test prints.  I liked the resulting look enough to make the entire robot in those colors.

I decided to switch to easily replaceable battery packs rather than attempt to cram in a single battery capable of running for an entire convention.  I got a really good deal on five single-cell 380mAh battery that would just fit inside the two-inch sphere, with enough space left over for the radio receiver. Of course, I added battery protection boards onto each of them to make sure that the robot wouldn’t go up flames in case of a short circuit.  I designed a printed shroud to go around the battery which I hoped would make it easy to swap out batteries without needing tools at the convention.  Unfortunately the plastic snaps came out stiffer than I'd have liked, and I needed to use pliers to pull the battery out at the convention.  It was still reasonably easy to swap the battery packs out.

With the battery pack and the Xbee radio taking up nearly all the space inside the robot, there wasn’t enough room for the Xbee breakout board I had used previously, let alone that and a Pololu SSC or Arduino Mini to do the serial-to-servo conversion.  I had to make my own controller board, using tiny right-angle headers mounted sideways on the board and fitting the PCB itself directly between the pin headers on the Xbee radio.  The board would have to hold a PIC16LF873A microcontroller, 3.3V regulator for the MCU and radio, clock generator and other required components, as well as the connectors for the battery and servos.  The servo leads and connectors actually took up a lot of the interior space - when you only have a 2 inch sphere to work with, trying to fit 8 3-pin headers takes up a painfully large chunk of the available real estate.

I designed the PCB using the layout tools I have available at work, and then ordered it through OSH Park.  OSH Park was quite easy to work with and helped me configure my PCB design software to produce the right output files for their process.  The cost for the three boards they sent me was amazingly low compared with other prototyping services, only $9 for three identical boards which was even less than it would have cost me to set up to etch them at home.  The quality was a lot better than I’ve ever been able to do with etching myself too.  They also had no problems with the boards being odd, non-rectangular shapes, unlike most prototyping services that require rectangles of predetermined sizes.  The only downside to OSH Park’s service is that it’s not speedy, the batch-process system they use to keep costs down means they have to wait until they get enough orders before they can send boards to be manufactured.

The radio receiver, controller board, battery, and connectors occupy a box about an inch square down the center of the two inch sphere center body.  It's really tightly packed in there.  I had to make cutouts in the PCB and battery support structure for the inner mounting tabs of the leg servos, and leave channels in the surrounding support structure wide enough to feed the servo leads through.

The firmware I wrote for the controller in the robot is really simple.  It’s essentially doing the same job as the Pololu SSC I used previously, but with a simpler protocol, lower data rate, and coarser resolution.  The receiver takes a data stream at 8929 baud (it was supposed to be 9600 baud, but a PIC16LF873A running off a 4mhz crystal can’t actually match a 9600 baud rate) with each servo encoded as a single byte of data, and outputs eight 0.524ms to 2.500ms pulses, one for each servo.  The output resolution is fairly coarse (about 0.7 degrees per LSB) but I figure that these cheap all-plastic servos are going to be lucky to be within five degrees of the commanded position anyway so it really doesn’t matter.

I used the same transmitter as on the previous version of the robot.  The only change I made was for the new serial output format for talking to my controller instead of the Pololu SSC board.  I did have some problems with the transmitter at the convention, and I’ll probably be completely redesigning it for next year.

The controller board was the long pole in the project, once it was done and programmed everything came together quickly.  There were a few design issues with the board that I had to fix with cutting traces and soldering additional parts on. For one thing, the Xbee receiver uses a lot more current than I realized, requiring me to solder a larger 3.3V regulator on.  I’ll be updating the PCB files and publishing them once I’ve cleaned up the design.

With these cheap little servos, and my previous experiences with them failing after a few seconds of running under load, I wasn’t sure that this robot would even be able to hold up its own weight without breaking.  I was therefore pleasantly surprised when the new robot not only stood but nimbly walked around, waved and rolled over just as well as the old one had.  Some quick testing showed that a single fully charged battery would be good for fifteen minutes of solid walking, and that I was able to go through several full batteries walking the robot around my living room without any servo failures.  Testing at work showed that the radio range was more than sufficient for the robot to still walk while at the other end of the longest hallway in the building, something that I had been worried about as there was no room for any kind of external antenna on the robot.

With everything tested and seeming to work, I packed the robot and all its spare parts and was off to GenCon.

Monday, August 4, 2014

Adding a second hinge point to cheap micro servos

Several years ago when looking for cheap servos to use for my walking robot I purchased a handful of HXT900 micro servos from HobbyKing.  They seemed like an incredible deal for less than $3 each, but after brief experimenting I gave up on them.  They were very jittery, not terribly strong, and when run at 6V the motor would burn out quickly if the output was stalled.  I tossed them in the junk box and forgot about them, writing them off as not usable for my robots.

Later, at Makerfaire NYC I talked to a maker who was developing kits for a hexapod robot that used 18 HXT900 servos, who had been having some success getting them to work.  I also some very impressive projects online of robots based on these servos, which was enough to make me reconsider my first impression.  My old quadruped walking robot was completely wrecked from many weekends of running demos, so I decided to build a completely new one from scratch based around the HXT900 servos.

The first thing I needed to do with these servos was add a second hinge point to them.  The knee design my robot has uses the servo case as half the hinge joint.  I'm using the same design as on the previous robot, but scaled down, using a 4-40 weld nut, 1/4" OD spacer, and 4-40 machine screw for each servo.

The first thing that needs to be done is completely removing all the stickers from the outside of each servo.  They'll prevent you from opening the case, and the tolerances on my design were tight enough that the stickers were being damaged when I installed the servos into the prototype chassis anyway.

The hole for the rear axle needs to be directly opposite the output shaft.  In theory I should have made up a jig for this, but just eyeballing it seemed to be close enough.  The hole doesn't precisely locate the axle point anyway, so it only needs to be approximate.

For plastic this thin, a drill bit would be overkill, and would probably risk shattering the case.  I used a good sharp Exacto knife to carve out the hole.  Again, the diameter of the hole is not critical, it just needs to be large enough to clear the barrel on the weld nut.

 Then glue a weld nut to the inside of each servo case.  The weld nuts I used just barely fit inside the rear of the servo case.  This helped with alignment - the sides of the servo case held the nut in place, so the position of the hole in the case didn't really matter so much.  You'll also want to make sure to remove any inspection sticker or other residue from the inside of the case before this step so the glue bonds effectively.

The spacer and screw are then temporarily put on to help clamp the weld nut against the inside of the case while the glue sets.  I'll be having to remove them later to install the servo in the knee joint.

 Finally here are two of the servos (pre-modification) installed in a test prototype for the new 3D-printed knee joint, next tot he same structure on the old robot.  You can see that the new design will be much smaller and lighter weight.  I'll also be taking a lot of advantage of the 3D printer's ability to make complex arbitrary shapes for the new robot's structure.

Monday, May 12, 2014

Gencon 2014 scheduler update

 I have updated my scheduling script for GenCon 2014. I had originally not expected to have to make any changes to the code, but GenCon this year moved the location of their event catalog files, and decided to only release the event catalogs in xlsx format instead of csv.  While you can still use last year's version of my scheduler by manually downloading and converting the catalog files, I've modified my code to use a converter utility to do the conversion.

The latest version of it can be found here.

In order to use this, you will need to install Python 2.7.  You will also need to install this xlsx to csv converter code. After installing xlsx2csv, you'll have to copy the file from the install directory into the same directory that the schedule solver python file is located.

The GenCon event registration system is also limiting event wish lists to 50 items this year, so the wishlist generator will limit itself to that number of wishlist items.

As before, this is an experimental and somewhat crude schedule optimization utility.  It allows you to search the event catalog with a text-based interface, add events to your wishlist with assigned priorities, and then generates an optimal schedule for you, as well as a wishlist to enter into the GenCon registration system.

Friday, October 4, 2013

Drew's Dalek Transformer

Decepticons ... Exterminate!

After the 3D-printed Transforming Tardis I designed, the next most requested design was for a transforming Dalek.  This was to be a much more complex design - both because of the more geometrically complex nature of the Dalek compared to the Tardis, and because I wanted to be a bit more ambitious with the complexity of the transformation geometry.

Unlike the Tardis transfomer, which was strongly modeled on the classic Optimus Prime design for the robot mode, my goal for this design was not so much to make a Transformer with a Dalek altmode, as to make a Dalek with the very unusual feature of being able to turn into a large humanoid-ish robot.  As such it isn't based on any actual Transformer, although I did draw some inspiration from Octus, a Generation One transformer that apparently had a Dalek as its alternate form.  I decided early on that I wanted the robot mode to still be recognizably Dalek in design, including having the actual Kaled mutant for a head rather than a recognizable Decepticon face, but I did take from Octus the idea of having the model have more than two arms.  Originally I wanted to give it six full arms, but was only able to make the geometry work with four proper arms and two vestigial ones holding the Dalek gun and plunger.  The robot mode actually ended up being more similar to the Transformers Animated Octus, although this was not at all intentional.

My main art reference for the model was the 2005 Doctor Who episode Dalek.  This episode was the first in the new series to show the new-series Daleks, and really gave a good look at them.  I liked the fact that most of the exterior details were the same color as the basic shell, which would simplify printing as I wouldn't have to make those bits separate parts.  That episode also had a remarkable scene in which the Dalek's casing split open to reveal the Kaled mutant inside, and I decided early on that I wanted my model to be able to do the same thing.  I used pictures of this amazing sculpture as an art reference for detailing the inside of the Dalek.

Purple is about the closest color I had on hand.  I also tried green and grey, but this seems to come out the best.

The Mutant itself was one of the most complex individual parts I've ever drawn.  AutoCad is not terribly good for drawing this kind of three-dimensional, organic shape, but after much effort I manged to make it acceptably well.  I may redraw it from scratch in ZBrush in the future.

Designing this feature into my model meant that the upper body had to be essentially hollow, made up of movable cosmetic panels that weren't able to do much more than hold the shape of the upper body when in Dalek mode.  The bulk of the robot mode - the arms, legs, and most of the torso - all needed to be folded into the skirt of the Dalek, which ended up as a tricky engineering challenge.

Unfolding the limbs - the bottom and front of the skirt become the legs and feet...

Then the arms can swing forward and straighten out.  Two of the arms have fists (actually just copied-and-pasted from the Tardis transformer) while two have more traditional Dalek claws.

Elaborate locking tabs on the feet, knees, and hip joints allow the robot mode to stand upright on its own, not even relying on friction to hold upright.  I learned from the mistakes of the Tardis transformer.

Having the Kaled Mutant taking up most of the available space in the upper body also meant that there was no room for a proper robot head, but that was fine with me.  I was inspired by the mad human-hybrid Dalek Sec from the episode Daleks in Manhatten.  I thought that was a terrible episode, but I did think the form of a human with a Kaled mutant for its head was visually interesting, so I decided to make that part of my model swing up to form the robot-mode head.

The torso unfolds, straightening up with a fairly tricky 4-bar linkage, and the mutant on its pedestal swings up out of the main body.

The two front quarter-panels, holding the plunger arm and gun, swing down and lock to the abdomen parts.  This hold the entire torso upright, and was a really complex bit of geometry to figure out.

Then the rear quarter-panels swing down and tuck in behind the torso, clearing out the space behind the head.

Finally the dome turns around to point backwards, then folds down on its support arms and locks in between the folded quarter-panels.  The dome support arms also carry the front grill panels, and these fit in to fill out the area between the head and torso.

When completely transformed, it stands about twice as tall as when in Dalek mode.  As with my Tardis transformer, it's bigger on the inside than on the outside.

When designing the robot altmode, I wanted to keep aspects of Dalek design philosophy in mind.  First, Daleks were intentionally designed to be menacing and inhuman, lacking in familiar and relatable details.  I wanted to keep that feeling even when the Dalek was transformed.  While it might have arms, legs, and a head, it should still be inhuman and menacing in form.  I tried to evoke an insectile, claw-like shape for the legs, and make the connection between the arms and the torso more similar to how the forelimbs of a grasshopper or similar insect are connected.

Secondly, the Daleks, by their own admission, have no concept of elegance.  Dalek machinery looks functional and brutal, with no care given towards appearance.  Parts are never streamlined or carefully matched, and exposed pipes and hanging wires are common.  This actually meant more work for me, adding those details to exposed surfaces throughout the model.

I think the overall theme of ugly yet brutally functional worked out well.

The finished model has just over 10 ounces of plastic, and I estimate takes at least 24 hours of machine time to print.  (Total design time for me was at least 4 weeks of weekends and evenings, and a large number of scrap parts getting the design right through trial and error).  There are about 100 printed parts in the finished design.  It's not as clean a print as the Tardis transformer was.  There are several parts that need to be glued together, as I wasn't able to make everything snap-fit.  On the other hand, there are still no metal screws or other non-plastic parts involved, and no painting other than a single dot with a black Sharpie to make the pupil of the mutant's eye.

There are also quite a few small, fragile details that are tricky to assemble properly, and the transformation sequence is difficult.  The torso is made up of a lot of parts that want to flop around loose until you lock them together, and when going back into Dalek mode it's tricky to get all the body panels in place.  There are a few bits of geometry I still could touch up to make everything go back together more easily.

I will probably be posting build files and assembly instructions for this on Thingiverse, once I've cleaned up a few details and had a chance to put together a good assembly guide.  This design was mostly a learnign experience for me, as I gained a lot more experience on designing complex 3D assemblies with Autocad.  Autocad really isn't the best tool for this, I was really running into the limitations of the software on this project, so I'm hoping to gain more experience with ZBrush and Solidworks for future projects.

Saturday, July 27, 2013

Drew's Rostock: Replacing the J-head

Several months ago after slightly reworking the wiring to the J-head, the thermistor slipped slightly loose from its socket in the heater block.  The temperature monitoring code in the controller will detect a short or open connection on the thermistor and shut down the heater, but it can't do anything to detect a thermistor that is simply no longer thermally connected to the block, and the heater stayed on long enough to drive the heater block far above its normal operating temperature.  I knew something was wrong when the plastic coming out of the nozzle was bubbling.  Fortunately I noticed and shut the printer down before the plastic J-head barrel was completely ruined, but there was still damage done.  Ever since then the head's been prone to jamming, hard to feed filament into, and reluctant to let go of the filament when I'm trying to change colors.

I noticed a marked drop in reliability while printing the second version of my Tardis Transformer.  Trying to print faster than 30mm/sec inevitably led to a complete filament jam, often requiring a complete dis-assembly of the entire extruder from hot end to pinch wheel to fix.  Finally the entire thing jammed up with a plug of plastic in the barrel that just couldn't remove without destroying the J-head.  Fortunately I had already ordered another J-head, this one with a 0.35mm nozzle as I wanted to experiment with printing more detailed part.

Here's the new head, mounted in the plastic carrier that I use to attach it to the end effector on my printer.  The carrier is two pieces of PLA that clamp the end of the J-head, with guide holes for wires and a place for the push-fit connector to screw in.  In theory, I shouldn't be using PLA to clamp the hot end, since the hot end gets more than hot enough to melt PLA.  In practice, the top end of the plastic barrel never seems to get even close to being hot enough to damage the plastic clamp.

The new J-head seems to be using a different kind of plastic than the previous one was, dark-colored as opposed to the pale tan of the older one.  I'm not sure if this makes any difference, I suspect not.
Wiring the hot end is always tricky.  This part of the printer sees constant vibration, and the wires need to be able to flex freely yet not crack from flexing or vibration.  I've secured the heater resistor and thermistor into the heater block with fire putty, and additionally secured the thermistor cable to the J-head barrel with heat-shrink and copper jewelry wire.  This should help keep it from pulling out of the head again, as well as help protect the fragile thermistor wires from vibration-induced failure.
The final step is to wrap the heater block with insulation tape and Kapton.  This might not be strictly required, but it seems to me to help the head maintain a consistent temperature.  A few overwraps of Kapton tape also additionally helps keep the thermistor in place.
 The main downside to moving to a smaller nozzle is that it will take more force to push filament through the nozzle.  Rostock-derived printers already need a lot of force, with the long Bowden tube and (ideally) high print speed, and even with a 0.5mm nozzle it's not hard to exceed the torque your stepper motor and motor driver chips can deliver.  Fortunately I'd installed a geared extruder on my printer months ago, while trying to push the upper end of its printing speed.

I could have bought a geared stepper motor, or fit a gearbox on to my existing stepper, but to save money I decided to try and build my own gearbox first.  I got the idea after printing this amazing 6-speed automatic transmission model.  Printing and building it convinced me that the quality of parts from my printer were high enough to actually make working gears, so I set about designing my own geared extruder.   While the gear teeth were perfectly fine, the plastic-on-plastic bearings had far too much friction for an actual functional part, so my gearbox was designed to have R4RS bearings (chosen because I had 10 of them on hand) pressed into each gear.
I also replaced the plastic pins in the original transmission with metal shafts.  Here I'm using three 1/4" shoulder bolts (again, chosen because I had them on hand) with the heads cut off to couple the planet gears to the gear carrier, and a M5 machine screw as the shaft to connect the carrier to the filament drive pulley.  Using a machine screw as an output shaft is sadly not optimal.  I've managed to size it so the drive pulley is completely on the unthreaded part of the bolt (rather than resting on the threads), but the bolt isn't exactly the same diameter as the bore of the pulley, so there's a little bit of eccentricity as it turns.  That translates to a slight variance in punch pressure as the extruder runs.  This doesn't seem to be a problem yet, but I'd really like to replace that part with something custom-machined.
The extruder itself started off as a modified Airtripper design, but as is typical I've completely redesigned it from scratch.  Rather than two or four compression bolts I have a single bolt with a large hand-friendly knob pressed onto it.  This lets me easily and without any tools adjust the pressure on the filament.  It also lets me easily unclamp the pinch mechanism to completely release the filament, which I prefer to do when changing filament colors.  It's still not an ideal design - it takes a lot of turns to completely release the filament, and the threads on the screw strip after a few hundred cycles.  I've been meaning to redesign this with some kind of clever fast-release over-center clamp mechanism.
The completed extruder is admittedly huge.  The plastic gears work wonderfully, and have run for hundreds of hours of printing without any problems, but I did have to make them fairly large to handle the load.  A metal gearbox wouldn't have been any wider than the motor itself.  It's not really a problem since the extruder doesn't need to move or fit in a compact space, but can just sit out of the way at the top of the printer.

Looking up into the top of the printer.  The extruder mechanism is at the center.  The filament reel is on the top of the printer, with the filament fed down through a hole in the center of the upper plate.  Two small white LEDs are aimed at the point where the filament is pressed against the drive pulley, these cast enough light on that spot to let me see the filament drive is working properly.  I also have three fans arranged around the top end blowing air down into the print volume.  I'm not sure if these do much useful, but they look kind of cool.  You can also see my cheap little printed cable clamps, the heatsink for the 5V regulator for the fans and LEDs, and the terminal blocks which let me easily disconnect the cables to the end effector.

In addition to replacing the J-head, I've been experimenting with smaller layer height.  The default layer height setting on Slic3r is 0.4mm, which worked well enough for me when using my old 0.5mm nozzle.  The first few prints with the new nozzle were at 0.3mm, which along with the smaller nozzle made a noticeable improvement in print quality.  I tried pushing the layer height smaller, and discovered the microlayering function in Slic3r, which allows you to have different layer heights for perimeter and infill layers.  Unfortunately, when I tried printing objects at 0.135mm (with 0.27mm infill) I ran into an annoying bug where the printer would consistently freeze up mid-print when printing certain objects.  I've backed off to 0.18mm (with 0.36mm infill) which seems to be a sweet spot for reliability and detail on my printer.

Why those particular oddball heights?  My printer uses 36 tooth, 2mm pitch pulleys, motors with 1.8 degree step angle, and motor drivers with 16:1 microstepping.  If I've done the math correctly, that means that the physical resolution limit of my printer is 0.0225mm.  I had the idea that for consistent prints the layer Z-height should be an integral multiple of this resolution.  0.18mm is exactly 8 times the resolution limit, or equal to one half of a full 1.8 degree step of the motor, and the 0.36mm infill is happening exactly once per full step.  Given the way that a Delta printer works, where the physical Z height is determined by the combined action of three different motors, this may not matter as much as it would for a conventional cartesian axis printer.  I figure it doesn't hurt either, and with the 0.18mm/0.36mm layer height I'm getting some amazing print quality.

Monday, July 8, 2013

Tardis Prime - Version 2

I designed the original version of this toy as a personal challenge to see if I could - and in the process learned a lot about how to design complex moving parts for 3D printing.  The design was vastly more successful and popular than I expected, resulting in a lot of requests for printed copies, but I wasn't really happy with it.  The major body joints - hip, knee, waist, elbow - were all too wobbly and weak.  In robot form, the toy couldn't stand on its own, and the legs would sometimes even fall out when it was picked up.  The Tardis form didn't lock together well, with the legs spontaneously unfolding sometimes when picked up.  Several of the pin joints were prone to breaking, too much force applied across the grain of thin plastic pins.  It was also expensive and time-consuming to print, taking over a pound of plastic and several days of machine time.

I started over from scratch with the design, to make something more suited to be a mass-produced toy.  I scaled the original Tardis form by two-thirds (originally tried one-half scale, but my machine couldn't print the details small enough) and rethought every part of the toy to be simpler, easier to make, and more durable.  In the end I managed to reduce the weight to only six ounces, and reduced the part count from 71 to 36.  I also greatly simplified the leg joints, replacing the troublesome hip mechanism with one that used only horizontal pins that wouldn't fall out when the toy was picked up yet were still stiff enough to allow it to stand.
The torso has been significantly changed.  I kept the same shoulder articulation, but eliminated the sliding panels and telescoping neck in favor of simply rotating the head out through the open back.  The swinging windows panels are also eliminated, the back of the torso instead being closed by a piece of the lower back which swings up as the abdomen folds in.

The back of the legs are still fairly open, and the feet are basically just empty bits of body shell folded forward.  The legs were a major hassle to design, the new torso and abdomen structure took up a lot of the interior and in the end I was having to try and figure out how to fold stray scraps of Tardis shell panels into convincing legs and feet.
It can still sit down, but that's pretty much the extent of the leg articulation.  I had to sacrifice a lot of degrees of freedom in the waist and hips to make the body stiff enough to stand on its own.  The arms still have most of their mobility, although I did have to sacrifice the wrist joint.  There's just not enough room in the scaled-down hands to fit a plastic rotation pin inside.
Transformation starts by pulling down on the hips, unfolding the abdomen, lining up the lower back and hip plates, and then swinging the head back into the torso.

You then pull the telescoping black bar (that holds the head pivot stable in robot mode) upwards, swing the shoulder blocks inwards, and slot them together as shown.  This locks together tightly to make the top of the Tardis.  It took a lot of tweaking to get this to work properly, and I still think the bar is a little looser than it should be.
Getting the forearms into place is a little tricky.  There are pins and holes on the torso and forearm parts which lock them together in Tardis mode.  They're a little too secure - it's difficult to get the arms into place, and once in place they really don't want to come loose.  I still might need to adjust the clearances on these parts.

Transforming the legs is simple.  The feet fold back 135 degrees, making the flat bottom of the Tardis.  Note the recessed area and slot on the back of the folded leg assembly.

Then the legs fold forward and up.  A small post on the inner corner of each lower leg piece slots into a recess on the underside of the torso block, and the indented part on the back of the folded foot tucks into a locking ridge on the hips.  I didn't want this version to have the same problem with the legs spontaneously unfolding when picked up in Tardis mode.

It locks together extremely solidly in this form.  You can pick the Tardis up by any part of its structure and carry it around and it won't unfold or come apart - a huge improvement on the earlier version, which needed to be supported from the bottom when carried.
Still to do on this one:  make decals.  I wasn't happy with the look of the glued-on paper labels on the earlier version, so I'm looking for sticker paper that will work in my inkjet printer.  I'm also not sure how legible the labels will be when scaled down to this size.  When in Tardis mode, it's a surprisingly small toy - it's only four and a half inches tall, and two and a half inches wide.  Even in robot mode, it stands under nine inches tall.
It's almost like one of those puzzle boxes in this form, where you need to know exactly where to push on the outside to unlock it.  You start by pulling downward on the feet, at the back rear of the Tardis to unlock the friction tabs holding them in place.
You then pull the legs downwards and straighten them out as shown.  The pin joints in the hips and knees are angled such that the legs spread out slightly when unfolded.  Unfolding the legs also lets you loosen up the abdomen and torso parts enough to free the arms and shoulders.
The shoulder joints slide sideways with a little force, and the forearms come out at the same time.  It can stand in this form, even through the abdomen isn't properly locked together yet.

After freeing up the arms and shoulders, you rotate the head assembly 180 degrees to bring the head out of the torso, then slide the abdomen up to fold and lock the body.  The black bar on the back locks into the notch at the top of the abdomen and holds the head-pivot in place.  The rest of the back of the Tardis splits, the upper half becoming the rest of the back, and the lower half a sort of plate around the hips.

Straighten out the legs, and the robot stands easily on its own.  It's not very poseable, but I've decided that being able to stand is better than being a highly flexible plastic ragdoll.

That's version 2 of the design.  Like the original version of the toy, it was Featured on Thingiverse within a few days of being posted.  As of this writing the original version is at the top of the Popular Things list.  I don't expect this version to do quite as well - honestly I'm surprised that it was Featured at all - but it's gratifying to hear that other people are already printing their own copies.

Version 2 of this toy was a lot harder to design than the original.  Making something robust enough to be sold or given out as a toy is a lot more challenging than making a one-of-a-kind static model.  This design is still fairly crude compared to the actual commercial Transformer toys on the market now.  I've gained a lot more respect for what professional toy developers go through.

As with the previous version, a lot of people are asking me if I'm going to sell these.  While I may make a handful as gifts or to sell at upcoming conventions, I'm not intending to go into any kind of mass production.  3D printing simply isn't a cost-effective way to make a lot of something.  It's great for making prototypes, or limited runs of unique specialty items, but can't even remotely compete with traditional mass-production techniques like injection molding.  It takes my printer a full day of running nonstop to make the parts for one of these - and then an hour or so of my work finishing and cleaning up all the parts and assembling the toy.  I can't make these fast enough for it to be worth my time as a business.  Setting up mass-production is also out of the question - both due to the steep startup costs of having molds and tooling made, and because any actual commercial endeavor would bring down the wrath of the BBC's copyright lawyers (and possibly Hasbro as well).