Chapter 5: Introduction to Robot Mechanisms (Conceptual)

Lesson 1: Joint Types and Motion Capabilities

This lesson introduces the mechanical “alphabet” of robots: joint types and the motions they permit. We formalize joints as constraint devices that reduce the 6-degree-of-freedom (DoF) relative motion between rigid links, derive the DoF of common joints, and show how to reason about motion capabilities of a mechanism without full forward/inverse kinematics.

1. Why Joints Matter

From Chapter 4 you already know that robots are built from links (rigid bodies) connected by joints. A joint is the mechanical element that:

  • defines the allowable relative motion between two links,
  • blocks all other motion via geometric constraints,
  • sets the mechanism’s overall mobility and task ability.

Conceptually, mechanisms are “motion computers”: they convert actuator input into constrained motion. To analyze that motion, we start from basic rigid-body mobility.

2. Relative Motion of Rigid Links

Two free rigid links in 3D space can move relative to each other with \(6\) DoF: three translations and three rotations. We model the set of all possible relative configurations as a 6-dimensional manifold (often denoted by \(SE(3)\)).

A joint imposes \(c\) independent constraints on this relative configuration. If the constraints are holonomic (purely geometric), we can write them as \( \boldsymbol{\phi}(\mathbf{x})=\mathbf{0} \), where \( \mathbf{x}\in\mathbb{R}^6 \) locally represents the relative position–orientation parameters.

\[ \boldsymbol{\phi}:\mathbb{R}^6 \rightarrow \mathbb{R}^c, \quad \boldsymbol{\phi}(\mathbf{x})=\mathbf{0}. \]

The joint’s mobility (allowed DoF) is \(f = 6 - c\) provided the constraints are independent.

\[ f = 6 - \operatorname{rank}\!\left( \frac{\partial \boldsymbol{\phi}}{\partial \mathbf{x}} \right). \]

Proof sketch (independent constraints reduce dimension):

Assume \( \boldsymbol{\phi}(\mathbf{x}) \) is smooth and the Jacobian \( \mathbf{J}_\phi=\partial \boldsymbol{\phi}/\partial \mathbf{x} \) has constant rank \(c\) near a solution \( \mathbf{x}_0 \). By the Implicit Function Theorem, the solution set \( \mathcal{M}=\{\mathbf{x}\mid \boldsymbol{\phi}(\mathbf{x})=0\} \) is a smooth manifold of dimension \(6-c\). Therefore the joint allows \(f=6-c\) local DoF.

This simple counting principle is the basis for classifying joints.

3. Common Joint Types and Their DoF

Each joint type corresponds to a specific constraint set and thus a specific motion subspace. We list the spatial joints most used in robotics.

flowchart LR
  A["Start: \ntwo free links (6 DoF)"] --> B["Impose constraints"]
  B --> R["Revolute (R): 1 DoF rotation"]
  B --> P["Prismatic (P): 1 DoF translation"]
  B --> H["Helical (H): 1 DoF screw (coupled rot+trans)"]
  B --> C["Cylindrical (C): 2 DoF (rot + trans along same axis)"]
  B --> U["Universal (U): 2 DoF (two intersecting rotations)"]
  B --> S["Spherical (S): 3 DoF rotations"]
  B --> E["Planar (E): 3 DoF (2 trans + 1 rot in plane)"]
        

3.1 Revolute Joint (R)

The revolute joint permits rotation about a fixed axis, blocking all translations and other rotations.

\[ c_R = 5,\qquad f_R = 6-c_R = 1. \]

Let \( \hat{\mathbf{u}} \) be a unit axis fixed in the joint, and \( \theta \) the joint angle. The relative motion is a 1-parameter family:

\[ \mathbf{x}(\theta) \in \mathcal{M}_R,\qquad \dim(\mathcal{M}_R)=1. \]

3.2 Prismatic Joint (P)

The prismatic joint permits translation along a fixed axis.

\[ c_P = 5,\qquad f_P = 1. \]

With axis \( \hat{\mathbf{u}} \) and displacement \( d \), the allowable configurations form a line:

\[ \mathbf{x}(d) \in \mathcal{M}_P,\qquad \dim(\mathcal{M}_P)=1. \]

3.3 Helical (Screw) Joint (H)

A helical joint allows simultaneous rotation and translation along one axis, coupled by a constant pitch \(h\).

\[ c_H = 5,\qquad f_H=1,\qquad d = h\,\theta. \]

Proposition: Helical motion is a 1-DoF constraint coupling of R and P.

Proof: Start from the 2-DoF cylindrical joint (R + P about same axis), parameterized by \((\theta,d)\). Imposing the single holonomic constraint \(d-h\theta=0\) reduces the manifold dimension by 1:

\[ \mathcal{M}_H = \{(\theta,d) \in \mathbb{R}^2 \mid d-h\theta=0\} \quad \Rightarrow\quad \dim(\mathcal{M}_H)=1. \]

Thus H is a 1-parameter screw motion.

3.4 Cylindrical Joint (C)

Cylindrical joints allow independent rotation and translation along the same axis.

\[ c_C=4,\qquad f_C=2. \]

3.5 Universal Joint (U)

Universal joints allow two rotations about intersecting axes.

\[ c_U=4,\qquad f_U=2. \]

3.6 Spherical Joint (S)

A spherical joint blocks all translations but allows 3 independent rotations.

\[ c_S=3,\qquad f_S=3. \]

3.7 Planar Joint (E)

Planar joints constrain motion to a plane: two translations in-plane and one rotation normal to it.

\[ c_E=3,\qquad f_E=3. \]

These DoF values become the “building blocks” for reasoning about whole mechanisms.

4. Instantaneous Motion Capability (Velocity View)

Even without full kinematics, we can describe joint motion at the velocity level. The instantaneous relative motion of two links can be represented by an angular velocity \( \boldsymbol{\omega} \) and linear velocity \( \mathbf{v} \) at a reference point.

Revolute joint:

\[ \boldsymbol{\omega} = \hat{\mathbf{u}}\,\dot{\theta},\qquad \mathbf{v} = \mathbf{p}_0 \times \boldsymbol{\omega}. \]

Prismatic joint:

\[ \boldsymbol{\omega}=\mathbf{0},\qquad \mathbf{v}= \hat{\mathbf{u}}\,\dot{d}. \]

Helical joint:

\[ \boldsymbol{\omega} = \hat{\mathbf{u}}\,\dot{\theta},\qquad \mathbf{v} = h\,\hat{\mathbf{u}}\,\dot{\theta}. \]

Thus each joint defines a 1D, 2D, или 3D velocity subspace inside the 6D space of rigid-body velocities. This idea will later become the foundation of Jacobians (Course 2), but for now we only use it to reason about what motions are possible.

5. Mobility Counting for Mechanisms (Conceptual)

Consider a mechanism with \(n\) links (including ground) connected by \(j\) joints. Each joint \(i\) allows \(f_i\) DoF, meaning it imposes \(6-f_i\) constraints on the relative motion of adjacent links.

\[ M = 6(n-1) - \sum_{i=1}^{j} (6-f_i). \]

Derivation:

  1. With ground fixed, each of the remaining \(n-1\) links contributes 6 DoF, giving \(6(n-1)\).
  2. Joint \(i\) removes \(6-f_i\) DoF.
  3. Subtracting all joint constraints yields the formula above.

The formula is exact when constraints are independent; in real mechanisms, special geometries can introduce dependency (overconstraint), which we will mention later in Chapter 5 Lesson 3.

6. Small Computational Demos (DoF from Joint Lists)

These snippets show how engineers quickly estimate mobility and feasibility during early design.

6.1 Python (Robotics Toolbox / plain computation)


# Joint DoF dictionary and mechanism mobility counter
joint_dof = {
    "R": 1,  # revolute
    "P": 1,  # prismatic
    "H": 1,  # helical
    "C": 2,  # cylindrical
    "U": 2,  # universal
    "S": 3,  # spherical
    "E": 3   # planar
}

def mobility_spatial(n_links, joints):
    """
    n_links: total links including ground
    joints: list like ["R","R","P"]
    """
    f_sum = sum(joint_dof[j] for j in joints)
    j = len(joints)
    return 6*(n_links - 1) - sum((6 - joint_dof[j]) for j in joints)

# Example: 3-link open chain with joints R-R-P
print("Mobility =", mobility_spatial(3, ["R","R","P"]))  # should be 3
      

6.2 C++ (Eigen for quick design checks)


#include <iostream>
#include <unordered_map>
#include <vector>

int main() {
    std::unordered_map<char,int> dof = {
        {'R',1},{'P',1},{'H',1},{'C',2},{'U',2},{'S',3},{'E',3}
    };

    int n_links = 4; // including ground
    std::vector<char> joints = {'R','R','R'}; // a 3R serial arm

    int M = 6*(n_links-1);
    for(char j : joints) M -= (6 - dof[j]);

    std::cout << "Mobility = " << M << std::endl;
    return 0;
}
      

6.3 Java (EJML / basic counting)


import java.util.*;

public class MobilityCounter {
    static Map<String,Integer> dof = Map.of(
        "R",1,"P",1,"H",1,"C",2,"U",2,"S",3,"E",3
    );

    static int mobilitySpatial(int nLinks, List<String> joints){
        int M = 6*(nLinks-1);
        for(String j : joints){
            M -= (6 - dof.get(j));
        }
        return M;
    }

    public static void main(String[] args){
        System.out.println(mobilitySpatial(3, Arrays.asList("R","P")));
    }
}
      

6.4 MATLAB / Simulink (Robotics System Toolbox idea)


% Quick mobility estimate from joint list
dof = containers.Map({'R','P','H','C','U','S','E'}, [1 1 1 2 2 3 3]);

nLinks = 5; % incl. ground
joints = {'R','R','P','R'};

M = 6*(nLinks-1);
for k = 1:numel(joints)
    M = M - (6 - dof(joints{k}));
end

disp(['Mobility = ', num2str(M)])

% In Simscape Multibody, you would choose joint blocks
% (Revolute Joint, Prismatic Joint, etc.) and connect links.
      

These checks are not a substitute for full kinematics, but they prevent impossible designs (e.g., a spatial mechanism with zero mobility).

7. Problems and Solutions

Problem 1 (Joint DoF from Constraints):
A joint between two spatial links imposes the following independent constraints: (i) the origins coincide (3 constraints), (ii) a fixed axis on link A must remain collinear with a fixed axis on link B (2 constraints). Compute the joint DoF, and identify the most likely joint type.

Solution:
Total constraints: \(c=3+2=5\). Therefore

\[ f = 6-c = 6-5 = 1. \]

One DoF with coincident origins suggests pure rotation about the collinear axis: a revolute joint.

Problem 2 (Helical as Constrained Cylindrical):
Start with a cylindrical joint having independent parameters \((\theta,d)\). Impose the constraint \(d-h\theta=0\). Show that the resulting motion has one DoF.

Solution:
The cylindrical joint has \(f_C=2\). Adding one independent holonomic constraint reduces mobility by 1:

\[ f_H = f_C - 1 = 2-1 = 1. \]

The remaining motion is parameterized by \(\theta\) alone, with \(d=h\theta\); this is a helical joint.

Problem 3 (Mechanism Mobility Count):
A spatial open chain has 4 links including ground and 3 revolute joints. Use mobility counting to find its DoF.

Solution:
Here \(n=4\), and joints are R-R-R so \(f_i=1\).

\[ M = 6(n-1) - \sum_{i=1}^{3}(6-f_i) = 6\cdot 3 - 3\cdot(6-1) = 18 - 15 = 3. \]

So the chain has 3 DoF, matching the intuition of a 3-DoF serial arm.

Problem 4 (Design Reasoning):
You need an end-effector to (i) spin about a vertical axis and (ii) slide up/down along that same axis. Which single joint type can do this without coupling? Which joint type can do it with coupling?

Solution:
Independent spin + slide along same axis is a cylindrical (C) joint with \(f_C=2\). If the slide is coupled to the spin via \(d=h\theta\), the joint is helical (H) with \(f_H=1\).

8. Summary

We modeled joints as constraint devices on the 6-DoF relative motion between links, proved that independent constraints reduce mobility by their rank, and classified common robotics joints (R, P, H, C, U, S, E) by their DoF and instantaneous motion subspaces. This gives a rigorous basis for thinking about what motions a mechanism can and cannot perform, before any detailed kinematic derivations.

9. References

  1. Grübler, M. (1917). Getriebelehre. (Foundational mobility counting; classic mechanism theory).
  2. Kutzbach, K. (1929). Mechanische Leitungen und Gelenke in Maschinen. VDI-Zeitschrift, 73, 710–716.
  3. Hunt, K.H. (1978). Kinematic geometry of mechanisms. Proceedings of the Royal Society of London A, 364(1717), 1–23.
  4. Ball, R.S. (1900). A Treatise on the Theory of Screws. (Screw theory grounding helical and joint motion spaces).
  5. Brockett, R.W. (1983). Robotic manipulators and the product of exponentials formula. Mathematical Theory of Networks and Systems, 120–129.
  6. Angeles, J. (1997). The qualitative synthesis of parallel manipulators. Journal of Mechanical Design, 119(1), 5–12. (Theoretical joint/mobility view).