Part 1 - Initial Development

The Design

The basic idea behind exact constraint starts from the properties of rigid bodies. In 3-dimensional space a single rigid body inherently has 6 degrees of freedom. If we use a Cartesian space for reference, then these DOFs are:

  • 3 Translations:
    • Along the X axis
    • Along the Y axis
    • Along the Z axis
  • 3 Rotations:
    • About the X axis
    • About the Y axis
    • About the Z axis

Now, for the sake of simplicity, let's first consider a particle in 1-Dimensional space. Say, how about a bead on a taut string? The bead can move along the length of the string (for this illustration, let's ignore the bead's rotation). Then, if we make the string vertical, the weight of the string will pull the bead to the end of the line. We can shake the system, make the bead jump and dance along the string, but the moment we bring it to rest with the string vertical again, in the same orientation as before, the bead will return to its previous resting point at the end of the line. If we measured its position from the end of the string, we will get roughly the same value!

Of course, there might be some small error, but to the naked eye the bead will be at basically the same spot. Surely, in a course on precision product design, even these small errors are important, and we will get to them. For now, tho, I want to expand on this concept we have just looked at - namely, what happens when we add more dimensions? The bead as we considered it had 1 DOF we wanted to control by making the string vertical, but as mentioned before about 3D space, there are 6 DOFs to deal with for a rigid body. So how can we deal with them, to come up with a planar exact constraint system?

The first key idea is that we are, as the name suggest, limited to a planar motion. Imagine moving your phone around on the table. But, you're not allowed to pick it up! In fact, let's say you are only allowed to use one finger. You can slide it left and right, or closer to you and then away. You can also make it spin on its back. My phone case has a small metal disc on the back, to mount it on a magnetic base when I drive, so making it spin is fun - it goes for a while!

The phone itself has 6 degrees of freedom, like any rigid body. But the moment I say you must rest it on the table, the surface and gravity act together to constrain 3 of these. You are left with the 2 translations and the one rotation mentioned above. So, how many turns can you make your phone take before it stops?

In order to design an exact constraint system, we have to figure out a way to deal with the remaining 3 DOFs. If we turn back to the bead example, we see that there is a force (gravity) holding the bead against a limit, or point of contact. And, certainly, the idea is that you will need one point of contact per degree of freedom (there are more complex scenarios, such as dealing with axisymmetric bodies, but we'll stay clear of those for now). So, in the example of the phone, let's assume that because we are limited by the surface of the table, we effectively have 3 points of contact there (since 2 points make a line, and 3 points make a plane).

We need to add 3 other points of contact against which we can hold our rigid body to hold it in place. Let's assume that our part is a square (or perhaps a rectangle, like the phone). Then, by adding two pins against which we can press one side of the part will help us constrain one of the translations and the rotation. Then a third pin can be placed along an adjacent side to limit the final translation. This would look like:

Now, in order to allow a user to explore the various behaviors of this design for different configurations, I would look into simple yet powerful ways of enabling the customization of the device. If the pins could be moved, for example, a user could try out different arrangements and feel the system's various responses to input loads, answering conceptual questions like:

  • At what point does it become unstable?
  • How far do the pins really need to be from one another, for what I want to build?
  • What happens if I place the pins further away from the corner?

For this purpose, my design would allow a user to move the contact points along two edges, placing the pins in holes drilled every few millimeters or so. The exact dimensions I'll determine based on the materials I can get my hands on later this week. Here's what it would look like:

The Model and Script

The next step is to develop a model to analyze the system. In particular, what are the reaction forces at the constraint points? How do they relate to the input forces applied to the system? Consider the following arrangement:

Now, note that the layout shown has a force F pointing roughly towards the lower left corner of the body. I am using the convention that a positive force value points along the positive direction of its axis. In other words, the force F shown above has negative component values for both X and Y. From this layout, then, we can build a mathematical model of the system based on the force balance and moment balance equations:

In order to solve for the various reaction forces, I decided to write a MATLAB script, where I can input the various geometric parameters of the system, such as the width and height of the rectangular body, as well as the position of the pins and the force input. The script then uses these parameters to build the system of equations in a format suited for linear algebra:

This system of equations can then be solved in MATLAB by using either the linsolve() function or the backslash ("\") operator. The script then proceeds to evaluate the results. If an issue is found, such as a force that would pull the body away from the constraints instead of towards them, or the pins being out of reach of the body, an error message is printed. These messages include information the designer might find helpful in reviewing the design. If no issues are found, the script will then proceed to generate an illustration of the planar exact constraint system produced by the user's inputs. In the rendering, the positions of the supports and the point where the force is applied are shown.

This rendering in particular is for a design based on the inputs below. Note that units are not specified - these will be the same as those the user intended to input, as the script does not perform (nor does it need to) any conversions beyond multiplying a force unit by a length unit to obtain the corresponding torque unit.

Length of body along X axis: Lx 10 units
Length of body along Y axis: Ly 10 units
Position of first support along X axis: a 2 units
Position of second support along X axis: b 8 units
Position of support along Y axis: c 5 units
Position of force input along X axis: x 5 units
Position of force input along Y axis: y 5 units
Magnitude of force input along X axis: Fx -2 units
Magnitude of force input along Y axis: Fy -2 units

These input values produce the following reaction forces:

Reaction at first support along X axis: Ra 1 units
Reaction at second support along X axis: Rb 1 units
Reaction at support along Y axis: Rc 2 units

If you want to check out my script, and perhaps even run your very own scenarios, you can find a copy here:

Modification, Building & Exploration

This time around, my peer review group met before we built our devices, so you'll find out about this section in Part 3!

Part 2 - PREP

Team Review and Feedback

Last week, my team met via video conference due to poor weather conditions. This time around, we we able to meet in person, so we scribbled some thoughts on each other's notebooks. Let's try to decipher these ink scratchings!

As shown in earlier in Part 1, I decided to approach this problem from a simplified perspective. This was reflected in my original notes by talking about nodes and points, instead of necessarily writing about parts. Looks like Julian liked this view, since in his opinion this makes it easier to realize the following: "2 nodes don't have to be 2 distinct supports, [they] can be from [the] same part."

The next comment relates to a brief thought exercise I added in my notes: while my design was based on straight edges, I drew up a quick sketch of a body with a curved side to think about how this change in geometry could be reflected in the definition of the constraint system. In my notes, I added a quick mention of how rotation and translation would be related. This is important, because in Part 1 I had mentioned briefly that the 3rd support point would remove a translation, but the curved profile now has at least some rotation still.. In that sense, Aaron sheds some light on this side thought of mine, by reminding me to think in terms of instant centers of rotation. This validates the idea that the first two points constrain 1 translation and 1 of the remaining DOFs; the third point then addresses the final DOF - be it a rotation or translation. By the way, I'm using this sequence as a tool to visualize the behavior of the parts as they move around, as they interact with one another.

Looks like everything else looked good to them:

Last, I showed my group what I had posted in Part 1 about my design, and the idea of drilling one row and one column of holes to move around a set of pins. They seemed to like the idea for both its simplicity and power in demonstrating the planar exact constraint system. Great!

Part 3 - Rework & Updates to Part 1

Modification, Building & Exploration

With all the great feedback from the peer review, it seemed like my design offered enough flexibility to showcase the planar EC and let a user explore the system's sensitivities by reconfiguring it. Time to start building!

Of course, this meant finding material to work with, first of all. If you already looked thru other sections of my website, you might have learned that I enjoy woodworking as a hobby. In that very spirit, I decided to make my device out of wood - it simply depended on what I could get my hands on at the Hobby Shop. I was expecting to find some plywood I could work with, but to my surprise I happened to come across a piece of oak that had been marked for scrap. Happy coincidence that this board was about the right size for what I wanted to make as a base, if a bit wide. It did have a slant to it, but I decided to keep both of these as features (maybe I'll add a plaque on that extra length later, explaining what the toy is). A few passes on the Joiner and I had some nice smooth surfaces to work with. Win!

Next was the rigid body to be constrained. Some more digging around in the scrap piles earned me a board of mahogany I could easily cut up into a square. Double win!

Here's a picture showing the oak and mahogany pieces. At this stage, I'd already cut out the square for the body, which rests atop the oak. The rest of the mahogany is on the right, with the sanding block on it (someone had already cut out a chunk of it).

Here's a picture of the finished product:

Get In Touch.

Want to reach out? Feel free to use this form, or email me directly and I'll be happy to get back in touch soon as I can. Be sure to include how I may be of help or why you would like to connect.

Your message was sent, thank you!