Building a 3D-Printed Quadruped Robot
- Sharvesh
- Jan 12, 2024
- 3 min read
Updated: Apr 24, 2024
Introduction
This post covers most of the explanation of the design and manufacturing of the quadruped. While the explanation of the entire project would be considerably long for a portfolio post, I will try to cover most of the major steps without going too deep into the math.
Design
The idea, in essence, was to use motion capture data of horses to generate a baseline policy for the quadruped, and use some domain randomization and adaptation to modify the policy so that it is robust enough to deploy onto a physical quadrupedal robot. The hope was that this would lead to more natural and robust gaits as we would be leveraging (or at least partially) the millennia of evolution and adaptation. The first problem was that there was no quadruped. That kicked off a whole year of developing, testing, and (a lot of) redesigning to manufacture a quadruped robot. The quadruped is a 12-D.O.F robot with three actuators (hip abduction, hip flexion and knee flexion) on each leg with no exteroceptive sensors with a raspberry pi 4 controlling it.
To design the actuators BLDC motors were an ideal choice. BLDC motors are power dense (perfect for the movements of the quadruped), and with a bit of feedback, we can make them perform pretty precise movements. MJBOTS offered reasonably priced BLDC servos that provided the required torque and actuation resolution, making them well-suited for the project. With a bit of research, it turned out that getting the BLDC motors and the encoders separately reduced the costs significantly (We require 12 servos, so we end up saving a lot more in the end). Of course, this meant that the actuator had to be designed.

Below are the parts which were used for the quadruped:
Device | Name | Comments |
BLDC Motor | A 330Kv motor with a peak power of 600W and a max RPM of 7500 | |
Servo Controller | This will allow you to turn a brushless motor into a servo. | |
Power Distribution Board | Two of these for all 12 actuators | |
Magnet | You will need to attach this to the rotor of the BLDC motor. | |
Battery | One of these is capable of powering all 12 actuators. You could get another and have one for each power distribution if you want longer runtime. | |
JST PH-3 to DB9 Connector | This cable allows you to connect fdcanusb to the moteus controller. | |
USB 2.0 to CAN-FD bus | This provides a USB 2.0 interface to a CAN-FD bus. You would need this for configuration and running other tests. | |
Controller | There is a pi (4b or 3b+) hat available at MJBOT which I would recommend to use. |
Note: I have not added other additional accessories like connectors, housing and planetary gear set.

The actuator had a BLDC motor, a magnetic encoder (a small magnet was attached to the shaft of the BLDC motor) to establish feedback and control, and a 6x planetary gear reduction housed inside the casing. The actuator casings were completely 3D-printed. In fact, almost the entirety of the quadruped was 3-D printed using PETG and PLA. I understand that 3-D printed parts cannot take as much load as, say, a machined aluminum part, but I was not expecting the quadruped to move fast or take on any significant loads. This also meant many more iterations of the quadruped could be developed and manufactured quickly. In addition, a broken part (if any) could be printed in a couple of hours and replaced. Overall, it just made more sense to 3D-print the entire bot rather than introduce machined parts, which would have made the robot costlier and made it heavier.
The MJBOT's power dist r4.5b allowed 6 separate power channels, and that meant two of these boards could power up all 12 motors. The initial design had a belt-driven leg. The idea here was that by placing the knee actuator closer to the hip, we would reduce the overall inertia. However, getting the tension right for the belt not to slip was harder than anticipated, so I just ended up moving the belt drive to a direct drive. This did meant that the leg inertia should increase, but as I mentioned earlier, I wasn’t really planning on faster gaits.
The actuators were all daisy-chained with a resistor at the terminal connection. Each actuator had a unique address which was used to move specific motors.

As you might have noticed, the foot is just a bouncy ball with some epoxy infill. It was an excellent choice as it was light and maintained good friction with the floor. Maybe using some flexible material such as TPU could be a nice alternative.