Once all the individual legs were assembled, I needed to wire them up into the chassis. Part of that was building the necessary data harnesses and actually running the power wires from the junction board.
Next up is getting everything talking.
Last time we had a dozen motors, controllers, and brackets assembled. In this installment we’ll build up the mammal legs.
First is mounting the upper leg and upper pulley on each motor and assembling the lower leg:
Then we stick the upper leg, pulley, and lateral motor together, leaving the lower leg loose:
Next I created wiring harnesses to connect all the pieces together:
And finally, put them all together!
Next time, we’ll mount everything up on the chassis.
First up was installing magnets on all the motors:
Next up is mounting the motors into the brackets:
Then I soldered the phase wires onto each of the motors, including shortening the BE8108 wires:
After that was thermal pasting and bolting the controllers to the brackets. The BE8108’s I got for this run were slightly different, and required more spacing of the sensing magnet. Thus I ended up using two heatsink plates back to back. At this point I powered, flashed, and calibrated each of the motors.
Next up, the remainder of the leg hardware!
I am a big fan of MacroFab. They’ve built a PCB + assembly + more service that is transparent, high quality, and nearly completely self service. They appear to be making money, so hopefully they will stay in business for some time.
On top of that, they offer a “quick turn” option which gives you populated boards shipped 10 business days after you order them (and I’ve even had them ship out a few days early from time to time)! The only annoyance is that the quick turn option is limited, as I’ve mentioned before, to boards that meet certain criteria, among them having 20 or fewer items on the bill of materials. To try and get this first quadruped prototype up and running quickly, I’ve been exclusively relying on quick turn boards, which means making some compromises. Even after some moderate design sacrifices, I haven’t been able to get the servo controller board to 20 parts. At the moment it is 23. Thus, when I received the first big-ish PCB order I’ve made (qty 28), I got to spend a morning populating the remaining 3 components on all 28 boards.
Unfortunately, as painful as that was, it was still worth it as opposed to waiting an additional 3 weeks for the non “quick turn” service.
For posterity’s sake, the only difference between the r3 and r3.1 board is some silk screen changes, and one or two equivalent part substitutions.
I’ve now managed to get all the custom and long lead time parts in house for the first version of a quadruped based on the new actuators I’ve been designing.
That includes all the motors, custom brackets, and at least moderately working versions of all the custom PCBs. Now I just have to get the local rework done, get the software into a semi-reasonable state, and put it all together!
Now that I have a semi-reliable actuator, I need to connect 4 of them together into a single quadruped robot. Additionally, it needs to be able to mount a battery, the turret, and all the other miscellaneous pieces of a walking robot.
My draft design looks like this in CAD:
The four corners each are set to mount one leg to. The central cavity will eventually house a battery compartment. On the top is a mounting location for the turret, and the front has mounting studs for a power distribution PCB. Each of the screw holes is designed to take a thermoplastic insert heat fit into place.
This, printed on the Prusa MK3s looks like:
This is in Prusament PETG Jet Black at 0.15m layer height, 3 width perimeters, and custom supports. With one leg, a battery resting in its cavity, and the junction board mounted, it looks like:
Next, I need to get an actual battery tray installed and build enough legs to attach all four of them.
The full quadruped robot needs to both distribute power from the primary battery and RS485 serial network to all 12 servos. To make the wiring of that easier, I’ve made up a junction board to provide power connectors, distribute the data network, and act as the IMU for when that is necessary.
The RS485 network is bridged between two halves of the robot. One connection comes in from the controlling PC and two separate links go out, one for the left side and one for the right side. This could eventually allow the controller on the junction board to take intelligent actions itself, such as querying the force applied on all 12 servos. It could then return the result in a single RS485 transaction to the host computer. I am expecting that will be necessary to achieve closed loop control approaching 1kHz.
It also includes a Bosch MEMS IMU. The junction board will be rigidly mounted to the quadruped chassis, which means it is an ideal location for an attitude reference. I haven’t integrated the IMU software from the gimbal yet, but have verified that the IMU is operational.
Finally, it has a 3.3V regulator on board to power all the logic level chips from the primary 18V supply. I managed to toast two of these by not having sufficient input capacitance, and hot-plugging a lab supply to the power lead. The inductive transient caused the regulators to over-voltage, resulting in a short from power to ground. This is apparently a relatively common design mistake with this part according to TI’s E2E. I attempted to rework replacement parts on the board, but due to a cascade of failures from USPS to my soldering, I gave up and just spun another revision.
In the meantime, I took one board and manually powered its 3.3v supply to bring up the firmware, and I’ve converted the other to a “dumb” mode, where it has no 3.3v supply and all the RS485 ports are just hard-wired together. (Note the very tidy blue-wiring and hot glue.)
That should be enough to make progress with getting the full mech working, even if the control frequency is limited.
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:
Them assembled into a leg with the other necessary hardware:
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.
While wiring up the first 3 degree of freedom mammal actuator, I knew I was going to have a need to distribute power to each of the three motor controllers. Thus, enter my simplest ever PCB. It is just 4 holes for each of power and ground with traces connecting them.
It took an annoying amount of time to actually solder in all the necessary wires, but it was still better than the alternative of a bunch of ring terminals bolted together.
moteus is an open source brushless servo actuator designed for use in highly dynamic robots. It consists of PCB designs, software, and mechanical designs necessary to construct powerful brushless servos, and link them together into legged robots. Today I’ve published the full source and designs for all of this work on github under an Apache 2.0 License – https://github.com/mjbots/moteus
These are the software and designs I have been developing in order to replace the actuators on Super Mega Microbot (which will probably get a new name shortly as well). It isn’t done, but at least the controller is working well enough now that I have a pre-production verification run of ~30 controllers in flight. Even still, I expect that further evolution, both on the controller board and in the mechanical systems is inevitable.
I definitely want to acknowledge Ben Katz, who was a big inspiration for this effort. While this isn’t a direct derivative of any of his work, I really appreciate the open source releases he did make.
CAVEATS: As with any actual hardware project, especially one that can apply large amounts of power to small brushless motors, actually using these designs risks burning down your house, injuring your body, and all sorts of other bad things. If you choose to try these out, you are on your own!