As you may have noticed, I’ve been 3d printing a lot!
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!
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:
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:
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.
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.
Due to the unconventional orientation, removing support was a pain, but doable.
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.
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.
Despite those problems, the kind organizers at RTeam awarded me the “Most Innovative” award for trying to push the limits!
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!
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.
I made a new fixture for holding stators to be extracted:
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.
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.
Now for some assembly:
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.
Notice how now I’m up to 8!
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!
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.
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.
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.
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!
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.
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.
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!
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.
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.
My solution? Print slight variants of the relevant pieces of each fit point with each radial dimension printed in increments of 0.1mm.
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:
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.