Tag Archives: 3dprint

The gearbox sprint

As mentioned last time, I needed to build a lot of gearboxes and new leg assemblies in a very short amount of time. So, I got to work.

Machining operations

I made a new fixture for holding stators to be extracted:

Stock in the vise
Countersinks milled
Stator mounted and fractionally machined

I turned down 8 more internal gears. To begin with, my mandrel had warped enough from the first gears that I had to add some heat set inserts to hold a cap to keep the gears on. Then on the last 2 gears, I got greedy, went too fast, and my lathe mandrel melted entirely.

This won’t hold a gear very well 😦

So, I had to spend 12 hours printing another one to finish up the last two internal gears, although their roundness was debatable after their encounter with the mangled mandrel.

I also at this point machined out a bunch more rotors, but didn’t manage to capture any photos.

Gearbox assembly

Now for some assembly:

A friendly bunch of front housings
Output bearing installed, internal gears all ready
Internal gears all in place
Planet outputs and output bearings
The first seven with outer housings installed

At this point I was 3d printer limited, and when I got to starting assembly, I only had 7 sets printed. Thanks to some very generous help from Beat and Roxi (thank you triply in advance!) I had a second Prusa MK3 that was also working 24/7 on the problem.

A bunch of sun gear holders and rotors
Planets installed
Planet inputs installed
Stators installed

Notice how now I’m up to 8!

Rotors installed

When I went to put on the backplates, I discovered that due to tolerance stackup, some of the units were having trouble fitting. To move on quickly, I post-machined all the backplates to move the rotor bearing back a bit with a dremel, and then made a little bit of clearance for the sun gear holder screws.


And then, TADA!


The legs

Now, in parallel to all that, I also designed a new leg which would mount to the gearbox output. I wouldn’t have time to get a shoulder bracket made out of metal like I had before either, so I needed to design that for 3d printing too.

F360 rendering of leg

I made a few improvements this iteration. The biggest was that I added a tensioning mechanism inside the upper leg, so that tension could be increased after installing the lower leg. The old leg was nearly impossible to assemble without breaking it, and was just as difficult to disassemble. Also, I managed to have an actual order of assembly that was feasible and that an appropriate tool could fit in at all places at each stage of the process.

What I didn’t try to do was to try a more mini-Cheetah like geometry, or really optimize for mass or looks or anything. I was trying to get something which would likely work for the length of a Mech Warfare match in as few drafts as possible.

The design is checked into github, but is probably easier to see in the F360 web renderer: https://a360.co/2HtDzPk

The first iteration hot off the press

Of course, the first iteration wasn’t necessarily functional. It came off the press at something like 3am Friday morning. I spent the next 4 hours machining, debugging and squeezing until I found about a dozen problems or things that needed to be fixed. Then, straight back to the printer for a second try, and voila, two was all I needed this go around!

Here is the final part-set with all metal bits installed:


I drew and printed up the shoulder in a separate effort, but managed to capture no pictures of it whatsoever until I went to put it all together.

Leg assembly

Now, here is a shoulder attached, with the upper leg motor and upper leg installed.


And from the other side:


And, the entire first leg:



After carefully managing my 3d printing queue 24/7 to get all the legs, shoulders, and gearboxes printed, here’s a picture of all the legs on at the same time!


Next up… will it move?

Chassis for gearbox based lateral servos

dThe original chassis I had built for the brushless servo quadruped was designed around the aluminum bracket that was used in the Titan XOAR 6008 leg.  For a quadruped that uses the BE8108 gearbox for the lateral mechanism, a new attachment mechanism was necessary.  While I was at it, I made some other improvements as well.

  1. The battery is switched to use an off the shelf cordless power tool battery.
  2. The chassis is a shell, where most wiring can be run inside, including the IMU junction board.
  3. Dedicated inserts are in place on the top for a suspension fixture to be attached.

This was once again a record for the longest print I’ve made on my Prusa mk3s, 31 hours and change.

Chassis with support
Chassis with support
Chassis with support removed
Chassis with support removed

The design files are all on github: https://github.com/mjbots/moteus/tree/master/hw/chassis

I’ve since decided that it would make more sense to print this in pieces that are bolted together.  Actually installing all the hardware was tricky down in the depths, but it does seem to be functional.

Prusa MK3s printed legs

All my testing to date on the improved actuators for SMMB have used 3d printed parts from Shapeways.  Both to have a faster iteration time, and to reduce costs, I’ve optimized all the parts to be printed on my Prusa MK3s.

Here’s all of the individual parts:

Leg parts laid out in Slic3r Prusa Edition
Leg parts laid out in Slic3r Prusa Edition

Them assembled into a leg with the other necessary hardware:

Prusa MK3s Printed Leg
Prusa MK3s Printed Leg

And some jumping on that leg (caveat, this video is from the previous endurance testing post):

A full set of leg parts can be printed in PETG in about 12 hours and uses a little less than 90 grams of plastic.


Mammal geometry leg revision

After getting the first version of the mammal geometry leg working and jumping I worked on a second revision.  At a minimum, I wanted to fix all the problems that required hand machining, however I also decided it was trivial enough to add a reduction ratio to the tibia through the belt drive, that I should just go ahead and do it.  My inverse kinematics calculations showed that this would make a big difference in average power consumption.

The first revision of the leg in CAD looked like:


The second revision looks like:


The major differences are:

  • The lower leg has a 44 tooth pulley, which combined with the upper 24 tooth pulley results in a 1.83x reduction ratio.
  • The upper leg is taller to accommodate the belt path to the new lower pulley.  This includes some weight reduction “truss” cutouts.
  • The top of the upper leg is rounded off, expanded, and has observation cutouts.  This facilitates installing the belt and giving it sufficient room to actually mate with the upper pulley.
  • I actually included access holes so that you could fit a driver in to attach the upper leg to the BE8108 with bolts, while still leaving most of a mating surface for the pulley bearing.
  • The lower leg clamp attaches with bolts instead of just pins.
  • A lot of other tolerances were tweaked to make things fit better.  These are all mostly specific to the Shapeways production machines.

Of course, I managed to mess up about a dozen things on the second revision, and had to spin a third.  Here’s a video showing the process of replacing the leg with new parts in fast forward so that you can enjoy the two hour long procedure in mere minutes!

New machine day – Prusa i3 MK3S

While designing the improved actuators for SMMB I’ve given Shapeways a lot of business.  I can definitely recommend it, their selective laser sintering (SLS) parts are easy to order, their website gives plenty of control, and you can expedite things to your hearts content.

That said, with the amount of 3d printing I am doing, I could have already paid for a fused deposition modeling printer several times over.  Thus, I recently acquired a Prusa i3 MK3S.  It certainly can’t print everything that you can do with an SLS process, but with slightly tweaks to the models it can do a lot of it.  The biggest upsides of course are the lower per-part costs… something like 20-100x cheaper, and the faster turnaround time.  Nearly anything I care about I can have a draft of overnight.

My first impressions are very positive.  After printing the test PRUSA panel, I CADed up two more quick name panels that printed flawlessly.  A simple flexi-dragon (thanks TheBeyonder!) also came out perfect on the first try.  It really is as easy as flexing the print sheet, popping off the part, wiping it down with IPA and kicking off another print.

Next up is switching from PLA to PETG and trying to get the mech chassis designed and printed.

Shapeways dimensional tolerances

The first version of the planetary gearbox as 3d printed from Shapeways required a fair amount of post-machining to get all the pieces to fit together.  I wanted to get to a point where I could just order some parts and have a reasonable expectation of them mostly working out of the box.  To make that happen, I’d need to get a better understanding of where the tolerances were coming from.

Understanding the problem

Shapeways provides a fair amount of documentation on the processes and accuracy you can expect generally.  Most of this is detailed in “Design rules and detail resolution for SLS 3D printing“, however the results there have some limitations.  Primarily, they are only applicable to the specific geometries tested.  Shrinkage is qualified as +- 0.15% of the largest dimension, and is likely influenced by the exact printed geometry.  Secondarily, in the documented tests, the designers had full control over the part alignment in the print.  The standard shapeways platform does not allow you to orient parts, you are at the whim of their technicians where the Z axis will end up.

For the gearbox, I had numerous fit points that needed to have controlled tolerances.  The input and output bearing both needed a press fit for both sides.  The internal gear for the planetary gearing needed a press fit, and the front and back shells also have a lip which would be more rigid if the fit was snug.

Brute force

My solution?  Print slight variants of the relevant pieces of each fit point with each radial dimension printed in increments of 0.1mm.

Shapeways Dimensional Tolerance Test
Shapeways Dimensional Tolerance Test

For each part, I broke out the calipers to measure the as printed size, and also attempted manual press fits of each part.  I didn’t manage to put any identifying features on each of the prints, which probably annoyed the Shapeways technicians and made my life a bit harder.  I just assumed that the sizes came back in increasing order despite the part number markings, which I’m pretty sure were incorrect.  This resulted in the following table:

Measured dimensional accuracy of gearbox parts
Measured dimensional accuracy of gearbox parts


The second version of the gearbox had many other changes in addition to these, but this let me get a lot closer to the correct fit on the full assembly.

3D Printed Cookie Cutters

For my nieces this holiday season, in addition to actual cookies, I printed up some customized cookie cutters on the Artisan’s Asylum 3D printer (A Stratasys uPrint SE Plus)


20121213-emma-inkscapeThe toolchain I used could be applied to a number of 3D projects. First, I either found an image kind of resembling what I had in mind using google images, or drew up a sketch on a piece of paper. Then, I transcribed that image into an inkscape vector drawing, similar to the elf one on the right. The inkscape drawing contained a closed shape for the outer dimensions of the part, the inner dimensions of the part, as well as closed shapes for any surface features that I wanted. I used the “Linked Offsets” feature to force the inner wall boundary to be a precise distance away from the outer wall boundary. Colors were chosen arbitrarily, as the next step ignores the fill colors entirely.


20121213-lilah-freecad.pngNext, I fired up freecad, which can import SVG elements as geometry primitives in the 3D view. Unfortunately, and what was to become the biggest annoyance with this project, is that its import of SVG paths isn’t particularly robust. Notably, for some elements it doesn’t close them properly, and for others it doesn’t even turn them into curves, rather importing them as sets of points. This was done in a hurry, and while I didn’t have enough time to actually fix the problems in freecad, I did dig around in the source enough to figure out that they were not handling paths which ended up on the exact same position as the first point correctly. One problem was that freecad would only count a path as closed if the “z” element was used to close it off. Another was that paths with kinks would just not close with no indication why, even if the kinks were too small to be visible. So, my workaround was to manually edit the .svg files in emacs after inkscape saved them and fiddle around with them afterwords to try and get freecad to import them as closed surfaces. Then for the paths that still didn’t work, I looked extra close in inkscape for any kinked paths. In this project, those largely resulted from inkscape’s linked offset paths being glitchy around regions of high curvature.

With those surfaces imported, I then proceeeded to do a series of extrusions, differences, and unions to get the parts that I was looking for. In some cases, when I ran into limitations of freecad’s boolean operation engine, I had to go back to inkscape to tweak the artwork. This was largely around different objects which were intended to share a border, which didn’t work out so well.


After getting the solid models into good shape in freecad, I exported an .STL file for each model. I pulled this .STL file into netfabb studio basic to verify the volume and to do mesh repair. Sometimes freecad will export .STL files that netfabb doesn’t complain about, but I figure it doesn’t hurt to let it fix up any problems it finds.

uPrint 3D Printer

The final step is printing. This is largely uneventful: feed in the STL files, configure the print job, hit print, and come back in a couple of hours. Usually, when printing a part, you can count on the first iteration to have some problems and this case was no exception. I had designed the cookie cutter wall thickness to be 1.25mm wide, figuring that would be 5 passes of the uPrint. However, the uPrint ended up not actually filling the inside of the wall in many places, resulting in two very thin walls separated by a small void. Given more time, but in this case I was out, so I moved onward with what I had!


So, the final test, using them to cut cookies… Well… They mostly worked. The separated outer walls caused a lot of cookie material to get wedged up inside. I also realized at this point why most cookie cutters have an exposed central area. Without one, extracting the cookies is quite challenging. I painstakingly used chopsticks and a knife, which worked adequately, if with great effort. Certainly, if I were to make a second revision, I would fix both the separated wall problem, and make the cookies easier to eject afterwards.

Below is a picture of the final 3 parts before being gummed up with a season’s worth of cookie making.