Low Cost Accessible Robotic Actuator

by RichardHuberjohn in Workshop > 3D Printing

499 Views, 6 Favorites, 0 Comments

Low Cost Accessible Robotic Actuator

IMG_7763.JPG
IMG_7769.JPG
IMG_7725.JPG

Creating and building accessible robotic technology is becoming more important as automation, robotics, and smart devices shape our future. This project aims to develop a small, affordable, fully 3D printable robotic actuator that can be made using materials that are easy to find and regular 3D printers. By lowering the cost and making it simpler than usual robotic actuators, this design helps students, makers, teachers, and innovators access advanced motion systems. The actuator shows how modern digital tools can help people create complex robotic systems without needing expensive industrial parts or special manufacturing tools.

The easy access to cheap robotic components can speed up technological progress in many areas, including education, research, disaster response, farming, and assistive technology. Small robotics let more people try out, learn, and come up with solutions to real life issues, which leads to a wider and more varied group of innovators. By sharing the design process, engineering ideas, and manufacturing methods for this actuator, this project supports the growing trend of open and accessible robotics. Each new low cost part opens up more opportunities for future robotic systems, helping to create a future where advanced technology is not just for big companies and research labs but is available to anyone who has the creativity and drive to build.

Supplies

IMG_7698.JPG

Supplies:

  1. 3D Printer Filament (PLA+)
  2. 5010 Brushless DC Motor
  3. MKS ESP32 FOC V1 Board
  4. AS5600 Magnetic Encoder
  5. 55x68x7mm Bearing
  6. 2020 Aluminum Extrusion
  7. (18x) 5.5mm Steel Ball
  8. Scotch Tape
  9. Grip Tape
  10. Grease (White Lithium Grease)
  11. Super Glue
  12. (2x) 40mm M3 Bolt
  13. (4x) 25mm M3 Bolt
  14. (4x) 8mm M3 Bolt
  15. (8x) 6mm M3 Bolt
  16. (10x) M3 Nut
  17. (4x) M3 Washer
  18. (4x) 8mm M5 Bolt
  19. (4x) M5 T-Nut

Tools:

  1. 3D Printer
  2. Laptop
  3. Screwdriver (Flathead, Hex Head)
  4. Hammer
  5. Soldering Iron
  6. 12v Power Supply
  7. Clamp

Software:

  1. CAD Program (Onshape, Fusion, Solidworks, etc...)
  2. Slicer Program (Orcaslicer)
  3. Arduino IDE

Inspiration and Research

maxresdefault (4).jpg
maxresdefault (5).jpg

The idea for this project came from new developments in accessible robotics and the increasing availability of high quality actuator designs. Specifically, the MIT actuator design showed how small electric motors, precise machining, and smart control systems can work together to make strong robotic joints that can move dynamically and efficiently.

The aim became to design an actuator that keeps many benefits of advanced robotic systems while still being affordable and easy for hobbyists, students, and independent makers to use.

Another big inspiration was a video about wave reducers that use roller elements instead of regular gear teeth or cycloids. This shows a smart way to achieve reduction ratios, smooth operation, in a compact design while spreading loads across several contact points. By using ideas from these advanced actuator designs, this project explores how the latest robotics ideas can be turned into practical, low-cost hardware that is accessible to a much larger group of people.

Design

simulator-full.gif

The design is based around the concept of a wave reducer with roller elements. This idea was refined by Mishin Machines and ME VIRTUOSO, who created a helpful visualization to display the fundamentals of the reducer.

Essentially it relies on rolling contact from an eccentric cam, a wave profile, and rolling elements (balls or pins) to achieve high reduction ratios with very low backlash.

From ME VIRTUOSO's website:

"This type of reducer is, in a way, like cycloidal drives. However, I believe it has many benefits. First, the part count is much lower. We only need a few bearings, as opposed to cycloid drives where, essentially, the number of bearings/bushings you use, is a factor of the gear ratio you are seeking.

Another big advantage over cycloidal drives is that we can easily, with off-the-shelf parts, achieve metal-on-metal contact for torque transmission. This is because we can use a deep groove ball bearing as the eccentric cam. The rolling elements are either steel bearings balls or steel pins. Then, all we have left with is the wave disk, which has a simple 2D profile that is relatively cheap to manufacture in metal."

Where this specific actuator diverges is that the motor is directly integrated into the eccentric cam of the reducer. In theory this helps reduce the overall size of the actuator, allowing it to be integrated into more systems easily.

CAD

Screenshot 2026-06-08 232308.png
Screenshot 2026-06-08 232531.png

The CAD is based around an Onshape featurescript that generates the basic profiles for the cycloidal ring, separator, and eccentric cam. By changing the values, you can adjust the tolerances for the rollers and accuracy of the actuator motion.

Then I created mounting interfaces for the motor and supports for the bearing. I added a ring shaped lid to contain the separator and created a test output plate to visualize the reduction from the motor to the separator.

3D Printing

Screenshot 2026-06-05 154234.png
IMG_7699.JPG

After the CAD, I imported all of the components of the actuator into Orcaslicer to prepare for 3D printing. I was able to nest some of the parts inside of others to save some space on the build plate and reduce travel distance.

I printed every part using Sunlu PLA+ 2.0 as it is slightly stronger and more heat resistant than regular PLA filament. Every part is also printed with 10% gyroid infill to optimize strength and weight.

Iteration

IMG_7701.JPG
IMG_7702.JPG

After the initial printing process, I noticed the holes for the rollers in the separator deformed during printing and would not allow the steel balls to pass through.

The balls need to pass freely through the separator so they can follow the cycloid profile on the outer ring, so I redesigned the part in CAD and reprinted it until I got the dimensions correct.

Insert Motor

IMG_7703.JPG
IMG_7704.JPG
IMG_7705.JPG

To begin the final assembly, feed the motor wires into the channel in the housing and pull them through until the motor is aligned with the bottom mounting holes.

Try to avoid twisting the wires inside the channel so the motor sits without twisting.

Then, hold the motor and flip the housing upside down and secure the motor with four 6mm bolts.

Attach Bearing

IMG_7707.JPG
IMG_7708.JPG
IMG_7709.JPG

Place the 55mm bearing over the motor, then align the holes on the eccentric cam to the holes on the motor.

Press the cam down onto the motor, shifting the bearing position if necessary until the cam clicks over the motor rotor. Mount the cam to the motor using four 6mm bolts.

Ensure you can rotate the cam freely and that the bearing spins eccentrically when rotated.

Insert Housing Nuts

IMG_7710.JPG
IMG_7711.JPG
IMG_7712.JPG

Thread an M3 nut partially onto a long M3 bolt, then press the nut into the hexagonal recess on the bottom of the housing.

A hammer can also be used to quickly press the the nut fully into the recess. Repeat until all four M3 nuts are secure in the bottom of the housing.

Prepare Seperator

IMG_7717.JPG
IMG_7713.JPG
IMG_7718.JPG

Repeat the process of using a bolt to insert M3 nuts into the recesses on the lip of the separator. These nuts will be used to connect the output of the gearbox.

Loosely wrap the outside of the separator with scotch tape, then insert all 18 steel balls from the inside of the separator. The scotch tape will hold the balls inside the separator during movement and integration.

Insert Seperator

IMG_7719.JPG
IMG_7720.JPG
IMG_7722.JPG
ezgif-155d9078cc5c84c7.gif

Flip the separator over (ensuring none of the balls fall out) and position it on top of the bearing.

While applying pressure to the separator, rotate the eccentric cam until the steel balls fall into place and the separator drops into the housing of the actuator.

Finally, peel the scotch tape up and out of the actuator without dislodging the separator. Then verify that to cam moves the balls as expected.

Add Grease

IMG_7756.JPG
IMG_7758.JPG

To increase the smoothness of the operation and reduce wear on the parts, apply some white lithium grease to the outer ring of the housing.

Move the cam to spread the grease around the moving components and clean up any excess.

Attach Lid and Output

IMG_7724.JPG
IMG_7726.JPG
IMG_7727.JPG

Attach the lid using four 25mm bolts that engage with the nuts pressed into the housing.

Align the notches on the output plate with the holes on the separator, then secure it with four 8mm bolts.


Wiring

IMG_7728.JPG
IMG_7730.JPG
IMG_7731.JPG

Wire the + and - terminals on the MKS ESP32 FOC board to a 12v DC power supply. Ensure the power supply can supply more amps than needed (~3+).

Connect the motor to the ESP32 board using the A (Red), B (Black), C (Yellow) terminals on the board, remembering which motor number it's connected to (0 or 1).

Finally connect the ESP32 board to a laptop using a USB B to USB A cable.

Software Testing

IMG_7732.gif

For simple software testing, I ran the motor in open loop mode to ensure the mechanism works correctly.

I used the test code from the Makerbase repository to quickly check the motor functionality, testing different speeds and voltage limits to find an optimal configuration. An important aspect was setting the motors phase resistance to 2 Ohms to prevent it from overheating.

I observed that at high speed, the motor was experiencing phase issues and overall had efficiency issues, which was a sign to properly implement field oriented control (FOC).

Glue Magnet

IMG_7741.JPG
IMG_7742.JPG
IMG_7743.JPG

In order for the encoder to track the rotation of the motor, the diametrically magnetized magnet needs to be attached to the back of the motor shaft.

Hold the magnet by attaching it to some metal tweezers, then apply a small drop of super glue to the bottom of the magnet.

Carefully place the magnet onto the back of the shaft, trying to position it as centered as possible.

Prepare Encoder

IMG_7735.JPG
IMG_7738.JPG
IMG_7740.JPG

To use the encoder, the pins need to be soldered to the encoder board.

Insert the pins into the through holes (they should hold in place) and then press the pins into a small breadboard to hold and align the board.

Then, solder the top of the pins to the board and attach the pins to the ESP32 board using Dupont connectors.

VCC -> 3.3v

GND -> GND

SDA -> SDA

SCL -> SCL

Ensure the encoder port matches the motor port number on the board.

Create Mounting Parts

Screenshot 2026-06-08 232710.png
IMG_7745.JPG

In order to securely mount the actuator for testing, I designed a simple mount for the actuator and a bracket to hold the encoder.

The mount has flanges to allow it to be secured to a table using clamps.

The encoder bracket accurately positions the encoder at the correct position and distance from the magnet (.5-3mm away).

Mount Actuator

IMG_7744.JPG
IMG_7746.JPG
IMG_7747.JPG
IMG_7748.JPG

To attach the actuator to the mount, remove the bottom two bolts from the housing and replace them with 40mm M3 bolts with washers. These should stick out of the bottom of the actuator.

Then insert the bolts into the holes in the mount, then slide the encoder bracket over them.

Secure all the components using M3 nuts and washers on the back of the encoder bracket.

Clamp Mount

IMG_7749.JPG
IMG_7750.JPG

To create better grip on the table, cut a strip of 1in wide grip tape to the length of the recess on the bottom of the mount. Then adhere the tape aligned to the recess, so the grip protrudes slightly below the bottom of the printed part.

Then use a clamp to firmly attach the mount to a solid surface.

Attach Arm

IMG_7765.JPG
IMG_7764.JPG
IMG_7753.JPG

I created an output plate that holds a length of aluminum extrusion to act as a test arm. This represents a potential use case as a robotics joint and functions to test position control and backlash.

Insert four 8mm M5 bolts into the output part then partially thread four M5 T nuts onto the bolts.

Then slide the extrusion onto the T nuts and tighten the bolts fully.

Finally attach the output plate to the actuator with 4 bolts. I had to use a 2mm spacer to prevent the arm from contacting the lid of the actuator, but this was a preventable design issue.

Implement FOC

IMG_7761.gif

In order to implement FOC, I used the closed loop position control test code from the Makerbase repository.

The was able to position the arm to a set angle, however I faced issues with tolerances inside the reduction mechanism causing slippage and backlash.

The motor is able to effectively hold its position thanks to the position control, but the reducer is also backdriveable, meaning it can also create a flexible joint which is helpful for dynamic robot control.

Conclusion

FUZYCF8MPX8N1ZZ.jpg
IMG_7768.JPG
IMG_7770.JPG

While this actuator successfully demonstrates the core concept, there are many opportunities for future development and refinement. Continued improvements can increase performance, durability, efficiency, and ease of assembly, helping push the design even closer to professional robotic systems while maintaining its accessibility.

Potential future improvements:

  1. Add bearing to output to increase rigidity and accuracy
  2. Tighten tolerances in mechanism to reduce backlash
  3. Add second cam to offset vibration of eccentricity
  4. Add cooling solution to manage motor heat
  5. Cleaner integration of encoder and wiring

This project demonstrates how advanced robotic technologies can be made more accessible through thoughtful design, low cost components, and modern manufacturing methods. By creating a compact, 3D printable actuator, the project helps lower the barrier to entry for robotics and encourages more people to experiment, learn, and innovate. As accessible robotics continues to grow, projects like this can contribute to a future where automation, assistive devices, and intelligent machines are available to a wider range of communities, educators, and creators.