Using CAD to Synthesize Mechanisms
When I am designing a linkage mechanism I often have some particular motion that I need to achieve. In this article I explain the first step in this process, defining the joint positions and linkage lengths required to produce a particular motion. I have found that the constraint based sketcher within SolidWorks, and many other parametric CAD softwares, provides an ideal tool for this job. This enables you to constrain the mechanism in a way that represents your design intent while leaving the unknown variables, such as the length of joints and the position and orientation of pivot axes, to be solved by the geometric constraint solver.
The two examples in this article each take a step-by-step approach to synthesising a mechanism, using SolidWorks. The first example is in some ways extremely simple, involving a single linkage rotating about a revolute joint. It is complicated because the starting and finishing positions of the link are known but the required plane of motion is not known. It is therefore a 3D problem which is difficult to solve with conventional graphical methods but which can be easily solved using the correct method in a 3D sketch. The second example is a four-bar linkage which is synthesised to produce a specified motion path.
There is something of a gap in the pre-packaged tools and published methods for mechanism design. There are a lot of tools available within CAD software to analyze mechanisms once the basic linkage design has been created. These provide information about the paths, forces, accelerations and other dynamics of a mechanism which has already been defined. Methods of synthesising a mechanism to produce some required motion are also well known within classical machine design and specialized software exists which recreate these methods. However, it is often far more convenient to use your existing software to perform this task. This is a great example of the enormous power of the geometric constraint solver which lies at the heart of the constraint based sketching in a parametric CAD program such as SolidWorks. With creative use, constraint based sketching can be used to intuitively solve many problems, from machine design to optics.
Synthesizing a single linkage for a 3D transformation
My first example involves moving an object from one pose (position and orientation) to another pose, by rotating it about a single axis. The problem involves finding the axis of rotation which will produce this transformation. This could be solved mathematically by solving the transformation matrix but it is often more convenient to do this within the CAD software. I’m using a simplified aircraft landing gear, perhaps on a model aircraft, which must move between a position on the ground, aligned with the forward direction, to a position flush with the tail of the aircraft.
Defining wheel poses – the design intent for the mechanism synthesis
We start by defining our design intent with a series of sketches in a master assembly file. These give the deployed and stowed poses for the wheel. I have provided a step-by-step account of how I have done this although there are many ways it could be achieved. If you don’t want to recreate this geometry, you can skip to the actual mechanism synthesis section.
First, sketch a plan view showing the rear fuselage section and wheel position:
And next, a side view of the wheel in its deployed position, sketched on the center plane for the wheel:
Next, we create a fuselage part and define the profile and centreline in the context of the assembly, using the sketch we just created to reference the part geometry. We then revolve a thin solid in this part to represent the outer skin of the fuselage:
After revolving the fuselage I realised the wheel was not positioned low enough, so I also corrected this position:
In order to conceal the wheel within the fuselage,while consuming minimum space,define the stowed position of the wheel,tangential to the fuselage and offset by half of its thickness. I located this by first sketching a construction line in the original plan view sketch, giving its plane-normal vector and position:
The plane of the stowed wheel position is then defined at the end of and perpendicular to this line:
To help with visualisation, you can add a sketch showing the final pose of the wheel. This completes the definition of the wheel poses – the design intent for the mechanism synthesis.
Going back to the original problem definition, we are trying to define a single axis of rotation which will rotate the wheel from the deployed pose to the stowed pose. To synthesize such a mechanism, we can define the required axis in terms of geometric constraints by first applying some Euclidean thinking. The axioms, or in this case kinematic truths, are that to obtain the required motion:
- To rotate about an axis from one pose to another, all points on the wheel must move in circular paths about a common axis by the same angle.
- A circular path maintains a common distance from a point in space.
- All points on a circle lie on a common plane which is perpendicular to the axis of rotation.
- We require the wheel’s pose to be defined in 5 degrees-of-freedom, we don’t care about rotation of the wheel about its axis. Therefore,if we satisfy the 2nd and 3rd axioms for two points on its axis,we will obtain the required rotation to the final pose in the required 5 degrees of freedom.
Translating these axioms into sketch constraints,we create the following geometry and constraints in a single 3D sketch:
- We choose an arbitrary first point on the wheel’s axis. For convenience, I will use the center. We sketch a line between the wheel center in the first pose and an arbitrary point in space. To do this we need to be in a 3D sketch and it is important that the line is not constrained in any other way. We then sketch a second line, between the center of the wheel in the second pose and the arbitrary end of the first line. We apply a constraint to make these two lines equal in length, satisfying the 2nd
- We do the same thing for a second point on the wheel’s axis, in keeping with the 4th
- We now create a 5th line, joining the intersection points for the two pairs of lines created in steps 1 and 2. This line will become the axis of rotation we are trying to find.
- We make each of the four lines created in steps 1 and 2 perpendicular to the axis we created in step 3. This satisfies the 3rd axiom for the two points. At this point, we should find that the 3D sketch is fully constrained and that the axis we created in step 3 is now the desired rotation axis. We can test this by assembling a new component to rotate about it.
Now let’s put this into practice. Begin by creating a new 3D sketch. All of the following geometry, used to locate the axis of rotation, should be created in the same 3D sketch, allowing the constraint solver to solve for the entire problem definition. First, we need two common points on the wheel axis. For convenience, we will use the center of the wheel as the first point and the second point will be the other end of the normal-vector line we created for the wheel in its stowed position. So we only need to create a single line on the deployed wheel, of equal length to the line on the stowed wheel.
Next, create two lines, one starting at the center point of each wheel and joined at an arbitrary point in space. To ensure that this point is truly arbitrary, be sure that the lines are not constrained in any way. Check them by selecting them in turn, and if any automatic sketch relations have been created then delete these relations. Also, try dragging the lines around to ensure that they are constrained to the wheel centers and that they are joined to each other. Finally, select both lines and make them of equal length.
Now, repeat this process to create two more lines connected to the 2nd points on the wheel poses and meeting at their other ends. Again, check that the lines are properly connected and that there are no unwanted automatically-created sketch relations, before making the lines of equal length.
Now we create the axis which has been the aim of our mechanism synthesis:
Finally, create sketch relations making each of the four lines connected to the axis, perpendicular with the axis. As you are creating these constraints, you may find that the sketch fails to solve, with lines becoming red and yellow. If this happens, undo the last sketch relation and drag the lines to a new location before recreating the constraint. There is a bit of intuition involved in moving them to a sensible location, reasonably close to where the rotation axis should be. Try to visualize how the wheel should be rotating and be patient if you need to repeat this step a few times before the sketch solves.
Once you have made all four lines perpendicular to the axis, all geometry should turn black, indicating that the sketch is now fully defined. You might not be entirely convinced yet, but this should mean that the axis is now in the required position and orientation to rotate the wheel exactly from its deployed pose into its stowed position and orientation. You should now exit the 3D sketch and save the model. Any subsequent geometry creation can now reference this sketch.
Verifying the mechanism synthesis
To verify that the axis of rotation does indeed move the wheel between the required poses, we can create a component and drag it between them. A wheel component can be created in the context of this assembly which is fixed in the deployed pose and has a reference line on the line which defines the axis of rotation that we just created. If a second instance of this component is then inserted into the assembly, it can be mated to the rotation axis, so that the wheel can be dragged about the axis of rotation to validate the motion path.
Note that although in the construction sketch, which we have just created, the axis of rotation was drawn as a short line, the actual axis of rotation is of infinite length. You may wish to consider where along this axis you would actually want to position a pivot bearing. You may notice that it is not really possible to find a convenient location for the pivot bearing, which would ideally be close to the lower surface of the fuselage and between the poses. In a future article, I will look at how to synthesize some more complex mechanisms which might be more practical for this application.
Synthesizing a planar 4-bar linkage
Another common type of mechanism is a planar 4-bar linkage. These can be synthesised to produce more complex, non-circular motion paths, or to create more compact mechanisms. The method used to synthesize a planar 4-bar linkage is quite different to the previous example. Since the mechanism is planar, all the construction geometry used to synthesize it can be created as normal 2D sketches on a single plane. Also, since the axes of revolute joints are perpendicular to this plane of motion, these joints may be simulated by simply using unconstrained connections at the endpoints of lines. If the mechanism contains a prismatic, or sliding, joint then this can be simulated by making the endpoint of a one-line coincident with another line. These methods of quickly mocking-up mechanisms are well known and sketch blocks may also be defined in this way within SolidWorks. However, the methods explained here go beyond simply modelling the motion of a mechanism to actually synthesizing the mechanism to produce a specified motion path.
It should be noted that different arrangements of 4-bar linkages produce quite different types of motion. Essentially the same method is used to synthesize each of them, but this is likely to fail if you start with the completely wrong initial arrangement. I give one example here, but if you require a completely different type of motion then you should first familiarize yourself with the many standard configurations of 4-bar linkage. There are many books and websites which cover these.
The fundamental method for the synthesis of all types of 4-bar linkage is to:
- Define a number of positions along the desired motion path.
- In a single sketch:
- Approximately sketch the mechanism located at each of these positions, ensuring that the stationary, or ground, link is constrained to have a common position for each of these.
- Add constraints so that the linkages in each position are the same size and shape, differing only in position.
- Add any dimensions or constraints necessary to fully constrain the sketch, using these to obtain a mechanism which meets any as yet undefined objectives.
- Sketch the mechanism in one more intermediate position, again located to the ground by the same joints and having the same linkage lengths.
- Drag this final sketch through the range of required motion, validating that the correct motion is obtained and that it doesn’t have issues such as jamming or reversing.
- If necessary, make any modifications to the additional dimensions and constraints, created in step 4, in order to correct any issues encountered. This may not be possible in some cases and you might need to try a different configuration of 4-bar linkage or some other more complex mechanism.
One of the many 4-bar linkages to approximate straight line motion
In this example, we will synthesize a mechanism to produce a motion path 100mm long with a radius of approximately 10m. Although this could be achieved with a simple revolute joint, located at a radius of 10m, this would be a very large mechanism for a movement of just 100mm. Using a 4-bar linkage, we can create a far more compact mechanism. First, we create a simple sketch with the desired motion path.
Next,create another sketch containing the 4-bar linkage mechanism in three approximate positions, each constrained to a point on the motion path. The point on the ‘floating link’ which actually follows the motion path is known as the ‘coupler point.’ For simplicity, the midpoint of the floating link has been used as the coupler point in this example. For more complex motions, the coupler point may be easily offset from the axis of the floating link by creating a triangle instead of a single line to represent the floating link. If you do this, just be sure to make each side of the triangle the same length in each position.
For clarity, each position has been coloured differently in the image below and the joints fixed to the ground have been annotated with the standard symbol for a fixed support.
Each of the three moving linkages is then constrained so that it is of equal length in each position.
Finally, additional dimensions are added as required. I’ve chosen to set the lengths of the linkages (aiming for a compact mechanism) and the minimum transmission angle (to ensure that the mechanism does not lock). The minimum acceptable transmission angle depends on a number of factors such as the power to be transferred, the required efficiency and the bearings used.
The final step is to validate the mechanism. In a separate sketch, the mechanism is sketched again using the same ground joint positions and link lengths but without constraining it to any point on the motion path. This can then be dragged through the range of motion to validate that it functions as intended.
I hope you found this introduction to mechanism synthesis using SolidWorks helpful. By thinking about geometry, the techniques can be adapted to solve many mechanism synthesis problems involving both planar and 3D mechanisms with up to 4 linkages. In my next article, I will cover some more advanced techniques for synthesizing more complex mechanisms. I would like to give credit to Satyajit Ambike and James Schmiedeler for their work on Geometric Constraint Programming for mechanism design, which opened my eyes to using CAD software in some new ways.
About the Author
Dr. Jody Muelaner’s career began in machine design, working on everything from medical devices to saw mills. He trained in AutoCAD in 1997 and transferred to SolidWorks in 2002. Since 2007 he has also been involved with quality engineering in aerospace manufacturing. This work unifies SPC, MSA and metrology to enable optimized production systems. His interests also include bicycle design. Visit his website for more information: www.muelaner.com