Harmonic Drive

by jdow, published

Harmonic Drive by jdow Mar 30, 2012



Use This Project

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

22414Views 4193Downloads


This is a 3D printable version of a harmonic drive. Harmonic drives are mechanical gear systems that have some very nice properties such as no backlash, high gear ratios, and being able to hold their position without power :


Harmonic drives have an elliptically deformable inner gear (the flex spline) that is meshed into a ridged outer gear (the circular spline) using an elliptical horn ( the wave generator) that attaches to a motor. As the wave generator moves it deforms the flex spline and changes its contact points with the circular spline. Every full rotation of the wave generator moves the flex spline by only by the difference in the number of teeth in the flex spline and the circular spline. This design has 32 teeth in the flex spline and 34 teeth in the circular spline. See more details:


Check out the video of the drive in action:



Harmonic drives are used on a lot of the high end humanoid robots such as Asimo. Unfortunately they are normally really expensive (thousands of dollars), so I'm hoping to make this technology accessible to the hobby market. This design costs around $3 in parts and plastic (+ $11 for the servo). Once the design has been refined a bit I want to use them in bipedal robots such as FOBO :


The main technical addition to the basic harmonic drive design is the stabilizer which attaches to both the flex spline and the circular spline to constrain the output force to the radial axis. This reduces sheering forces on the flex spline that would otherwise destroy it quickly.

I went through around 25 iterations for the design for the flex spline and the current version has stood up to about 3 hours of use without breaking. Some tweaking of the printer settings might make the flex spline more durable. I need your help to make this design better so that everyone can have access to this great technology.

The main parts needed for the drive are:

2 radial ball bearings
1 standard sized continuous servo
48 bbs
1 radial potentiometer

A full parts spread sheet that includes pricing and links to vendor web sites is available here:

(note that some of the parts must be purchased in greater volume than necessary for a single build)

Printing the parts should take about 2.5 hours depending on your printer setting. The tolerances are really important for this build, so some tweaking of the settings might be necessary to get a happily meshing harmonic drive (be patient and edon’t despair, it is definitely possible).

Modify the servo to be continuous if it isn’t already. A good tutorial on how to do this can be found here:


Assembly of the drive should take about around 20 minutes. Step by step animated instructions can be found here:


Testing the drive can be done with any microcontroller that can control a servo. I used an Arduino Uno to control the Harmonic Drive. Follow the Servo/Knob example that comes with the Arduino development environment (for both the wiring and software).

All Apps

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

For those who've made this.

It's not clear how the wave generator attaches to the servo shaft.

I can't just put a bolt from the bottom of the wave generator into the servo shaft, otherwise the shaft will turn without doing anything. And the head of the bolts that keep the ball bearing in place would bang into the servo as it rotates.

The other option that I tried is to screw one of mounting brackets that came with the servo into the raised tabs of the wave generator. But doing that it puts the whole part too low into flex spline. I'm guessing the ball bearings should come right in contact with the inside of the flex spline teeth.

Ok I actually figured how to do this. By using one of the servo horns wedged in between the bumps on the wave generator. Everything comes to the right height. It helped to find the assembly google docs on the original website.

Next problem : The assembly guide says to insert the BBs for the ghetto-bearing one by one, and that the last ones will need pliers.
I'm not experiencing this at all. The two parts are not held firmly in place by the BBs, the stabilizer seems in danger of popping out of the outer ring. I can shove more BBs in between the two, but they will pop out as I turn the two parts. It could be due to the outer ring having a certain amount of flex (?). It's printed in PLA.

Alright, I figured I must have used the wrong size bb. I tried with .177 (4.5mm) caliber, will try again with 6mm BBs.

Definitely not meant for 6mm.

I couldn't figure out the bearing situation, so I made my own bearing that's compatible with this :

Sine wave - slew bearing
by mtourne

Hi, could anyone attached the updated CAD file with "rounded (filleted) corner at the base of the flex spline cup and a tapered wall thickness for the flex cylinder that increases in thickness as it gets closer to the mounting hub" please_?

nice work but DON'T film in Portrait mode!! plz

>hold their position without power
nop a real hd is repelling able ^^
but this plastic thing would break before... i think

Awesome design!!!

To alleviate the bending stress, I suggest you use much smaller teeth for the splines. That way, you can decrease the amount the cup has to flex to completely disengage the splines on the minor axis of the wave generator ellipse. Commercial harmonic drives are fashioned in this manner (http://www.freepatentsonline.com/7086309-0-large.jpg)http://www.freepatentsonline.c.... If you look at that image, you can see how small the teeth are in comparison to the diameter of the flex spline. This also allows you to get a higher reduction ratio.

Another suggestion that should help is to use a rounded (filleted) corner at the base of the flex spline cup. The current design has right-angle corners, which is where bending stress concentrates and failure is most likely. You can also use a tapered wall thickness for the flex cylinder that increases in thickness as it gets closer to the mounting hub. That way you have less material at the flex spline for flexibility, but more material closer to the hub to distribute the bending stress across more material.

Maybe use a timing belt for the flex part. It should not break or wear out as easily?....... Or maybe the flex spline could be cast from a silicone mold in urethane?

If the flex-spline is not lasting very long might i suggest extending the height of it. this should spread the deformation over a larger distance leading to lower stress concentrations.This is what i have done and found it to be more flexible.


Could you please post a link to the source blender files? This is just begging for a NEMA17 stepper motor implementation!

Printing a copy now on an accelerated 'bot. Lets see how the print turns out!

Sorry, I thought I had already posted the Blender file. The file is now posted! Let me know if you have any questions about the organization of the blender file. All of the parts are visible on the first layer and then most of the other layers have a single part.

A stepper motor version would be great ... that would have some crazy torque. Please share if you come up with something cool!

Will do! I'm hoping that this could find some future use in my bot as a fast and insanely powerful replacement extruder drive. Thanks for posting the file!

Made one out of PLA
amp; putting it together. Pretty sure it will self destruct, the prints didnt come out great. will try again.

Nice, your parts look pretty good from the photo! I have a sizable pile of destroyed gears that were rejects from my printer parameter tweaking;-) I'll be interested to hear if the PLA is too ridgid to flex properly. I image that there are some adjustments of the wall thickness/printer settings that must make it possible ... after all they make the flex spline out of metal in commercial Harmonic Drives ;-) Good luck and let me know how it turns out!

This is something I need to try. I have a 2 questions, do you think mounted with a servo MG995 there would be enough torque to levitate my "hand robot" at the elbow and shoulder level (http://www.thingiverse.com/thing:17773)http://www.thingiverse.com/thi..., the whole arm should weight around 1.2kg. Also I was looking at your software FOBO Poser which seems to be a super nice piece of work, and I was wondering if it could be adapted to control my above project.

Thanks for your time.

Hand robot InMoov

Cool hand! The MG996 used in the drive is rated at 10 kg/cm (which I haven't verified), so with the 16 to 1 gear ratio you should get 160 kg/cm of torque. I imagine that the mechanical friction in the system will reduce this substantially, but I haven't measured the output. I will say that I'm not able to keep the drive from turning with my bare hand (which is not the case with just the servo).

One super nice feature about the harmonic drive is that it keeps its position without power. This could be great for your arm ... you wouldn't have to burn a lot of power holding a specific position.

The Poser software definitely could be modified to work with your arm. All of the source code i
s available on the site for download. I'd be happy to give some assistance/pointers ... just let me know.

Awesome! I guess you have tested some different types of plastic for the spline, which

gives the best results?

Thanks! I've actually only tried ABS. I would guess that PLA might not be flexible enough, but I hope someone will try it. It might also be interesting to try casting the flex spline from a mold based on the 3D print ... this could open up a lot of different materials.

I've tried PLA, ABS, and PETG, all split in no time, and were really loud and annoying...
However I tried nylon for the flexible gear, much quieter and works surprisingly well. Stiff enough though you probably lose something, I'll have to post a video, but it shows no signs of wearing out and that stuff is incredibly wear resistant. I didn't do much with it as I've been working on FOBO, who took his first tethered steps last night (need to hand edit all the arduino code in the poser output to make it compatible with my adafruit servoshield, unfortunately, easy for remote_control though)

This is an animation showing how the harmonic drive works (from the Harmonic Drive wikipedia page).