The nature of order is to produce life. Not life in the conventional sense, characterized by reproduction and growth, but life as a result of a balance between competing forces, where one force does not overwhelm the other other. In the sense where an ecology is a balance where one organism does not cause the extinction of the other but strengthens it. (wolf and moose)

The construction of a living order has basic building blocks. One of these blocks is the construction of joints, kinematic joints, built up from sets of constraints. These kinematic joints provide the basic building blocks for constructing all types of things. There study forms the basis of any understanding of life in the universe we occupy. We begin with an analysis of space-time and the freedoms which it provides. First we have movement, the changing of position and orientation of a rigid body in space. These newtonian ideals of motion are emergent from quantum mechanics coupled with computational intractability, but that is another story.

In this post I will be discussing kinematics and the emergence of kinematic joints from rigid constraints. In a separate post I will discuss the emergence of kinematic linkages from assemblies. We start with a rigid body in cartesian space and its six degrees of freedom: up-down, right-left, front-back, yaw, pitch, roll. There are different formulations for these freedoms and a complete analysis can be lengthy but here I will attempt to develop intuition without a rigorous analysis. The six degrees-of-freedom (dof) are typically divided into location (z:up-down, x:right-left, y:front-back) and orientation (yaw, pitch, roll). Note that there are two sides to this analysis where we consider constraints rather than freedoms or degree-of-constraint (doc) this second notion is not conventional but I believe it is helpful in developing intuition.

The development of some notation (syntax) will be helpful to the discussion. The remainder of this discussion will involve only two rigid bodies (hereafter referred to simply as bodies) and the relative motion allowed between them. One body will be referred to as “object”, the moving body, and the other “ground”, the fixed body. “Ground” is taken as our reference frame, it should not be taken to mean a plane but rather a coordinate reference system in which motion of the “object” is unconstrained but measurable. I propose a constraint signature notation consisting of three characters representing a constraint/freedom translation/rotation pair. There a four symbols indicating dimensional pairs:

- + : constrained in translation and rotation;
- X : constrained in translation but not rotation;
- I : constrained in rotation but not translation;
- 0 : unconstrained

The number of potential kinematic joints in this system are representable in ((4:3)) = 20 signatures:

+++, ++X, ++I, ++0, +XX, +XI, +X0, +II, +I0, +00, XXX, XXI, XX0, XII, XI0, X00, III, II0, I00, 000;

Some of these joints comprise the set of “lower joints”, those joints which can be simply constructed in the world.

- +++: (6 constraints & 0 dof): a coordinate system in the object is coincident with a coordinate system in the ground. Names: fixed joint.
- ++X (5 constraints & 1 dof): a line in the object remains coincident with a line in the ground, and a plane perpendicular to the line in the object is coincident with a similar plane in the ground. Names: hinge joint, revolute joint, pin joint.
- ++I (5 constraints & 1 dof): a line in the object remains coincident with a line in the ground, and a plane parallel to this line in the object is coincident with a similar plane in the ground. Names: slider, prismatic joint.
- +XI (4 constraints & 2 dof): a line in the object remain coincident with a line in the ground. It is a combination of the revolute and sliding joint. Names: cylindrical, line constraint.
- XXX (3 constraints & 3 dof): a point in the object is coincident with a point in the ground. Names: spherical joint, ball joint, point constraint.
- XXI (3 constraints & 3 dof): a plane in the object is coincident with a plane in ground. This joint has three degrees of freedom. Names: planar joint, plane constraint.
- 000: (0 constraints & 6 dof): no constraint between the object and ground. Names: free joint.
- ++~ (5 constraints & 3 dof): a special case where the elements of the pair are linked. Names: screw joint.

This only addresses some of the possible 20 and suggests, with the inclusion of the screw joint, that other signatures are possible. In fact all of the remaining specified cases can be implemented with combinations of: XXI (plane constraint), +XI (line constraint), and XXX (point constraint).

Thus we come to the main point. In CAD systems constraints are imposed between components using two mechanisms. Each mechanism uses its own set of signatures. In particular Creo makes use of two systems. It uses mechanical constraints between datums (usually with coincident constraints), the set of joints being: XXI (plane constraint), +XI (line constraint), and XXX (point constraint). It also uses kinematic joints: +++ (fixed joint), ++X (revolute joint), ++I (slider), +XI (cylindrical joint), XXX (ball joint). The difference is that when designing the components and their interface the mechanical constraint datums are introduced, while when assembling the components kinematic joints are intended. Therefore some mechanism is needed to infer kinematic joints from a set of mechanical constraints. What is the algorithm for performing this inference? This will be the subject of my next post.