Cycloidal Drive - Rev 1 Prototype Journal

Hi guys, in this page I'll be detailing my design process and research for rev 1 of the cycloidal gearbox. In this page, I'm going to try to define as much terminology as I can so it can also be viewed as a design guide.


Step 1: Cycloidal Disk 1 Profile Generation

To start off this design, we will first need to figure out how to generate the profile of the cycloidal disk. I've highlighted exactly what I am referring to in orange in the image below.

Parametric Equation Variable Definition

Luckily, this is actually a lot more straight forward than it seems. The outer profile of the cycloidal disk is based off the shape of an "ordinary cycloid". I think the best way to describe this shape is through this video, but pretty much it's a curve that theoretically is produced from the rolling of a ball around a fixed diameter. This curve can be modelled using a parametric equation, as described through this SolidWorks blog post, and uses the following variables to generate the curve:
Note 1: Gonna use different terminology from the SolidWorks blog post to reflect the diagram above. Think the consistency of terminology might make things easier to follow. 
Note 2: Monash used the same SW blog guide to make their cycloids. Still waiting to hear how Michigan and Cornell did it. 

  • R (pitch radius of fixed ring pins)
  • E (eccentricity offset)
  • Rr (radius of ring pins)
  • N (number of ring pins)

Once you define these variables, the parametric equation for the X and Y components of the cycloid curve are:

  • X = (R*cos(t))-(Rr*cos(t+arctan(sin((1-N)*t)/((R/EN)-cos((1-N)*t)))))-(E*cos(N*t))
  • Y = (-R*sin(t))+(Rr*sin(t+arctan(sin((1-N)*t)/((R/EN)-cos((1-N)*t)))))+(E*sin(N*t))

Values that require replacement are listed in bold. It's probably important to note that for the R/EN part of the curve should be interpreted as R/(EN).


For the sake of this initial guide, I will be using these values for the variables above. Justification will be listed in the next section

  • R = 50mm
  • E = 0.75mm
  • Rr = 2.5mm
  • N = 40


Defining Values for Your Variables

Here is what you need to consider when defining values for these variables.

  • R (pitch radius of fixed ring pins)
    • This is pretty much gonna define the size of your gearbox. It roughly refers to this dimension (in red), so housing is gonna be slightly bigger. This is pretty arbitrary unless you have some strict diameter requirements for the gearbox.
    • For prototype 1, I've selected a radius of 50mm completely arbitrarily. (smile)
  • E (eccentricity offset)
    • The eccentricity offset is a very important value to select. Just for some background, this page does a great job to explain how eccentricity works but I'll do my best here. The eccentric movement of the cam shaft drives the rotation of the cycloidal disk. If you have 0 eccentricity offset you just have a circle, with no cycloidal gearing profile. The closer the eccentricty offset is to 0, the closer the outer profile will be shaped as a regular circle. However, the larger the offset is, the more you approach an "ordinary cycloid" shape. This is also really bad, as ordinary cycloids are more difficult to work with mechanically. They have larger tangent variation on the outer lobes, which results in an outer profile that is difficult to work with mechanically, you need tighter and tighter tolerances to get everything to work properly.

      Essentially, you want a select a good middle ground eccentricity to "smoothe" out the ordinary cycloid profile to a contracted cycloid, but also provide enough of depth on the outer profile for load transmission. From YouTube resources and the page linked above, the general guideline I've found is that E < R/N.
    • For prototype 1, that means E< 50/40, or E <1.25. So, how did I select 0.75 as the offset? Also arbitrarily (somewhat). I modelled out the options for 1mm, 0.75mm and 0.5mm (left to right below) and landed on 0.75mm as the outer profile looks most consistent to other cycloidal disks I've seen online. I think testing these out would definitely be ideal to select the best offset for our applications though. 
  • Rr (ring pin radius)
    • Ring pin radius isn't something that has a strict guideline to adhere to, it mostly depends on how you want your design to end up looking. It seems like you just need to make sure you select a suitable radius in relation to the number of ring pins you have on your outer housing, as if you don't want to have large open gaps between each of the ring pins.
      • I selected Rr = 2.5mm, as this comes out to a diameter of 5mm which can easily be adapted to dowel pin selection. More on that later tho (wink)
  • N (number of ring pins)
    • This is probably the most important variable to define, as N directly relates to your transmission ratio. The way this equation works is that it will generate a cycloidal disk with one less lobe than the number of ring pins you choose. The transmission ratio is given by: (N-NL)/NL, thus your ratio is going to be 1:(N-1). (N= number of lobes in cycloidal disk)
    • I wanted a ratio of about 1:40, but I just picked flat 40 because it just makes the equation a bit easier to work with. Thus, the ratio of this cycloidal drive is going to be 1:39


Generating Cycloidal Disks in SolidWorks

Using all the variables selected above, the parametric equations for the cycloidal disk profile will end up as:

  • X = (50*cos(t))-(2.5*cos(t+arctan(sin((-39)*t)/((5/3)-cos((-39)*t)))))-(0.75*cos(40*t))
  • Y = (-50*sin(t))+(2.5*sin(t+arctan(sin((-39)*t)/((5/3)-cos((-39)*t)))))+(0.75*sin(40*t))

Using the equation driven curve tool, you can convert this equation to a sketch. IDK why but SW doesn't let you input the equation from 0→ 2pi, so I just input it from 0 → pi, then again from pi → 2pi

Step 2: Selecting Ring Pins

Ring Pin Configurations

Next up, I had to decide how I wanted the outer ring pins to be configured. Ultimately, there are two main design configurations for the ring pins - it can either be a solid piece of the housing (outlined in red), or it can be a free roller (point to in blue).

No description available.No description available.

I talked to Rocomo (really nice ME robotics designer whos one of Lance's friends), and he said that a free rolling configuration will have lower friction and help with load transmission, and from other research I've heard that it will also result in a drive with lower operation noise. However, going with a solid ring pin design also has some benefits - you have less parts for the gearbox, lower assembly time, cheaper (as bearings are pretty damn expensive), and there are less points of failure for the gearbox. If you go with free rollers, you need to make sure you spec out bearings or bushing that can sustain the wear and load from the cycloidal disk, and you need to make sure that the "shafts" for the bearings are able to sustain the load without failing or deforming. Furthermore, the bearing design also has a tolerance stack up to consider, as you need to make sure your rolling pins, mounting holes and bushings all line up properly with the cycloidal lobe. 


The loading scenario on the outer ring pins is described in this paper (~ pg 31), so it is something we can design for if we really need to. I'm still delving through this paper and trying to get a good understanding of it - some of it is pretty complex (especially the eccentricity section) however I think if we REALLY need to design for free rolling ring pins, we should be able to perform failure analysis with the info in the paper:

However, for rev1 prototype I decided to go with solid ring pins as it is much easier to deal with and test for an initial prototype. This is also how all of our competition (Monash, Cornell, Michigan) design their cycloids. 

Adding Ring Pins to SolidWorks Schematic

The way I designed this first drive was by creating a sketch schematic as a basis for the key components. In the same part document used to create the cycloidal lobe sketch, I added the PCD of the ring pins, and ring pins themselves offset from the cycloidal disk in a new sketch layer. It's a bit of a cluster fuck, but I've outlined all the variables currently in the sketch.

This is a really good time to take a look at your cycloidal disk profile, as you can see if you set it up properly. There should be one point of contact between all ring pins and the cycloidal disk, and there should not be any interference between the two components. As shown in the picture, it looks like I've set things up correctly so I'm gonna move on the next step. 

Step 3: Cycloidal Disk 2 Generation

Next up, we will need to generate the second cycloidal disk. I've discussed this in Actuator and Joint Drive Research, but to cover things again quickly: a singular cycloidal disk generates a lot of vibration due to it's eccentric motion, which can lead to more wear. Adding a second cycloidal disc phase shifted 180 degrees from the first will cancel out the vibrations generated by both disks. Two disks are used on pretty much all cycloidal gearboxes. I've followed this guide to design the second disc, as it isn't mentioned in the SW guide. 

That being said, setting up the second one is pretty damn easy. All I'm going to do is mirror the first disk along the centerline of the ring pins. You can check if you did this step correctly if once again, there is point of contact an no interference between the ring pins and the cycloidal disc.


Step 4: Adding Camshaft Holes

This is kinda working backwards, but next up I went back to each individual sketch and added the camshaft holes for each of the cycloidal discs. The diameter of these holes should be large enough to fit a bearing, as the camshaft needs to roll around this cutout and isn't fixed in place. Honestly, I need to do more research into selecting cam shaft diameter as I haven't found too much information into this - but I have a feeling it has to do with the loading of the shaft. I picked a cam shaft diameter of 30mm pretty much arbitrarily for the time being - I looked at other cycloidal drives, noticed the approximate ratio of cycloidal disc PCD to cam shaft hole and picked a round number in the same ballpark. Then, I spec'd out this needle roller bearing for the cam shaft. Needle roller bearings were selected over ball bearings or plain bushings due to their high load capacity. However, we will need to make sure that the cam shaft is hard and smooth enough to match the rating of the bearing. Thus, I cut out a 37.02mm hole on the cycloidal disk for a 37mm OD bearing. I based this off the clearance for a transitional ISO fit, but I haven't really learned ISO limits and fits properly so I may have fucked that one up a bit. 

Step 5: Output Ring Holes

Next, we need to add the holes on each of the cycloidal disc for the output ring pins. This brings about a lot of design decisions that need to be made for the actual output ring. First of all, a rolling or sliding element is incredible useful on the output rings to improve load transmission. I've seen people put bearings/plain bushings on the holes on the cycloidal discs, or around the output pins themselves. See below the pictures of the two options (red arrow pointing to rolling output pins, blue arrow pointing to solid pins and bushing on holes). Some people actually use both bushings on output holes and have rotating bearing pins.

However, for prototype 1 I decided to go with only bushings on the output pins. I wanted to reduce the number of machined parts as much as possible, as we don't have too many machining capabilities at the moment. I had trouble finding compatible bearing/bushing sizes given the eccentricity of my shaft. The hole for the output pins on the cycloidal ring (in red) is equal to (Diameter of Output Pin) + 2E. My eccentricity was 0.75 and all standard dowel pins come in integer values. It was pretty difficult to find compatible values. 

Increasing the number of output pins will help distribute loads better, but obviously you poke more holes in your disc which can complicate it's force loading. Also, more pins means more components and more assembly. I went with a conservative 12 pins for the time being, although this number can definitely be optimized through force analysis. The paper linked in step 2 describes loading calculations for pins we can use down the road. 

For prototype 1, I spec'd out some cheap 5mm diameter dowel pins that will act as the output pins, so the diameter of the holes on the cycloidal disk are (5mm + 2*0.75mm) = 6.5mm. Just as reference, Monash uses 3mm output pins. I chose an output pin centerline diameter of 65mm as it was approximately in the middle of the disc. I applied this cutout to both cycloidal discs.

You will know you did everything correctly if you add the output ring diameter to the middle of the housings, and the 5mm pins line up between the "eye" of both holes.

With that, the sketch schematic is finished! Note: I've found that the equation driven curve is a bit wonky and randomly flips planes while I work. Found that if I save and close the sketch it goes back to normal. Not too sure what the deal with that is. 

Step 6: 3D Modelling

Cycloidal Discs

Next, it's time to move to 3D modelling. Lets start with the cycloidal discs. Both discs will be extruded to a length of 12mm to match the needle roller bearing I spec'd out. I added some ribbing to reduce weight because a 12mm thick cycloidal disc seemed super chonky. These aren't backed by any load calculations lol, I just offset everything by 3mm. Disk A (bottom disc) is on left, and disc B (top disc) is on right. I gave them different ribbing patterns so you know which ones are which. The rib patterns will actually face each other (this will make more sense when I show the assembly. Both have a material of 7075-O aluminum, but ideally 7075 hardened aluminum should be used for these discs (as that is what other teams use). 

Ring Pin Housing

After the cycloidal discs, it's pretty easy to design the ring pin housing. The only notable thing here is that I made my ring pins 25mm high despite the cycloidal lobes being 24mm high. That's because I want to have a slight gap to sauce in grease, and will also be putting a gap in the cam to create some distance between disks 1 and 2. More on that later though. Also, it's a good idea to have good clearance for your cam shaft here - make it as big as you can while making sure the cam/bearings are actually supported on the plate. Motor mounting holes are also important to put here, but we don't have any motors picked out so I spec'd this design to be compatible with this cheap stepper motor for testing. 7075 aluminum is also the material to choose here - as explained by Monash. Not ideal compared to steel in terms of wear, but light so it is good for the arm. 

For rev 1, I'm also going to arbitrarily add mounting holes to the outer profile for the cycloidal drive lid. (smile) 

Eccentric Shaft

For the cam shaft, I separated it into three parts - a shaft adapter for the motor, then the eccentric cams for each disc. All components will be separated by a set screw for now, but probably a key way on a more refined revision - I just need to get familiar with keyway installations. Having this shaft be three separate parts allows for easier trouble shooting, although it does complicate assembly. I may want to try to combine this into one part in a future revision, but for now its just gonna be three so modular testing of different discs are easily accessible. The shaft has a double D profile so I can use the same cam adapter on both sides of the eccentric shaft. I made the shaft in a separate assembly to keep simplify mates in the main assembly, so I added the roller bearings over each eccentric cam. 

Next up, I added a large plastic spacer to fit around the shaft in between the eccentric cams. This spacer is used to reduce the friction between the two cycloidal discs and is made from PTFE. It is a custom part, but should be easy enough to work with. For context, PTFE is a very low friction plastic that is commonly used in dry running bushings. I was thinking we just buy 1mm thick stock sheets of PTFE, 3D print a cutting jig for the washer and exacto knife the sheet. We really don't need any tight tolerances for this piece. It would probably be better to replace this with a thrust bearing, or it may be unnecessary all together if we just use good grease. 

Lastly, I added a flanged bearing to sit on top of the second disc, and interface with the output shaft. The output shaft and input shaft are concentric, but rotate on different axis. I went with a flanged bearing to minimize contact area between the two. Forces on this shaft should be low (just from my intuition), so adding the bearing is really just to reduce friction. This could probably be replaced with a plain bearing if need be in the future, we would have to test and see how things go. Shaft stack up is done!

Output Shaft

Next up, I modelled the output shaft. First off, the output shaft was designed to match the hole pattern of the dowel pins (65mm diameter, 12 holes). However, instead of going with a 5mm diameter to match the dowel pins, I went with an 8mm diameter. I wanted to add plain bushings to these output holes to allow the dowel pins to rotate smoothly with lower friction , so I found some cheap oil embedded bushings and added 8mm diameter holes for their installation. The large hole in the center matches the outer diameter of the thinner part of the flanged bearing. A cross section will be shown later to give greater context on that one. The bottom of the output shaft plate features a shoulder for the bearing flange, and the top has tapped holes for shaft output mounting. 

I mated the bushings and dowel pins into the output shaft plate, and added another PTFE spacer to the top of the assembly. This will eventually interface with the lid for low friction, as you can see in later pics. The dowel pins are a little bit short for this initial design as I wasn't able to find dowel pins with exact lengths. TBH we could probably machine these dowel pins ourselves and save a lot of money if someone has lathe training, its literally just a cylinder. 


Main Assembly

Now I can add all the parts together. The ring pin housing mates directly to the stepper motor. The cam shaft adapter, eccentric cam A and roller bearing B are all mated to the motor shaft. Disc A is mated to the roller bearing. 

The PTFE spacer is stack on cam A, then all the parts for disc B are installed on the shaft. In actual installation, the flat side of both disc A/B and their cycloidal profile should be greased up. 

The output shaft fits inside the common holes between both discs and then is installed on the flanged bearing. Pins should definitely be greased to allow for easier installation into discs. Then, the lid is fixed on top of the drive using the holes on the ring pin housing. The top of the output shaft sticks out from the lid about 0.5mm (off by 0.001 due to some imperial conversion BS). I did this intentionally so any components on the output don't rub against the fixed lid.

Cross Sectional View of Assembly:

I didn't include fasteners or set screws as they aren't super critical for testing this out in CAD (i got lazy). 


Step 7: Troubleshooting

After making the assembly, I couldn't get the cam mate to work for the cycloidal disc and the ring pins. Shit did not mate whatsoever. I also tried to do a motion study to validate the design, but I was treated to this bad boy:

 Failure and Regret

The fact that I was unable to mate the cycloidal disc to the ring pins with a cam mate is a pretty bad sign. Something did not go right with this initial revision lol. 

After a lot of investigation, I think I was able to isolate the issue. The cycloidal disc and ring pins weren't mating properly as I used an repeating decimal fraction in the equation, as R/(EN) = 50/(0.75*40) = 5/3: 

  • X = (50*cos(t))-(2.5*cos(t+arctan(sin((-39)*t)/((5/3)-cos((-39)*t)))))-(0.75*cos(40*t))
  • Y = (-50*sin(t))+(2.5*sin(t+arctan(sin((-39)*t)/((5/3)-cos((-39)*t)))))+(0.75*sin(40*t))

This made SW absolutely shit the bed. I went back and redid all the model generation, this time using an offset of 0.8 to get a definite number. The equations now read as:

  • X = (50*cos(t))-(2.5*cos(t+arctan(sin((-39)*t)/((1.5625)-cos((-39)*t)))))-(0.8*cos(40*t))
  • Y = (-50*sin(t))+(2.5*sin(t+arctan(sin((-39)*t)/((1.5625)-cos((-39)*t)))))+(0.8*sin(40*t))


Fine Tuning Motion Analysis

Motion analysis is used to test/animate the motion of assemblies in SolidWorks. Right now, I figure that if I can't get the cycloidal gear to work as intended in SolidWorks Motion study, theres a good chance that it won't work IRL. I've been having a lot of trouble getting the current rev1 design to animate properly. So, I decided to design a super basic new version of the cycloidal drive to try and figure out where I messed up.

For this isolated test, I increased the 3D contact resolution from the basic version, and decreased the accuracy to these settings: I also changed the frames to 15 fps so stuff would render faster.

To set up the motion study, you need to make sure SolidWorks motion add in is enabled, go to "motion study" and select "Motion Analysis". 

I applied a 40 RPM rotation on the motor shaft, and defined contact between the cycloidal disc and ring housing. I also defined a contact group between all of the outer shaft ring pins and cycloidal disc 1 to start. I turned off material and friction when defining contact points, as I'm too unfamiliar with motion studies to figure out how much of an affect they have on your results. I left the elastic properties on the current default settings.

This yielded some good results, as you can see below:

 Single Disc Motion Study

I had some trouble initially setting up the motion study for the double disc operation, as you can see below there is interference meshing between the outer disc and walls.

 Failed Double Disc

However, I realized this was my bad: you need to make sure that you PROPERLY line up the output and input pins at the start of the study to get things to move correctly, as the discs are asymmetrical. After making some fixes, I got it to work.

 Successful Double Disc

I know solidworks is fine, so now I need to figure out wtf is going on with rev1...


Fixing Prototype 1

Now I needed to figure out why prototype 1 wasn't working. I set up a test assembly with one disc, the eccentric shaft stackup and the ring pin housing. After adjusting the parameters of the motion study to match the testing above, I learned that the motion study once again, did not work. I made a super simplified cam shaft and re tested the assembly, and found good results: 

 Simple Cam Shaft Prototype 1 Motion Study

I ran into more issues when testing dual disc set up. It's a lot to explain so I wont discuss it all, but pretty much I wasn't able to get the motion simulation running properly. I ended up making a bunch of minor iterations to the discs, so I removed the ribs as they were making it difficult to iterate. One thing I also did which was a really good idea was add alignment cutouts. The two holes identify the optimal location to place the discs in initial installation, which will be very helpful for actual assembly. 

Finally Getting A Working Motion Study

After a lot of labour and minor revisions, I finally got a working revision. I re CAD-ED disc 2 from scratch, and manually mirrored the disc on the origin rather than using the sketch schematic. Tbh, I don't think this really matters - the main fix will be discussed in a bit.

I made the alignment holes thru holes, and still haven't added the ribs back to the design yet. Will do that later, it's not super important for this initial revision anyways. 

I also took the dowel pins out of the output shaft to let them rotate on their own in the simulation.

Lastly, the main thing I changed was the 3D contact resolution of the motion study. I changed it from 50-70 which seemed to fix my issues. Everything seems to work fine now.

Check out the motion study!

cycloidal drive prototype 1.mp4

Next Steps

This initial design is mainly intended to create a bare bones design we can try out with minimal parts to fabricate, as we don't have access to our campus machine shop right now. There is a LOT of stuff I think I need to figure out through testing:

  • reducing diameter of the entire actuator and readd ribbing/cutouts to minimize weight
  • See if I can replace the flanged bearing with a plain bushing for lower cost/simplified assembly
  • Use thinner cycloidal discs than 12mm. 12mm is the smallest width of needle roller I could find on McMaster, so once torque calcs are finished by Mathieu I'll get an idea of the load on our joints and see if I can switch to a smaller profile/thinner bearing. I'm thinking some bearing is going to be necessary here rather than a bushing, as minimal friction is really important on the cam to properly transmit the motion of the disc 
  • Investigate the feasibility of adding sliding/rolling ring pins (instead of solid). Once torque calcs are done, I'm going to look into how feasible it would be to add free rolling shafts on the ring pins to reduce friction. All other teams who design their own drives go with solid ring pins, and I think that is to simplify their assembly and to make sure the cycloidal drive doesn't fail under higher loading (as free rolling rin pins can break or deform with too much force applied)
  • See if a key way is necessary instead of set screw on cam shaft
  • TEST OUT THE FIT. Building this ASAP would be very useful. I think the best way to test this would to be to print out and test the first few iterations of this gearbox. We would install OTS components and see if it actually works - see how the tolerances play out and whatnot. This designed is also adaptable to be made with metal, so once I learn from initial prototypes we can get these fabricated at a machine shop for further testing. 3D printing iteration before metal fabrication is highly recommended by Monash, and even though tolerances don't translate exactly I think testing with 3D prints is a good way to validate design.
  • Loading testing would also be very important to perform, with a flat lever attached to the drive to see how the torque transmission actually plays out. This would also let us test for backdriveability and backlash. 
  • See if we need to install bushings/bearings on the radial holes on the cycloid disks. Right now I think we may be able to get away with just having the bushings on the output shaft hub and greasing up the dowel pins
  • Make our own dowel pins. This would really free up the geometry for the design and they are super easy to make on a lathe
  • See how the PTFE sheets work out as a low friction medium. I'm a bit suspicious that they will just wear out and die super fast - in which case some grease or even a thrust bearing could be used as an alternative

All of these parts for rev 1 are in the 2022 folder, so take a look. PLEASE give feedback in the comments below (smile)