Tag Archives: 3dprint

New machine day: A second MK3S

As you may have noticed, I’ve been 3d printing a lot!

A stack of empty filament rolls
A stack of empty filament rolls
dsc_0215
2 kilometers of filament!

Moving up to the gearbox motors for my quadruped has only made that problem worse, as all the parts are a bit bigger and heavier.  My first Prusa MK3S has been printing almost non-stop since I got it, so I figured it was time to increase my bandwidth more permanently.  Thus, a second MK3S!

dsc_0204

This one I got from a kit so that I wouldn’t pay the 4 week lead time penalty of getting it pre-assembled.  I would have certainly preferred that, but I’m not sure I’ll be available to receive a shipment in 4 weeks, and I also could use the extra print bandwidth now.  Assembly was largely a breeze, although as predicted it did take a good 6 hours or so in total.

In any event, it looks like it is going strong right out of the box:

 

 

Full rotation leg design

Another of the failure modes observed during the 2019 Maker Faire was in my quickly slapped together leg design.  The shoulder joint was required to squeeze two motors together against a strongly tensioned belt, using nothing but a relatively thin section of printed plastic.  This caused it to deform, leading to belt tooth skipping, and then eventually to fail, leading to delamination of the shoulder joint.

My plan to resolve this is to switch to a leg design where the upper and lower leg are in series rather than opposing one another.  This is more like the Mini-Cheetah design from Ben Katz.  This has the benefit of getting the leg out to the side, so the upper leg is free to rotate 360 degrees, only limited by cable harnessing.  As seems to be my pattern, I’ll try making something out of 3d printed PETG first, optimize it some, and if I fail there, switch to metal.  Here’s a render of the current CAD:

full_rotation_leg

 

Eric from CireRobotics helpfully pointed out that I’m way over the design limit for the 6mm Gates belt I was using, so I’ll also be trying to bump up to a beefier belt in this iteration.

 

Working around motor shroud failures

As seen at Mech Warfare 2019, the existing gearbox motor shroud isn’t really up to the task of supporting the weight of a 20lb robot.  While I work on a more comprehensive redesign, I’ve got a short term fix in the form of another 3D print.  This is just a simple reinforcing ring, printed at 3mm thick, with the layer lines oriented so that layer separation will not be the primary failure mode.  It is attached to the outer housing via a thin layer of epoxy.

dsc_0108
The two halves of the reinforcing ring

Due to the unconventional orientation, removing support was a pain, but doable.

dsc_0109
A reinforced motor

Results from Maker Faire 2019

After a concerted push, I managed to get Super Mega Microbot “Junior” walking, for all of 15 minutes, then packed it up and went off to compete in Maker Faire.  Needless to say, with that much testing, I wasn’t expecting stellar results, and I wasn’t disappointed.  However, I did learn a lot.  Here’s some of the things that went wrong:

Gimbal and Turret EMI

For this new revision of SMMB, I updated the gimbal board to use RS485 and support the 5S system voltage.  I tested it some, but apparently not enough.  While I observed no problems during Thursday or Friday’s testing at the site, during the first Saturday match, after firing the gun a few times, the gimbal went into a fault state and stopped applying power.  The control scheme for SMMB relies on the turret being operational, so this not only made it impossible to aim, but also made it nearly impossible to drive.

I did manage to connect to the turret manually after the match to diagnose the problem, and discovered that the IMU had stopped communicating over I2C.  I had some half-baked logic to try and recover from that, but it was broken, and the only effective way to recover was to power cycle the whole unit.

Unfortunately, my matches on Saturday were all close together, so I didn’t have enough time to prepare a fix in between.  Thus, each match I got one or two shots off, and then the machine as a whole became effectively inoperable.

Likely, something in the new board, either in the layout or the decoupling capacitors, results in worse electrical noise than the old one when the AEG is fired.  This shouldn’t be too hard to resolve, either through tweaking the layout, or perhaps moving the AEG control to an entirely separate board.

Walking and Leg Robustness

When I got the gearbox system walking for the first time, I quickly noticed that one or more of the timing belts connecting the lower legs to their motor had a propensity to skip a tooth.  Since there is no position sensing directly on the lower leg, when that occurs the gait logic just has the incorrect position, causing the robot to fall over pretty soon afterwards.  I had never observed any tooth skipping in my previous direct drive leg, even when jumping for over an hour.  The first difference I thought which might be causing the problem was the lower pulley print, which I had initially done at 0.15mm but in the gearbox revision it was at 0.2mm.  So I printed a full set at 0.15mm, and swapped them in.  However, that didn’t fix it and I didn’t have any more time for mechanical solutions, so I tried to work around it by tuning the gait to be as gentle as possible.

Unfortunately, I wasn’t really able to come up with a gait that both could effectively move on the foam mat in the arena, and not occasionally result in belt skips.  Also, as I went along, the skips got worse and worse.  I tried upping the tension on the belt, lowering the tension on the belt, walking with a straighter leg and more bent leg, nothing much made a difference.

Finally, before my third match, I did more examining and realized that the shoulder joint was deforming significantly under the tension of the belt, resulting in the timing belt only contacting maybe half the pulley or less, and the rest dangling off.  Also, the pulley was out of alignment, so the belt was probably only effectively making contact in an even smaller patch.  Unfortunately, there was very little I could do about that aside from hope for the best.  As it turns out, that problem, while limiting the gaits I could use significantly, didn’t result in ending my run.

shoulder_failure.jpg
Shoulder failure

Gearbox Outer Housing Strength

The entire gearbox effort was undertaken somewhat at the last minute, and with little thought to analysis or design for structural integrity.  At best, I made a gut check of “that’ll probably work”, and at worst, I gave it no thought at all.

It was an instance of the latter that caused the final and fatal failure in SMMBJ at Maker Faire.  In the gearbox chassis design, the lateral servos themselves support the entire weight of the robot.  Those gearbox servos transmit the entire load from the front plate of the servo, through the outer housing, then to the back plate, and finally to the chassis itself.  The problem in this case is that the outer housing is a 1.5mm thick (or rather thin) PETG shroud printed with layer lines perpendicular to the primary load.

On reflection then it was not too surprising that a 20lb robot walking around was enough to cause a motor’s shroud to separate at the layer lines, which is what ended SMMBJs run.  I had a spare motor and could have replaced it, however, it would likely have failed shortly afterwards too, and the shoulder was about to rip itself apart due to the leg tension problems mentioned above.  Thus I turned it into a “static display” and switched to a “show and tell” mode for the rest of the event.

dsc_0071
Crippled SMMBJ

Award

Despite those problems, the kind organizers at RTeam awarded me the “Most Innovative” award for trying to push the limits!

dsc_0104

Fixing the problems

Clearly, all of these issues can be fixed in a variety of ways, both easy and hard.  Keep coming to see my attempts!

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:

dsc_2364
Stock in the vise
dsc_2366
Countersinks milled
dsc_2369
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.

dsc_2379
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:

dsc_2383
A friendly bunch of front housings
dsc_2384
Output bearing installed, internal gears all ready
dsc_2385
Internal gears all in place
dsc_2386
Planet outputs and output bearings
dsc_2390
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.

dsc_2394
A bunch of sun gear holders and rotors
dsc_2395
Planets installed
dsc_2397
Planet inputs installed
dsc_2408
Stators installed

Notice how now I’m up to 8!

dsc_2411
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.

dsc_2414

And then, TADA!

dsc_0002

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.

2019-05-15-090249_389x709_scrot.png
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

dsc_2399
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:

dsc_0009

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.

dsc_0004

And from the other side:

dsc_0005

And, the entire first leg:

dsc_0007

Done?

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!

dsc_0012

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:

2019-02-24-110305_601x714_scrot

The second revision looks like:

2019-02-24-110359_723x564_scrot.png

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

Conclusion

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.