Machinery TwinDocs

Kinematics reference

The formal definitions behind the solvers, DH convention, linkage branches, trapezoid profiles.

For the engineers who want the equations. Nothing here is required to use the product; everything here explains exactly what the solvers compute.

The DH convention

The serial manipulator uses the classic (1955) Denavit–Hartenberg convention. Frame i is reached from frame i−1 by four operations in order:

  1. Rotate about z(i−1) by θᵢ, for revolute joints, θᵢ = joint variable + θ offset
  2. Translate along z(i−1) by dᵢ, for prismatic joints, dᵢ = joint variable + d
  3. Translate along the new x by aᵢ
  4. Rotate about the new x by αᵢ

As a homogeneous transform:

T(i-1→i) = Rz(θi) · Tz(di) · Tx(ai) · Rx(αi)

Forward kinematics is the product T(0→n) = T(0→1) · … · T(n-1→n); the TCP pose is the position and orientation of frame n. Workspace (IK) mode solves the inverse numerically within the configured joint limits.

Deriving a DH table

  1. Assign zᵢ along each joint axis (rotation axis for revolute, sliding direction for prismatic).
  2. xᵢ runs along the common normal between zᵢ₋₁ and zᵢ.
  3. Read off: d (offset along zᵢ₋₁ between x axes), θ (angle about zᵢ₋₁ between x axes), a (distance along xᵢ between z axes), α (angle about xᵢ between z axes).

A worked 6R DH table

A generic elbow arm (dimensions in scene units):

Jointdθ offsetaα
J1 (base yaw)400025-90
J2 (shoulder)0-904550
J3 (elbow)0035-90
J4 (wrist roll)4200090
J5 (wrist pitch)000-90
J6 (flange)80000

Remember the world is Y-up while DH chains grow along Z, rotate the object's base by X = -90° (why).

Four-bar linkage

Solved via the Freudenstein equation. With ground length g, input link a at angle θ₂, coupler b, output c at angle θ₄:

K1·cos θ4 − K2·cos θ2 + K3 = cos(θ2 − θ4)
K1 = g/a,   K2 = g/c,   K3 = (a² − b² + c² + g²) / (2·a·c)

This is quadratic in tan(θ₄/2), hence two branches (open/crossed); the solution flag picks one. Feasibility follows the Grashof condition: with s/l the shortest/longest links and p,q the others, continuous rotation of some link requires s + l ≤ p + q; otherwise the input can only rock through the range where the coupler loop closes.

Five-bar linkage

Solved by circle intersection: each crank pin traces a circle of its coupler length around the crank tip; the coupler point is an intersection of the two circles. Two intersections per chain configuration give the four assembly branches selected by solution 1/2. Workspace mode inverts this per chain: given the coupler point, each crank angle is found by intersecting a circle around the ground pivot with one around the target.

Slider-crank

Crank angle θ, crank r, rod l, rail offset e: the slider position is

x = r·cos θ + sqrt(l² − (r·sin θ − e)²)

The ± of the square root is the crank solution flag. Real assembly requires l ≥ |r·sin θ − e| over the working range.

Delta manipulator

The Delta manipulator uses the standard three-arm Clavel geometry. For each arm, inverse kinematics rotates the target into that arm's radial plane and solves the upper-arm angle analytically from the upper/lower-link triangle. Forward kinematics computes the three elbows, then intersects the three lower-arm spheres to obtain the TCP.

The fixed base lies in local XY and reachable TCP positions normally have negative local Z. A pose is valid only when every arm triangle has a real solution and the three lower-arm spheres share a real intersection.

Trapezoid position profile

Position actions move with a trapezoidal velocity profile: accelerate at a to v_max, cruise, decelerate at d to stop exactly at the target (triangular profile when the distance is too short to reach v_max). With modulo enabled, the move wraps on the modulo range and direction picks positive/negative/shortest path. Done is reported when the value settles on the target.

Cam segment polynomials

Segment coefficients are fitted to the boundary conditions you enter (positions, velocities, accelerations at both ends). A Poly5 segment fits the unique 5th-order polynomial through six conditions, the reason it can join dwell-to-dwell with zero velocity and acceleration at both ends. See the segment reference.

On this page